Similarity Search, Hybrid Search, and Reranking
Vector search retrieves semantically similar vectors using a distance or similarity metric. Exact search can be expensive at scale, so vector databases often use approximate nearest-neighbor indexes. Hybrid search combines lexical retrieval (such as BM25/full-text search) with vector retrieval; this can help when exact names, identifiers, or rare terms matter alongside semantic meaning. Reranking uses a second model to reorder a smaller candidate set.
Similarity scores are not universally comparable across models or databases. Tune candidate count, filters, distance metric, hybrid weights, and reranking against a labeled evaluation set. Monitor recall and latency as the corpus grows.
Candidates = merge(
lexicalSearch(query, filters),
vectorSearch(embed(query), filters)
)
TopResults = rerank(query, Candidates).slice(0, 8)- Tune retrieval against real queries.
- Use hybrid search when exact terms matter.
- Reranking adds latency and should be justified by measured gains.
Why can hybrid search outperform vector-only retrieval for some queries?