Skip to content
Search & Retrieval

Hybrid search with RRF: why BM25 still matters in the age of embeddings

Keyword search never went away. Fusing it with dense retrieval fixes the recall problems that embeddings alone create on niche queries, with a surprisingly small amount of code.

Tachyon Engineering·Jul 8, 2026·5 min read

When we built candidate search for a recruiting platform, pure vector search performed beautifully on broad queries like "backend engineer with cloud experience" and badly on the queries recruiters actually cared about: a specific certification, an uncommon framework, a niche domain. Embeddings smooth over exactly the specificity those queries depend on.

What BM25 gets right

BM25 rewards exact term matches and rare terms. If a recruiter searches for a specific tool name, the profiles that mention it rank first. That is precisely what dense retrieval struggles with, because the embedding of a rare token is noisy.

Reciprocal Rank Fusion

Run both retrievers, take each result's rank in each list, and score it as the sum of 1 / (k + rank), with k around 60. Documents that appear high in either list surface; documents that appear in both surface higher. No score normalisation, no tuning of weights, and it is robust across corpora.

Then rerank

Take the fused top 50 and rerank with a cross-encoder or an LLM judge for the final ordering. This is where semantic understanding earns its keep, on a candidate set that keyword search has already made complete.

Results

On the recruiting corpus, hybrid retrieval significantly improved recall on niche queries compared to either method alone, and the implementation was under a few hundred lines on top of PostgreSQL full-text search and pgvector. Before reaching for a new vector database, check whether the one you have can do both.

Let's build intelligent systems that drive growth

Tachyon is the engineering partner for teams that need AI in production, not in a deck. Start with a free 60-minute discovery call.