Hybrid retrieval runs a dense search and a lexical search and has to combine two ranked lists whose scores mean completely different things: a cosine similarity of 0.83 and a BM25 score of 14.2 are not comparable, and normalising them is fragile.
Reciprocal rank fusion sidesteps the problem by throwing the scores away and using only the ranks:
RRF(d) = Σ over lists L containing d of 1 / (k + rank_L(d))
with rank starting at 1 and k = 60 by convention.
Implement reciprocal_rank_fusion(rankings, k=60) where rankings is a list of lists of document ids, each ordered best-first. Return the fused list of ids, best first. Break ties by document id ascending, so the output is deterministic.
A document appearing at rank 3 in two lists beats one at rank 1 in a single list, which is the entire point: agreement across independent retrievers is stronger evidence than confidence within one.
Build the architecture on a canvas: place the components, configure them, connect them into a data flow, and write a short reason for each one. The AI reviewer grades your design against a rubric written specifically for this problem.
Minimum 5 components · needs a wide desktop screen