RAG混合检索:BM25与向量搜索结合能提升证据检索吗?

对比BM25、向量搜索与RRF混合检索,指出混合检索未必保证答案相关性,强调需实测评估。
文章探讨了RAG系统中BM25、向量搜索及RRF混合检索的优劣。向量搜索擅长语义匹配但可能忽略精确标识符;BM25精于关键词匹配但存在词汇不匹配问题。RRF通过合并排名位置融合两者,但检索器之间的一致性并不保证片段能回答具体问题,示例显示通用建议可能被排到具体解决方案之前。作者提出一个试点方案,计划用15-20个问题比较三种策略,并采用Hit@5、MRR@5、检索延迟和失败模式等指标进行评估。核心结论是:混合搜索是否改善检索取决于具体场景,必须通过测量来验证,在责怪LLM之前应先检查检索到的证据是否支持答案。
RAG混合检索:BM25与向量搜索结合能提升证据检索吗?
你的RAG应用检索到了五个片段,看起来都相关,但没有一个真正回答了问题。LLM依然自信地给出了答案——一个建立在错误证据上的流畅回答。在调整提示词或更换模型之前,先问自己:检索器是否找到了回答问题所需的证据?
这正是本文要探讨的核心。我们将对比BM25、向量搜索以及使用倒数排名融合(RRF)的混合检索,看看它们各自的优势与局限。

向量搜索的优势与盲区
向量搜索通过嵌入向量寻找语义相似的段落,即使措辞不同也能匹配。例如,问题“如何重置密码?”和文档“通过更新凭据恢复账户访问”之间,语义相似度可以帮助建立联系。
但考虑这个查询:“如何修复错误 AUTH_403?”向量搜索可能会将通用的登录故障排除建议排在包含具体解决方案的段落之前。虽然它也能检索到精确标识符,但语义相似度并不保证最有用的证据排名第一。
向量搜索擅长处理语义匹配,但在需要精确关键词的场景下,排名可能不够理想。
嵌入向量是将文本(单词、句子或段落)映射到高维空间中的稠密向量表示,通常由预训练语言模型(如BERT、Sentence-BERT或专用嵌入模型)生成。其核心思想是:语义相近的文本在向量空间中的距离也相近,因此可以通过余弦相似度或点积来度量语义相关性。嵌入向量能够捕捉同义替换、释义和上下文信息,这使其在语义检索中表现优异。然而,嵌入模型对训练数据分布敏感,对罕见词、专有名词和精确标识符(如错误代码)的表示可能不够稳定,导致这些关键信息在相似度计算中被稀释或忽略。此外,嵌入向量的维度通常较高(数百到数千维),计算和存储成本也需纳入考量。
BM25的优势所在
BM25基于关键词匹配对文档进行排名,考虑词频、词的稀有程度和文档长度。它在以下场景中表现出色:
- 精确错误代码,如
AUTH_403 - 产品名称和技术术语
- 特定词语至关重要的查询
BM25的弱点在于词汇不匹配。当问题中的关键词与文档中的术语没有重叠时,比如“重置密码”与“凭据恢复”,它可能会错过相关段落。
| 方法 | 主要优势 |
|---|---|
| BM25 | 关键词匹配 |
| 向量搜索 | 语义相似度 |
两者的优势互补,但单独使用都无法保证找到正确的证据。
BM25(Best Matching 25)是一种基于概率信息检索框架的排序函数,其核心思想是:一个查询词对文档的相关性贡献取决于该词在文档中的出现频率(TF)、该词在整个语料库中的稀有程度(IDF)以及文档长度归一化因子。具体而言,TF分量采用饱和函数,避免词频无限增长带来的过度加权;IDF分量赋予稀有词更高权重,因为稀有词更能区分文档;文档长度归一化则防止长文档仅因包含更多词而获得不公平优势。BM25的公式中有两个可调参数k1和b,分别控制词频饱和度和长度归一化的强度,通常取k1≈1.2~2.0、b≈0.75。BM25不依赖语义理解,完全基于词项统计,因此对精确关键词匹配极为有效,但无法处理词汇不匹配(即查询词与文档词没有重叠但语义相关)的情况。
混合搜索如何利用RRF
混合搜索结合了关键词检索和向量检索。一种常见的合并结果是倒数排名融合(Reciprocal Rank Fusion, RRF):
RRF(d) = Σ 1 / (k + rankᵢ(d))
其中:
d是文档或片段。rankᵢ(d)是它在每个结果列表中的位置,从1开始。k是平滑常数,通常设为60。- 未出现在某个列表中的片段不会从该列表获得贡献。
RRF合并的是排名位置,而不是直接将BM25分数与向量相似度分数相加,因为两者的尺度不同。出现在多个列表顶部的片段会获得较高的融合分数。
但检索器之间的一致性并不能证明某个片段回答了问题。
倒数排名融合(RRF) 由Cormack等人于2009年提出,是一种无监督的排名融合方法,最初用于元搜索场景。其核心优势在于:不同检索系统产生的分数尺度各异(例如BM25分数无上界,余弦相似度在-1到1之间),直接相加或加权平均需要复杂的分数归一化且容易引入偏差;而RRF仅依赖排名位置,天然规避了分数尺度问题。公式中的平滑常数k用于控制排名靠前文档的权重衰减速度:k越大,排名差异的影响越小,融合结果越平滑;k越小,排名靠前的文档优势越明显。实践中k=60被广泛采用,但并非绝对最优,需根据具体任务调整。RRF的局限性在于它假设每个检索器的排名都是可靠的,且未考虑检索器之间的置信度差异,因此当某个检索器系统性偏差较大时,融合结果可能被拖累。
一个简单示例:RRF可能将通用建议排在第一
假设问题是:“如何修复错误 AUTH_403?”我们有三个片段:
- A: 包含具体解决方案。
- B: 包含通用登录故障排除建议。
- C: 解释密码重置。
排名如下:
| 排名 | BM25 | 向量搜索 |
|---|---|---|
| 1 | A | B |
| 2 | B | C |
| 3 | C | A |
使用等权重RRF和 k = 60,片段B排名第一,其次是A和C。B在两个列表中都接近顶部,尽管A包含答案。
这是一个说明性示例,并非实验结果。它展示了排名局限性:A仍然可检索,但失去了第一位置。
RRF合并排名,并不独立验证答案相关性。
我将测试什么
我将在同一文档集合上比较三种策略:
- 仅BM25
- 仅向量搜索
- 使用RRF的混合搜索
初始试点将包含15–20个问题,涵盖精确标识符、释义以及结合两者的查询。在比较输出之前,我会手动标注包含支持证据的片段。每种方法都将使用相同的语料库、分块、问题和标签。
每个独立检索器最多返回20个候选。混合检索将融合每个分支最多20个结果——最多40个独特片段——然后选择前五名。
我将测量什么
- Hit@5: 前五名中是否至少有一个支持性片段?
- MRR@5: 第一个支持性片段排名多高?未命中得零分。
- 检索延迟: 检索需要多长时间,包括查询嵌入时间(如适用)?
- 失败模式: 每种方法错过了哪些问题,为什么?
我会记录混合分支是否并发运行。其更大的候选池在解释质量和延迟差异时也很重要。
这是一个提议的试点,不是已完成的研究。它应能揭示有用的失败模式,但更强的结论需要更大规模的评估。
Hit@5(命中率@5)和MRR@5(平均倒数排名@5)是信息检索评估中常用的两个指标。Hit@5衡量的是:对于每个查询,前5个返回结果中是否至少包含一个相关片段;若包含则记为1,否则为0,最终对所有查询取平均。它反映的是检索器“能否找到”相关证据的能力,但对相关片段的具体排名不敏感。MRR@5则进一步衡量相关片段被排到多高的位置:对于每个查询,找到第一个相关片段在其结果列表中的排名r(若r≤5),则贡献1/r;若前5名中没有相关片段,则贡献0;最终对所有查询取平均。MRR@5对排名靠前的相关结果给予更高权重,因此更能反映“用户能否在靠前位置看到正确答案”。两者结合使用,可以同时评估检索的召回能力和排序质量。
关键要点
混合搜索结合了词汇匹配和语义相似度。它是否改善检索取决于文档、问题和设置。
测量它。检查未命中。确认检索到的片段是否支持答案。
在责怪LLM之前,检查它接收的上下文。
你的RAG系统在精确标识符还是措辞不同的问题上更挣扎?
相关推荐

零成本搭建AI超级员工系统:智能体自动工作流全解析
深度拆解B站演示的AI超级员工系统:Agent智能体编排、数字人口播、地图与企业获客、24小时智能客服及法务模块全覆盖。分析零成本开户背后的商业逻辑与合规风险,帮助创业者判断这套AI数字员工系统的真实投产比。

Chatbot与AI Agent的本质区别:从对话到执行的跨越
Chatbot和AI Agent有什么区别?本文基于Learn Tech频道的MCP系列讲解,用订机票、笔记摘要等实例说明:Chatbot只给答案,Agent通过思考-行动-观察循环真正完成任务,并拆解模型、工具、记忆、目标四大部件及MCP的桥梁作用,同时讨论Agent的适用边界与权限风险。

免费GitHub仓库:342小时AI课程,从数学到MCP服务器
一个免费GitHub仓库提供342小时AI课程,包含523节课、20个阶段,覆盖数学基础到Agent构建和MCP服务器。支持目标驱动学习,每节课产出可留存的prompt、skill或agent,已有近10万人开始学习。