53 lines
1.6 KiB
Markdown
53 lines
1.6 KiB
Markdown
---
|
||
title: "Reciprocal Rank Fusion (RRF)"
|
||
type: concept
|
||
tags: [search, ranking, fusion, algorithm]
|
||
sources: [semantic-memory-search]
|
||
last_updated: 2026-04-22
|
||
---
|
||
|
||
## Aliases
|
||
- RRF
|
||
- Reciprocal Rank Fusion
|
||
|
||
## Definition
|
||
|
||
Reciprocal Rank Fusion(倒数排名融合)是一种多检索器结果融合算法,通过对各检索器返回结果的排名取倒数并进行加权求和,生成统一的融合排名。无需训练,简单高效,是混合搜索的标准融合策略。
|
||
|
||
## Formula
|
||
|
||
```
|
||
RRF_score(d) = Σ 1 / (k + rank_i(d))
|
||
|
||
其中:
|
||
- d = 文档
|
||
- rank_i(d) = 检索器 i 对文档 d 的排名(从1开始)
|
||
- k = 平滑参数(通常 k=60,作用是减少高排名文档的压倒性优势)
|
||
```
|
||
|
||
## Why k=60?
|
||
|
||
k=60 是一个经验值,来源于 BM25 的默认参数 k1=1.2、b=0.75 的理论推导。选择 k=60 使得排名差异在高位次(rank 1 vs rank 2)时有明显影响,但在低排名(rank 50 vs rank 51)时影响减弱,兼顾早期精确和长尾包容。
|
||
|
||
## Example
|
||
|
||
假设有两个检索器对同一查询的结果:
|
||
|
||
| 文档 | 向量检索排名 | BM25 排名 |
|
||
|------|------------|----------|
|
||
| A | 1 | 3 |
|
||
| B | 2 | 1 |
|
||
| C | 3 | 2 |
|
||
|
||
k=60 时:
|
||
- RRF(A) = 1/(60+1) + 1/(60+3) = 0.01639 + 0.01587 = **0.03226**
|
||
- RRF(B) = 1/(60+2) + 1/(60+1) = 0.01613 + 0.01639 = **0.03252**
|
||
- RRF(C) = 1/(60+3) + 1/(60+2) = 0.01587 + 0.01613 = **0.03200**
|
||
|
||
最终排名:B > A > C
|
||
|
||
## Connections
|
||
- [[Hybrid Search]] — RRF 是混合搜索的标准融合算法
|
||
- [[semantic-memory-search]] — memsearch 使用 RRF 融合向量和 BM25 结果
|
||
- [[Knowledge-Base-RAG]] — RRF 用于提升知识库检索质量
|