reciprocal rank fusion (rrf)
**Reciprocal Rank Fusion (RRF)** is a simple but highly effective technique for combining **ranked result lists** from multiple retrieval systems into a single, unified ranking. It is widely used in **hybrid search** and **RAG** pipelines where you want to merge results from different retrieval methods (e.g., vector search + keyword search).
**The RRF Formula**
$$\text{RRF}(d) = \sum_{r \in R} \frac{1}{k + \text{rank}_r(d)}$$
Where:
- **d** is a document
- **R** is the set of rankers being fused
- **rank_r(d)** is the rank of document d in ranker r's list
- **k** is a constant (typically **60**) that prevents high-ranked items from dominating excessively
**Key Properties**
- **Score-Agnostic**: RRF only uses **rank positions**, not raw scores. This makes it robust to different score scales and distributions across retrievers.
- **No Training Required**: Unlike learned fusion methods, RRF needs no training data or parameter tuning — just set k and go.
- **Handles Missing Documents**: If a document only appears in one ranker's list, it still gets a score from that ranker and zero contribution from others.
**Why RRF Works So Well**
- **Complementary Strengths**: Vector (dense) retrieval excels at **semantic similarity** while keyword (sparse) retrieval excels at **exact term matching**. RRF captures the best of both.
- **Robustness**: By aggregating across multiple signals, RRF smooths out individual retriever failures.
- **Simplicity**: Despite its simplicity, RRF often **matches or outperforms** more complex learned fusion methods.
**Practical Usage**
RRF is the default fusion strategy in **Elasticsearch** (hybrid search), **Weaviate**, and many production RAG systems. It's a go-to technique when combining any set of ranked retrieval results.