Engineering
How freedam is built
Deep technical write-ups from the team that builds Freedam: how retrieval, ranking and recall actually work, with the parameters, the failure modes and the measurements that settled each decision.
The search series7 partsabout 156 min in total

Part 1 · Start here
What it actually takes to build a good image search
Google Images was built because of a dress. Twenty-five years on, image search still works the same way, and most of it is quietly wrong. What it takes to build one.

Part 2
The architecture of image search
Images carry no text, so every image search runs over a text you manufactured. Inside freedam's hybrid retrieval: BM25 and pgvector fused in one Postgres query.
25 min read

Part 3
Finding the same image twice
A byte hash catches none of the ways an image gets copied. Inside freedam's near-duplicate detection: DCT hashing, multi-index lookup, and vector verification.
6 min read

Part 4
Searching a library in twenty languages
Language is not one setting in a search engine, it is six that must agree. Inside freedam's multilingual retrieval: twenty stemmers, per-language BM25 indexes.
27 min read

Part 5
Measuring a search nobody thought was broken
Everyone said search was fine. A sixty-case relevance panel found fifteen hard failures on the first run. Inside the instrument, and the diagnosis it reversed.
28 min read

Part 6
A face is not a name
Detecting a face is arithmetic. Deciding whose it is remains a human act. Inside freedam's face pipeline: ArcFace embeddings, pgvector, and one measured threshold.
18 min read

Part 7
The chat that never sees your library
A language model cannot rank 20,000 assets and should not try. Inside freedam's conversational search: the model writes a filter tree, PostgreSQL does the retrieval.
23 min read