Why raw-score blending is fragile

Dense retrieval ranks documents by vector similarity. Sparse retrieval ranks them from term-based relevance signals such as BM25. Even when both systems return a numeric score, those values do not share a guaranteed meaning, range, or distribution.

A weighted formula such as dense_score + bm25_score can therefore be unstable. A change in embedding model, query wording, corpus composition, or sparse-search configuration may change one score distribution without changing the other. The resulting blend can silently favor one retriever.

Rank-based fusion avoids treating scores as interchangeable. It asks a narrower question: which documents appear near the top of either ranked list?

  • Dense search can recover semantically related wording.
  • BM25 can strongly reward exact terms, identifiers, and rare tokens.
  • Raw score ranges are retriever-specific rather than universal.
  • Rank positions are easier to combine across retrieval methods.

Apply Reciprocal Rank Fusion to the two result lists

Run dense retrieval against the vector index and sparse retrieval against the BM25 index for the same query and the same eligibility filters. Keep a stable document identifier in both result sets so matching results can be deduplicated during fusion.

For each document, calculate an RRF score by summing 1 divided by k plus its rank in every list where it appears. In notation: RRF(d) = Σ 1 / (k + rank_i(d)). A document returned by both retrievers receives contributions from both lists.

The constant k reduces the effect of small position differences near the top of a list. A commonly used starting value is 60, but it is a tuning choice, not a universal optimum. Preserve ranks as one-based positions and define deterministic tie-breaking, such as a stable document ID.

  • Retrieve a bounded candidate list from each retriever.
  • Assign rank 1 to the first result in each list.
  • Sum reciprocal-rank contributions per document ID.
  • Sort by fused score, then apply a deterministic tie-breaker.

Operate fusion as an application-layer retrieval policy

RRF is especially useful as a baseline because it does not require collecting score-normalization statistics before it can be used. It provides a clear policy for combining Talqora's dense and sparse retrieval paths while retaining the ability to inspect each source list independently.

Evaluate the fused results on representative queries, including acronym-heavy searches, product names, error messages, and natural-language questions. These query types often reveal where sparse and dense retrieval complement each other. Review not only the first result, but also whether relevant documents consistently enter the top candidate set.

Keep the fusion implementation observable. Record which retrievers returned each selected document, its rank in each list, and its final fused score. This makes regressions easier to diagnose when document content, embeddings, or query behavior changes.

  • Use identical filters and document IDs across both retrieval paths.
  • Log per-retriever ranks alongside the final fused rank.
  • Test candidate-list depth and the RRF k value with real query sets.
  • Treat RRF as a transparent baseline before adding more complex ranking logic.