~/writing/notes/rrf-in-one-paragraph
evergreenReciprocal Rank Fusion in one paragraph
Merge ranked lists by summing 1/(k + rank). No score calibration, no training, and it beats most clever alternatives.
You have a BM25 list and a vector list, and their scores live on different scales. Don't normalise them. For every document, sum 1 / (k + rank) across the lists it appears in, with k ≈ 60, and sort by that. A document that is decent in both lists beats one that is great in one and missing from the other, which is exactly what you want for retrieval.
score(d) = Σ 1 / (60 + rank_i(d))Where it shows up: the hybrid search in Advanced RAG Architecture: Graph, Vector, Redis, and PostgreSQL and the judgment search in CaseCloud: multi-tenant legal SaaS with RAG over 80M+ judgments. Related paper: Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks.
Links from this note