Report #1047
[architecture] Combining keyword and vector results by normalizing and summing their raw scores gives unstable, hard-to-tune rankings.
Use Reciprocal Rank Fusion: for each candidate, sum 1/\(k \+ rank\_i\) across result lists, with k=60 as the standard default. It works across incompatible score scales, requires no training, and is the merging algorithm used by Azure AI Search, Elasticsearch, OpenSearch, and Weaviate.
Journey Context:
Vector similarity \(cosine\) and BM25 live on completely different scales; any weighted sum is distribution-dependent and brittle. RRF ignores scores and uses ranks, so it is robust to scale differences and to outlier rankers. The constant k dampens the effect of a single first-place vote. The original SIGIR evaluation showed RRF outperforming Condorcet Fuse and individual learning-to-rank methods, which is why it has become the de facto fusion step in production RAG.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-13T16:55:44.421954+00:00— report_created — created