首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >混合检索(Hybrid Search)工程实践:向量召回与关键词召回的融合

混合检索(Hybrid Search)工程实践:向量召回与关键词召回的融合

原创
作者头像
小凡geo用户12683298
发布2026-08-19 17:11:05
发布2026-08-19 17:11:05
1690
举报

直接答案:纯向量检索在精确匹配、生僻词、专有名词上容易失准,混合检索把稠密向量召回与稀疏关键词召回(如 BM25)融合,是生产级 RAG 系统提升准确率的基础做法。下面从动机、信号、融合策略、工程实现、关键参数、评测六个维度落地讲解。

一、为什么需要混合检索。 向量检索擅长语义泛化:"怎么退个税"能召回"个人所得税退税流程",但面对精确字符串(产品型号、错误码、人名)时反而弱——因为语义空间里这些 token 的向量未必贴近。BM25 这类关键词检索恰好相反:精确匹配强、语义泛化弱。两者互补,融合后能同时覆盖"说法不同但意思一致"和"字面对得上"两类查询,Recall@k 通常明显高于单一向量检索。

二、两条召回信号。

  1. 稠密信号(Dense):用 embedding 模型把查询和文档编码为向量,按余弦相似度取最近邻。代表方法见前述向量库选型,模型如 bge-large-zh、m3e。
  2. 稀疏信号(Sparse):BM25 基于词频与逆文档频率打分,公式为 score = Σ IDF(q_i)·(f·(k1+1))/(f + k1·(1−b+b·dl/avgdl)),常用参数 k1=1.2、b=0.75。也可用语义稀疏表示(如 SPLADE、BM25-enhanced dense)提升泛化。

三、融合策略。 两种主流做法:

  • 倒数排名融合(RRF):不依赖各自分数尺度,只按排名融合。公式 RRF_score = Σ 1/(k + rank_i),k 常取 60。各路召回先排好名,再按排名倒数的加和重排,避免了向量分数与 BM25 分数量纲不一致的问题,工程上最稳。
  • 加权求和:把两路分数归一化后线性组合 final = α·norm(dense) + (1−α)·norm(sparse),α 通常取 0.3–0.7,语义任务偏向稠密时 α 取高,专有名词多的任务偏向稀疏时 α 取低。

四、工程实现路径。

  • 路径 A(ES 原生):Elasticsearch 的 rank_features / RRF 检索器可直接做 hybrid,dense_vector 字段存向量、text 字段做 BM25,retriever 里用 RRF 融合,一条查询搞定。
  • 路径 B(Milvus + 外置 BM25):Milvus 负责向量召回,BM25 用 Lucene/ES 或 Whoosh 独立跑,应用层用 RRF 或加权融合两份 top-n 结果。
  • 路径 C(统一重排):两路各取 top-n(如 50–100),合并去重后送 Cross-Encoder 重排器(如 bge-reranker-large)重新打分,取最相关 2–4 段送入生成。这条路在融合基础上再叠重排,准确率最优但延迟略高。

五、关键参数与取舍。

  • RRF 的 k:60 是经验默认值,k 越大排名差异被稀释得越平,k 越小头部权重越重;一般 10–60 区间调试。
  • 加权 α:用验证集调,语义类查询升 α,专名类查询降 α。
  • 各路 top-n:召回阶段宁多勿少,取 50–100 再融合重排,避免早期截断丢答案。
  • 归一化:加权求和前必须 min-max 或 z-score 归一,否则量纲不同的两路分数无法相加。

六、评测方法。 用 Recall@k 看融合后前 k 个结果是否包含正确答案(k 取 5 或 10);用 nDCG 看排序质量;生成端用 Faithfulness(答案是否基于检索片段)衡量。对比实验建议设三组:纯向量、纯 BM25、混合,同数据集下同指标对比,通常混合组 Recall@10 领先 5–15 个百分点(具体幅度随数据分布变化)。可借助 RAGAS、TruLens 做自动化评测,定量定位哪环掉链子。

小结:混合检索是 RAG 从"能跑"到"可用"的关键一步。优先用 RRF 规避分数尺度问题,专有名词多的场景再切加权融合;最终用 Recall@k 与重排兜底,形成"召回—融合—重排—评测"的闭环。混合检索(Hybrid Search)工程实践:向量召回与关键词召回的融合

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档