什么是 倒数排名融合(Reciprocal Rank Fusion)?
倒数排名融合(Reciprocal Rank Fusion)是一种无监督排名聚合方法,根据文档在多个列表中的一基排名,对其倒数贡献求和并生成统一排序。
快速了解
| 规范文档 | 官方规范 |
|---|
工作原理
明确排名语义后再计算
除非实现另有说明,应使用从 1 开始的排名。同一文档在单个输入列表中只能贡献一次,跨索引必须使用稳定文档身份。加权 RRF 常把贡献扩展为 w_i / (k + rank_i(d)),但不同产品的权重语义可能不相同。短列表很容易产生相同融合分数,因此还需要明确、稳定的文档 ID 决胜规则。
把 k 与窗口视为模型参数
较大的 k 会压平头尾差异,较小的 k 会放大榜首影响。原始值 60 是一个实验条件,不是通用常数。Elasticsearch 分别暴露 rank_constant 与 rank_window_size;截断子列表会删除窗口外的全部潜在贡献。跨系统迁移配置时,还要核对库使用一基排名还是零基位置。
用真实替代方案评测 RRF
在相同候选窗口下,将 RRF 与每个单分支、校准或归一化分数融合以及下游重排器比较。报告候选并集 Recall@K、最终 nDCG 或 MRR、并列率、分支重合度、延迟,以及对 k、权重和窗口深度的敏感性。后续混合融合研究发现 RRF 对参数敏感,并在其测试领域中观察到凸分数组合更强,因此应把 RRF 当作透明基线,而不是自动赢家。
主要特点
- 聚合排名位置,不要求不同检索器的原始分数可直接比较
- 奖励被多个列表共同支持的候选,同时保留单列表候选
- 通过排名常数控制榜首与尾部位置的相对影响
- 只能观察每个分支配置的候选窗口以内的文档
- 丢弃分数幅度,无法表示某个分支领先差距有多大
- 输出排序信号,而不是经过校准的相关概率
常见用途
- 在混合检索管线中合并 BM25 与稠密候选列表
- 融合多个查询改写或子问题产生的检索结果
- 聚合分数语义与尺度不兼容的多个模型排名
- 在学习型融合前建立可解释的无监督基线
- 在高成本重排器之前合并独立证据来源
示例
Loading code...常见问题
为什么使用 RRF,而不是直接相加 BM25 与向量分数?
BM25 与向量分数可能具有不同范围、分布和含义,RRF 通过只使用名次避开直接比较。但这种便利不代表一定最优;经过校准的分数融合可以保留有用的分差,也应在相同标注上参与评测。
RRF 的 k 是否应该始终等于 60?
不是。原论文在预实验后固定了 60。较小值更强调头部排名,较大值会压平名次差异。应在训练标注上扫描有依据的范围,并用留出查询确认选择。
文档没有出现在某一路排名中时会怎样?
它不会从该列表获得贡献。对于被截断的输入,缺席只表示文档不在可见窗口内,并不表示其完整语料排名无穷大,也不表示该分支已经判定它不相关。
加权 RRF 能否偏向更可靠的分支?
如果具体实现支持权重,可以这样做,但权重会与排名常数和列表深度相互作用。应根据查询级标注调优,记录精确公式,不能根据原始分数大小反推权重。
RRF 可以替代重排器吗?
不能。RRF 聚合候选名次,不会联合读取查询与文档。交叉编码器等重排器仍可重新排列融合候选,但无法找回所有输入窗口都遗漏的文档。