Docs and articles

R-57

Technology

Reciprocal Rank Fusion: The Unsung Hero of Hybrid Search

Combining vector, keyword, and graph signals into one ranked list isn't hard if you know the trick. RRF is the trick, and it's much simpler than the literature makes it look.

PAR2 Labs

August 29, 2026

2 min

Reciprocal Rank Fusion: The Unsung Hero of Hybrid Search

We asked five senior engineers to explain Reciprocal Rank Fusion last month. Three of them got it wrong. One of them was the person who'd added it to their codebase. It's been used by every serious hybrid search system for years and almost nobody understands it. Time to fix that.

01

The problem RRF solves

Two retrieval systems give you two ranked lists. Vector search says: document A is most similar, then B, then C. BM25 says: document C is most relevant, then A, then D. How do you produce one ranked list that uses both?

The naïve answers all break: average the scores (but they're on different scales), normalise then average (but normalisation is fragile), take the union and dedupe (but you lose ordering information). What you actually want is a rule that says “items both systems liked should rank above items only one liked,” without trusting either system's confidence calibration.

02

The actual formula

For each item, sum 1 / (k + rank) across the rankings it appears in, where k is a smoothing constant (Tessera defaults to 60).

rrf_score(item) = sum over rankings of  1 / (k + rank_in_that_ranking)

An item that ranks #1 in vector search and doesn't appear in BM25 gets 1/(60+1) = 0.0164. An item that ranks #5 in vector and #3 in BM25 gets 1/(60+5) + 1/(60+3) = 0.0154 + 0.0159 = 0.0313. That item ranks higher despite never being the top hit in either ranking.

It's literally a one-line formula and it beats more sophisticated approaches.

03

Why it works so well in practice

Scale-invariant — doesn't care if vector scores are in [0,1] and BM25 scores are in [0,100].

Tunable — adjust k to control how much the top-of-list dominates. Smaller k = more aggressive promotion of top hits.

Robust — one bad ranking doesn't sink an item that's strong elsewhere.

04

Tessera's twist

Tessera runs weighted RRF across three rankings — vector, BM25, and graph proximity — so a per-ranking weight tilts the fusion towards keyword-anchored retrieval for technical corpora or towards semantic similarity for conversational ones. It's the same one-line formula, extended from two lists to three, with the smoothing constant left tunable.

RRF is the kind of result you wish were called “Strong Combination Heuristic” so the field would stop being scared of it. It's literally a one-line formula and it beats more sophisticated approaches.

05

When to use something else

RRF is dominated when you have a calibrated, learned ranker — a Learning-to-Rank model trained on click data, for example. If you have that, use it. If you don't, RRF is the right default by a wide margin.

Key Takeaways

01

RRF merges ranked lists without trusting any one system's score scale or calibration.

02

Each item scores the sum of 1 / (k + rank) across the rankings it appears in; Tessera defaults k to 60.

03

An item ranked well by two systems beats one ranked first by only one.

04

Tessera runs weighted RRF across vector, BM25 and graph proximity; a calibrated learned ranker beats it if you have one.


PAR2 Labs · Technology

Talk to us

One copy of the data, five ways to read it.