RRF、DBSF、加权融合与Cross-Encoder重排怎么选?RAG排序策略指南

文章摘要

企业RAG从单一向量检索升级到混合检索后,通常需要解决“多路结果如何合并”和“候选文档如何再次排序”两个问题。RRF、DBSF、加权融合和Cross-Encoder经常被放在一起比较,但它们解决的层次并不完全相同。本文从输入、计算成本、是否依赖分数标定、可解释性和适用场景出发,给出一套可执行的选型方法。

一、先区分融合与重排

典型混合检索:

用户问题
├─ BM25或稀疏检索
├─ Dense向量检索
└─ 业务规则检索
       ↓
候选集合
       ↓
融合
       ↓
重排
       ↓
Top N上下文

其中:

融合

解决:

多路检索结果如何合并

常见方法:

  • RRF;
  • DBSF;
  • WeightedRanker;
  • 归一化后加权。

重排

解决:

候选文档与当前问题到底谁更相关

常见方法:

  • Cross-Encoder;
  • ColBERT或Late Interaction;
  • 大模型评分;
  • 业务规则重排。

因此,RRF和Cross-Encoder通常不是二选一,而可以串联:

Dense+Sparse
→ RRF融合Top100
→ Cross-Encoder重排Top20
→ 最终Top5

二、RRF:最安全的默认方案

RRF全称Reciprocal Rank Fusion。

它主要使用文档在各路结果中的排名,而不是直接使用原始分数。

简化公式:

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

假设文档A:

BM25排名第1
Dense排名第4

文档B:

BM25排名第8
Dense排名第1

RRF会根据两路排名综合计算,而不要求:

BM25分数
和
余弦相似度

处于同一量纲。

优点

  • 不依赖原始分数可比;
  • 对不同检索器比较稳定;
  • 参数少;
  • 容易上线;
  • 没有评测集时也能使用;
  • 对异常高分不敏感。

缺点

  • 丢失原始分数差异;
  • 无法表达某一路检索更重要;
  • 排名变化一位与分数巨大变化可能被同等处理;
  • 业务定制能力有限。

适合

没有成熟评测集
Dense与Sparse分数量纲不同
需要快速上线混合检索
希望先获得稳定基线

三、DBSF:信任原始分数时更合适

DBSF可以理解为对每路结果的分数分布进行归一化,再合并。

它试图保留:

分数之间的相对差异

例如Dense结果:

0.91
0.90
0.89
0.50

前三条明显形成一个高相关组。

如果只看排名,0.89与0.50只是第三和第四;如果看分布,两者差距很大。

优点

  • 保留原始分数信息;
  • 当检索分数有可信统计意义时,排序更细腻;
  • 不需要手工指定每路权重;
  • 适合分数分布稳定的检索器。

缺点

  • 对分数分布漂移更敏感;
  • 不同租户或语料的分布可能不同;
  • 极端值可能影响归一化;
  • 需要持续监控检索分数。

适合

检索分数质量稳定
缺少标注集但相信原始分数
希望比RRF保留更多相关性信息

四、加权融合:有评测集时更有价值

加权融合通常表示:

final_score
= α × dense_score
+ β × sparse_score
+ γ × business_score

例如:

Dense:0.55
BM25:0.30
标题匹配:0.10
新鲜度:0.05

但原始分数必须先归一化,否则:

BM25分数可能是12.8
余弦分数是0.83

直接相加没有意义。

优点

  • 可以表达业务偏好;
  • 可以针对不同查询类型配置;
  • 有标注集时可通过搜索或训练优化权重;
  • 可叠加标题、时间、权限和质量分。

缺点

  • 权重容易靠经验拍脑袋;
  • 不同语料和查询类型需要不同权重;
  • 分数归一化复杂;
  • 模型或索引变化后需要重新调参;
  • 容易过拟合小规模测试集。

适合

已经有黄金测试集
能够离线调参
业务规则明确
需要针对查询类型动态路由

五、WeightedRanker与普通加权有什么区别

Milvus等向量数据库提供WeightedRanker,用于合并多个向量字段或多路ANN结果。

例如:

标题向量权重0.7
正文向量权重0.3

适合:

  • 多向量字段;
  • 图文检索;
  • 标题和正文重要性不同;
  • 多Embedding模型组合。

它依然属于融合,而不是深度语义重排。

六、Cross-Encoder:精度高,但成本更高

Cross-Encoder把:

问题+候选文档

一起输入模型,直接预测相关性。

与Embedding的双塔结构不同:

Embedding:问题和文档分别编码
Cross-Encoder:问题与文档联合编码

联合编码能够更细致地判断:

  • 条件是否匹配;
  • 否定词;
  • 数字;
  • 术语;
  • 上下文关系;
  • 问题是否真的能被文档回答。

优点

  • 通常比单纯向量相似度更准确;
  • 能识别细粒度语义;
  • 适合区分多个高度相似Chunk;
  • 对法律、制度、产品参数等场景有价值。

缺点

  • 每个候选都要计算;
  • 延迟高;
  • GPU或API成本;
  • 候选过多时不可接受;
  • 需要批处理和缓存。

正确使用方式

不要重排整个库。

应该:

第一阶段快速召回Top50或Top100
→ 第二阶段重排Top10或Top20
→ 取Top3到Top8给大模型

七、ColBERT与Late Interaction

ColBERT保留Token级向量,通过Late Interaction计算问题Token与文档Token之间的匹配。

它介于:

Dense双塔
和
Cross-Encoder

之间。

特点:

  • 比普通Dense表达更细;
  • 比Cross-Encoder更适合大规模检索;
  • 存储和索引成本更高;
  • 工程复杂度更大。

适合:

  • 高质量搜索;
  • 代码检索;
  • 专业文档;
  • 大规模且对精度要求高的场景。

八、LLM重排是否值得使用

可以让大模型对候选进行排序:

给定问题和10个片段
请按相关性排序

优点:

  • 可使用复杂业务标准;
  • 能输出解释;
  • 快速验证想法。

缺点:

  • 成本高;
  • 延迟高;
  • 输出不稳定;
  • 候选多时Prompt很长;
  • 可能受到片段中的提示词注入;
  • 难以保证严格排序格式。

更适合:

离线标注
高价值低频任务
生成训练数据
评测Reviewer

不建议作为所有在线查询的默认重排器。

九、业务规则应该在哪一层加入

业务规则包括:

  • 文档新鲜度;
  • 权威来源;
  • 当前版本;
  • 用户常用产品;
  • 地理距离;
  • 热度;
  • 人工精选。

可以在融合后加入:

final_score
= retrieval_score
+ freshness_boost
+ authority_boost

但权限规则不能只是加分或降分。

权限必须是硬过滤:

无权限文档
→ 直接排除

不能让高相关性覆盖访问控制。

十、如何选择

没有评测集

Dense+Sparse
→ RRF

RRF是稳妥默认值。

有稳定分数但没有评测集

Dense+Sparse
→ DBSF

有黄金测试集

归一化加权
或
Weighted RRF

通过离线指标选择参数。

高精度知识问答

混合召回
→ RRF或DBSF
→ Cross-Encoder

大规模专业检索

Dense/Sparse候选
→ ColBERT或Late Interaction

强业务排序

检索融合
→ Formula/业务规则
→ 可选Cross-Encoder

十一、候选数量怎么设置

示例:

Dense Top50
Sparse Top50
RRF融合Top30
Cross-Encoder重排Top15
最终返回Top5

候选太少:

  • 正确文档可能未进入重排;
  • 重排器无法挽救召回失败。

候选太多:

  • 重排成本高;
  • 延迟增加;
  • 噪声更多;
  • 批处理压力大。

应使用评测集调优:

候选召回率
重排后MRR
nDCG
P95延迟
单次成本

十二、不要只看最终问答准确率

检索排序应独立评估:

Recall@K
MRR
nDCG@K
Hit Rate
Answer-Bearing Recall

最终生成还应评估:

Faithfulness
Answer Correctness
Citation Accuracy

否则无法判断提升来自:

  • 召回;
  • 融合;
  • 重排;
  • 大模型。

十三、动态路由比固定策略更好

不同查询适合不同策略。

精确编号查询

“合同编号HT-2026-001”
→ Sparse或关键词优先

概念性查询

“渠道费用为什么难以核销”
→ Dense优先

多条件专业问题

混合检索+Cross-Encoder

可以先分类:

from enum import StrEnum


class QueryType(StrEnum):
    EXACT = "exact"
    SEMANTIC = "semantic"
    COMPLEX = "complex"

再选择检索链。

十四、推荐的企业默认架构

权限和版本过滤
→ Dense Top50
+ Sparse Top50
→ RRF融合Top30
→ Cross-Encoder重排Top10
→ 去重与多样性控制
→ Top5进入上下文

如果延迟敏感:

跳过Cross-Encoder
或只重排Top10

如果成本敏感:

先RRF上线
有数据后再增加重排

总结

四类方法的定位可以概括为:

RRF:无评测集时的安全默认
DBSF:相信原始分数分布
加权融合:有评测集和业务偏好
Cross-Encoder:小候选集上的高精度重排

企业RAG最常用的不是单选,而是:

混合召回
→ 稳定融合
→ 小规模精排

延伸阅读

如果你正在关注企业级 AI 应用、RAG、Agent、MCP 与大模型工程化落地,欢迎访问 智元界

https://www.zyentor.com/

智元界将持续分享可运行的技术实战、架构设计、问题排查与企业应用案例。