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. M and efConstruction are build-time; efSearch is the runtime dial you actually tune.
  • IVF trades recall for memory by partitioning into clusters and probing a few; nprobe is 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.