Key takeaways
The through-line
A vector database is an approximate search engine, and the word approximate is the entire subject. Every index is a position on the same three-way trade between recall, latency and memory — there is no configuration that wins all three.
The ideas that carry
- Exact nearest-neighbour search does not scale, and it doesn't need to. Above a few hundred thousand vectors, brute force loses to ANN indexes that give up a few percent of recall for orders of magnitude of speed.
- The distance metric must match how the embedding model was trained. Cosine on a model trained for dot product is a silent, permanent quality bug.
- HNSW is the default for a reason — excellent recall/latency, graceful degradation — and its cost is memory and slow builds.
MandefConstructionare build-time;efSearchis the runtime dial you actually tune. - IVF trades recall for memory by partitioning into clusters and probing a few;
nprobeis its recall dial. Quantization (PQ/SQ) compresses vectors themselves, and combining the two is how billion-scale search fits in RAM. - DiskANN moves the graph to SSD and changes the economics of very large corpora entirely.
- Metadata filtering is where naive implementations fall over. Pre-filter and you break the graph's connectivity; post-filter and you may return nothing. How a database handles this is the most important difference between vendors.
- The embedding model matters more than the index. A better index recovers a percent of recall; a better embedding model can change the answer.
- pgvector is the right default for most teams — one database, transactional consistency, real joins — until scale or filtering complexity genuinely forces a dedicated store.
What you can now do
Choose and tune an index against a stated recall target. Predict memory before provisioning. Evaluate an embedding model on your own corpus rather than a leaderboard. Run ingestion, re-embedding and multi-tenancy without downtime.
If one thing sticks
Recall is a number you choose and pay for. If nobody on the team can say what yours is, it is whatever the defaults happened to give you.