小睿AI导航

ARTICLE DETAIL

RAG混合检索怎么做?BM25、向量检索与RRF融合实用指南

RAG混合检索让BM25与向量检索分别召回候选,再通过RRF等方法融合排名。本文从精确型号与自然语言描述的检索差异入手,说明分块ID对齐、重复结果处理、RRF计算以及后续重排序的最小流程,并介绍如何用

📁 大模型与开发 浏览 1 2026-10-15 作者 小睿AI
📝

文章正文

样式 7 内容详情排版

阅读提示当前文章有1309字,阅读完大概需要4分钟。

为什么在RAG中使用混合检索

需要先找到相关材料,再让模型依据材料回答。用户的问题可能包含产品型号、错误码,也可能只是描述现象。与适合处理的线索不同,就是让两路分别找候选,再合并成供后续使用的结果列表。

RAG混合检索怎么做?BM25、向量检索与RRF融合实用指南

它不是准确率提升的保证。如果分块不合理、文档缺失或检索配置不合适,两路融合仍可能返回无关内容。

RAG混合检索怎么做?BM25、向量检索与RRF融合实用指南

BM25和向量检索各自解决什么问题

BM25侧重词项匹配,结合词频、词项稀有程度和文档长度等因素评分。对产品型号、接口名称、编号等精确线索,它通常是重要的召回渠道。但分词和索引方式会影响效果,例如型号中的连字符被拆开后,可能降低区分度。

RAG混合检索怎么做?BM25、向量检索与RRF融合实用指南

向量检索侧重语义近似,把问题与文档分块转换为向量,再按相似程度检索。它有助于找到措辞不同但含义接近的内容,例如“经常断开连接”和“连接不稳定”。不过,语义接近不等于型号或数字一致,不能因此忽略精确约束。

RAG混合检索怎么做?BM25、向量检索与RRF融合实用指南

双路召回的最小流程

  1. 清洗并切分文档,为每个分块分配稳定且唯一的分块ID,保留来源文档ID、标题和正文。
  2. 用同一批分块建立关键词索引与向量索引,使两路返回的ID能够对应同一段内容。
  3. 对问题分别执行BM25检索和向量检索,各取一定数量的候选,保留排名与分块ID。
  4. 清理每一路内部的重复ID,再对两路候选进行融合。
  5. 按需要执行重排序,截取适合上下文预算的片段,交给生成模型。

更新或删除资料时,也要同步维护两种索引。否则同一个ID可能指向不同版本的正文,融合后的结果就难以追溯。

RAG混合检索怎么做?BM25、向量检索与RRF融合实用指南

RRF如何融合排名

RRF,即倒数排名融合,使用名次而非原始检索分数。常见形式是:RRF(d) = Σ 1 / (k + rank_i(d))。其中d表示候选分块,rank_i(d)表示它在第i路结果中的排名,通常从1开始;没有出现在某一路中的候选,该路不贡献分数。

RAG混合检索怎么做?BM25、向量检索与RRF融合实用指南

k是控制头部名次影响程度的平滑参数。两路BM25分数与向量相似度不需要处于同一尺度,因此无需先把它们强行归一化再相加。若使用带权重的RRF,可对各路贡献乘以权重,但参数应通过评测选择,而不是视为通用最优值。

RAG混合检索怎么做?BM25、向量检索与RRF融合实用指南

例如,同一分块在BM25中排第2、在向量检索中排第5,其融合分数为1/(k+2)+1/(k+5)。只在一路出现的分块也可以保留,但只获得该路的贡献。

RAG混合检索怎么做?BM25、向量检索与RRF融合实用指南

重复结果要分两种情况处理

同一路内重复返回一个分块时,只保留一次,避免重复计分;同一个分块同时被两路召回时,应合并为一个候选,并累计两路贡献,不要在融合前丢掉其中一路的排名。如果不同ID实际对应重复正文,可按内容指纹或来源信息进一步去重。

召回、融合和重排序不要混为一谈

  • 候选召回:决定哪些分块进入候选池。相关材料未被任何一路召回,后续融合就无法补回。
  • 排名融合:根据两路名次形成统一列表,RRF属于这一阶段。
  • 后续重排序:用重排序模型等方式重新判断问题与候选正文的相关性,调整候选顺序。

重排序是可选环节,会增加计算开销。融合后即使排序合理,也需要控制相邻分块的重复内容,避免有限上下文被同一段信息占满。

用型号加自然语言描述做对照评测

可用“AX-240待机后无法唤醒,应该检查哪些设置”这样的示例问题测试:BM25负责匹配“AX-240”,向量检索尝试找到“休眠后无法恢复”等近义表述。检查结果是否既属于目标型号,又覆盖相关故障说明,而不只是描述相似。

建立固定问题集,覆盖精确编号、语义改写、混合条件以及无答案问题,并标注应命中的材料。在同一资料版本下比较BM25单路、向量单路和混合方案,记录Recall@K、前列结果相关性、端到端延迟及嵌入与重排序成本。

候选数量、RRF参数和是否启用重排序,应分别调整并保留记录。如果混合方案只在少数问题上受益,却增加大量延迟或引入错误型号,就需要重新检查索引、过滤条件和候选预算,而不是仅凭一个成功案例上线。