Reciprocal rank fusion (RRF) merges ranked lists from different retrieval systems, like BM25 keyword search and vector similarity search, using only document rank positions rather than raw scores. This sidesteps the problem that BM25 and cosine similarity scores live on incompatible, drifting scales that make naive score-addition unreliable. The formula (1/(k+rank), summed across lists, with k typically 60) is unsupervised, cheap to compute, and used in hybrid search, recommendation systems, and any pipeline combining recency, popularity, or personalization signals. The piece argues retrieval speed matters far more than fusion cost, since fusion is trivial arithmetic while keyword and vector retrieval scale with corpus size and dominate latency budgets, especially for agentic workflows that retrieve repeatedly. Redis positions its Redis Search and Redis Iris products as the fast retrieval layer that runs hybrid queries with RRF in a single query.

9m read timeFrom redis.io
Post cover image
Table of contents
What is reciprocal rank fusion?Build fast, accurate AI apps that scaleWhy shouldn't you add BM25 & vector search scores?How rank-based fusion sidesteps the score-scale problemTurn search into a real-time experienceWhere is reciprocal rank fusion used?Why does retrieval speed matter more than fusion?Now see how this runs in RedisBuild fast hybrid search on Redis

Questions this post answers

Why shouldn't I just add BM25 and cosine similarity scores together for hybrid search?

BM25 scores have no fixed universal range and vary by implementation, query, and corpus, while cosine similarity is fixed between -1 and 1, so summing them lets BM25 dominate since its values are often an order of magnitude larger. Normalization helps but is fragile: outlier scores compress the rest, the ideal keyword/vector blend shifts per query, and score distributions drift over time as indexes and embedding models change. Weighing keyword versus vector scoring tradeoffs is easier with search engineering discussions curated on daily.dev.

What is the formula for reciprocal rank fusion and what does the k constant do?

Reciprocal rank fusion scores each document as the sum of 1/(k plus its rank) across every ranked list it appears in, using only rank position and ignoring raw scores entirely. The constant k is typically set to 60, a value found to work well without being especially sensitive; it softens the effect of one retriever ranking a document unusually high and prevents lower-ranked documents from being ignored entirely. Developers tuning retrieval pipelines can follow more hybrid search techniques on daily.dev.

Why does retrieval speed matter more than the fusion algorithm in a hybrid search pipeline?

Fusion arithmetic like reciprocal rank fusion is cheap addition over a few dozen or hundred already-retrieved candidates, with no model inference or index lookups involved, so it barely affects latency. The expensive part is retrieval itself: keyword search walks an inverted index and vector search walks a graph like HNSW, both growing costlier as the index grows, and agentic workflows that retrieve repeatedly multiply every millisecond of retrieval latency. Engineers optimizing RAG latency budgets can track retrieval architecture patterns on daily.dev.

118 Impressions