RAG 检索增强混合检索RerankBM25速答 · 约 5 分钟更新 2026-09-16

混合检索和重排序(Rerank)是什么?为什么向量检索不够用?

一句话结论

向量检索懂语义但抓不准精确词——型号、错误码、人名容易丢;补一条 BM25 关键词链路做混合检索,再用交叉编码器把两路结果重排,召回率和排序质量都上台阶。

先这样答

先说向量检索为什么不够。Embedding 把文本压成一个语义向量,擅长「意思相近」,但对精确匹配不敏感:用户搜错误码「ERR_CONN_1002」、搜型号「A-320C」,这种查询靠语义相似度经常把正确文档排在后面,因为向量空间里这些专有词被平均掉了。

混合检索的思路是补一条关键词链路:BM25 这类经典算法对精确词非常锋利。向量一路、BM25 一路各拉一批候选,再用融合算法合并——RRF(倒数排名融合)是常用做法,按两路里的排名给分,不依赖两路分数的量纲。这样语义模糊的查询靠向量路赢,精确词查询靠关键词路赢,互相兜底。

重排解决的是另一个问题。向量检索用的是双塔结构:查询和文档各自独立编码再算相似度,快,但两段文本之间没有交互,精度有天花板。重排用交叉编码器:把查询和每个候选文档拼在一起送进模型,逐对算相关性分,精度高一截。代价是每个候选都要跑一遍模型,贵也慢,所以只能排在召回之后、只处理少量候选——先用便宜的双塔从全库拉出几十条,再用贵的交叉编码器排出前几条。

一句话总结分工:召回管「别漏」,重排管「排对」,混合检索是把「别漏」再加固一层。

面试官会怎么追问

  • RRF 的原理能展开吗? 每条候选在每一路里按排名拿到 1/(k+rank) 的分,k 通常取 60,各路求和后重新排序;好处是不用管两路分数量纲,只看排名。
  • 重排模型和 Embedding 模型什么关系? 前期通常是同系列的开源模型,交叉编码器版做重排;重排也可以直接调大模型做逐条判断,更准但更贵更慢。
  • 双路结果数量怎么定? 各拉几十到上百条进融合,融合后取前几十条进重排,重排后留三五条进提示词;每层留多少靠评测集调。

回答的坑

  • 把混合检索和重排说成一回事。一个是召回层的多路合并,一个是精排模型,层次不同。
  • 只讲概念不给场景例子。说「错误码、型号、人名靠 BM25 兜底」这种具体场景,一听就是真用过的。
—— 本题完 ——