RRF倒数排名融合

编辑
2026-05-08·3 分钟阅读·RAG
未分类

RRF(Reciprocal Rank Fusion,倒数排名融合) 是一种将多个不同搜索系统返回的结果列表合并成一个统一、高质量排名列表的算法。

它的核心思想非常巧妙:不看每个搜索系统给出的具体“分数”,只看每个文档在各自结果列表中的“排名”。一个文档在越多列表中排名靠前,其最终的融合排名就越高。

为什么要用RRF?

在复杂的搜索场景中,我们常常会结合多种搜索方式,比如:

  • 全文检索(BM25):擅长关键词匹配,但分数可能很高(如100分)。
  • 向量检索(KNN):擅长语义理解,但分数可能很小(如0.9分)。

这两种方式的分数范围和含义完全不同,直接相加或加权平均会非常不合理。RRF的巧妙之处就在于抛弃了原始的、不可比的分数,转而使用统一的“排名”作为衡量标准

RRF是如何工作的?

RRF通过一个简单的公式为每个文档计算最终得分:

score(d) = Σ 1 / ( k + rank(d) )

  • d: 某个文档。
  • Σ: 对所有包含文档d的搜索结果列表进行求和。
  • rank(d): 文档d在某个列表中的排名(从1开始)。
  • k: 一个平滑常数,默认值通常为 60。它的作用是防止排名靠后的文档获得过高的权重。

简单来说,这个公式意味着:文档在某次检索中排名越靠前(rank越小),它对最终得分的贡献就越大(1/(k+rank)越大)

举个例子

假设搜索“入职流程”:

文档在“全文检索”中的排名在“向量检索”中的排名计算过程 (k=60)最终RRF得分
文档1第1名第2名1/(60+1) + 1/(60+2)0.03251
文档2第2名第1名1/(60+2) + 1/(60+1)0.03251
文档3第3名未上榜1/(60+3) + 00.01587
文档4未上榜第3名0 + 1/(60+3)0.01587

可以看到,在两个系统中都排名靠前的文档1和文档2,获得了最高的融合分数。而只在单一系统中排名第3的文档,得分明显更低。

RRF的核心优势

  • 无需归一化:直接解决了不同检索系统分数不可比的问题。
  • 简单有效:算法本身非常简洁,效果却很好,且无需复杂调参。
  • 鲁棒性强:不依赖具体的分数,因此对个别系统的分数波动不敏感。

RRF的主要应用场景

  • 混合搜索(Hybrid Search):这是RRF最经典的应用,用于融合全文检索向量检索的结果,兼顾精确匹配和语义理解。这在RAG(检索增强生成) 系统中非常重要。
  • 多路召回融合:在推荐系统或信息检索中,将来自不同索引、不同特征或不同算法的多个结果集进行融合。
  • 多模态搜索:融合来自文本、图像、音频等多种模态的搜索结果。