Reciprocal rank fusion

The Citead team, updated

In short. Reciprocal rank fusion merges result lists by adding rank-based contributions for each document.

Definition: Reciprocal rank fusion (RRF) combines ranked search result lists into a single ranking. It assigns each document a contribution based on its position in each list and adds those contributions to calculate a fused score.

Key facts

  • As of October 2026, Microsoft's RRF documentation describes fusion for parallel queries and places optional semantic ranking after the merge.
  • Microsoft's hybrid search overview describes full-text search and vector search running in parallel before RRF combines their results.
  • Microsoft's hybrid query guide distinguishes the vector query's k, which controls its candidate count, from top, which controls the number of results returned.

How does the calculation work?

A rank is a document's position in an ordered result list. The original RRF paper defines a sum of reciprocal contributions, with a constant added to each rank in the denominator. Its authors use k = 60 throughout their validation.

The following notation expresses the unweighted calculation described in the paper and Microsoft's documentation:

contribution = 1 / (rank + k)
fused_score = sum of contributions across lists containing the document

A smaller rank produces a larger contribution. A document that appears in several lists accumulates contributions from those lists. The original paper explains that the calculation combines ranks independently of the arbitrary scores produced by the input ranking methods.

Why combine keyword and vector results?

Full-text search matches textual terms. Vector search compares numerical representations of content to find similar material. Microsoft's hybrid search overview gives product codes and people's names as examples where exact keyword matching is useful; vector search can find conceptually similar information without matching keywords.

RRF supplies a common ordering for the resulting lists. In Azure AI Search, a hybrid request includes search for the text query and vectorQueries for vector queries. Both run against the search index, and the response contains a unified result set. This places fusion between retrieval of candidates and any subsequent semantic ranking.

How can a search operator inspect the result?

Microsoft's RRF guide describes a debug request parameter for exposing score components. Its example includes this request fragment:

"debug": "vector"

The same guide identifies @search.score as the fused ranking score and reports the later semantic ranking score separately as @search.rerankerScore. Semantic ranking reorders retrieved results using their textual content.

Microsoft's query instructions also describe Search Explorer's JSON view for submitting hybrid requests. When reviewing a query, the vector k determines how many vector candidates reach fusion, while top determines how many merged results appear in the response.

FAQ

Does RRF need the original relevance scores?

The original paper describes fusion based on ranks independently of the input systems' score scales. Each document's position supplies its contribution to the fused score.

Does changing vector k change the RRF constant?

Microsoft's RRF documentation defines these as separate quantities. If you change vector k, you change the number of nearest-neighbor candidates supplied to fusion.

Where does semantic ranking fit?

Microsoft's RRF documentation places it after fusion. Its separate @search.rerankerScore field records that later stage's score.

Sources

  1. Microsoft, "Relevance scoring in hybrid search using Reciprocal Rank Fusion (RRF)", 8 June 2026
  2. Microsoft, "Hybrid search using vectors and full-text search in Azure AI Search", 31 August 2026
  3. Microsoft, "Create a hybrid query in Azure AI Search", 6 August 2026
  4. Cormack, Clarke and Büttcher, "Reciprocal Rank Fusion outperforms Condorcet and individual Rank Learning Methods", 2009

Check how a page reads to answer engines. Open the GEO score analyzer

Test a page and see what to fix first

The analysis usually takes less than 10 seconds and needs no account.

400,000+ pages scored in the public benchmark