A hybrid retrieval pipeline runs a keyword search (BM25) and a vector similarity search against the same query in parallel, producing two separately ranked lists whose raw scores are not on comparable scales (BM25 scores are unbounded, while cosine similarity is bounded between -1 and 1). Reciprocal Rank Fusion (RRF) combines these two lists into a single final ranking without needing to normalize either list's raw scores first. How does it do this?
- For each document, it takes the position (rank) that document holds within each list it appears in, converts each rank into a score of 1/(rank + k) for a small constant k, and sums that value across every list the document appears in, so the fused ranking depends only on where each document placed in each list rather than on the raw scores those lists produced
- It discards whichever of the two lists has a lower average raw score and returns the other list unchanged, on the theory that the higher-scoring method is more trustworthy for that particular query
- It retrains a single embedding model on both the keyword-matched and vector-matched documents so that one unified raw score can be produced for every document going forward
- It re-runs a cross-encoder over every document that appears in either list, discarding both original lists' scores entirely and ranking purely by the cross-encoder's joint query-document score
Why A? And why not the others?
Correct answer: A. For each document, it takes the position (rank) that document holds within each list it appears in, converts each rank into a score of 1/(rank + k) for a small constant k, and sums that value across every list the document appears in, so the fused ranking depends only on where each document placed in each list rather than on the raw scores those lists produced
RRF sidesteps the incompatible-scales problem entirely by ignoring raw scores and working only with rank position: for each document, it computes 1/(rank + k) within each list the document appears in (with k conventionally a small constant such as 60), then sums that value across all the lists that document shows up in, and sorts documents by the resulting total. Because this depends only on where a document placed in each list, it works identically whether the underlying scores are unbounded BM25 scores or bounded cosine similarities, with no normalization step required. The option describing discarding the lower-scoring list is wrong because RRF fuses information from every list rather than picking a single winner, and 'average score' is exactly the kind of raw-score comparison RRF is designed to avoid needing. The option describing retraining a single embedding model is wrong because RRF is a fusion algorithm applied after both searches already ran, not a model-training step. The option describing re-running a cross-encoder over the union of both lists is wrong because that describes cross-encoder reranking, a separate technique with its own computational cost, not RRF's rank-based fusion.
Source: Cormack, Clarke & Buettcher, 'Reciprocal Rank Fusion outperforms Condorcet and Individual Rank Learning Methods' (SIGIR 2009); mechanics corroborated via Microsoft Learn, Azure AI Search 'Hybrid search scoring (RRF)' documentation