10.什么是混合检索,讲讲流程和原理
文章目录
问题: 什么是混合检索,讲讲流程和原理
👇 点击展开/折叠 面试背诵模板(建议先背这个)
一、为什么需要混合检索
在RAG系统中,单一的检索方式存在明显局限:
| 检索方式 | 优势 | 劣势 |
|---|---|---|
| 向量检索(语义) | 理解同义词、上下文语义,处理自然语言表达 | 对专有名词、产品ID、缩写等精确匹配效果差 |
| 关键词检索(全文) | 精确匹配术语、数字、代码、特定短语 | 无法理解同义词(如“手机”vs“移动电话”),语义泛化能力弱 |
混合检索将两者结合,取长补短:用向量检索召回语义相关的文档,用关键词检索保证精确术语不丢失,再通过融合算法综合排序。
二、混合检索的完整流程
阶段一:双路并行检索
① 向量检索路径:将用户查询通过Embedding模型转为向量,在向量数据库中执行ANN(近似最近邻)搜索,返回Top-K个语义最相似的文本块及其相似度分数。
② 全文检索路径:对用户查询进行分词处理,在倒排索引(Inverted Index)中匹配包含查询关键词的文档,返回匹配的文本块及其相关性分数(如BM25得分)。
阶段二:结果融合与重排
③ 分数归一化:将向量检索的相似度分数和全文检索的相关性分数映射到同一量纲(如0~1区间),消除不同检索方式分数分布差异的影响。
④ 融合排序:采用RRF(Reciprocal Rank Fusion)或加权求和等算法综合计算最终得分。RRF算法公式为:score = Σ 1/(k + rank_i),其中rank_i是文档在第i种检索方式中的排名,k为常数(通常取60)。
⑤ 输出最终结果:根据融合后的综合得分重新排序,输出Top-N个最相关的文本块作为检索结果,供LLM生成答案。
三、核心融合算法:RRF(Reciprocal Rank Fusion)
RRF是混合检索中最常用的融合算法,不依赖分数绝对值,仅基于排名计算,对分数分布差异鲁棒。
计算方式:对每个文档,在所有检索方式中的排名取倒数,累加求和。例如,某文档在向量检索中排名第2,在全文检索中排名第5,其RRF分数为 1/(60+2) + 1/(60+5) ≈ 0.0161 + 0.0154 = 0.0315。所有文档按此得分降序排列。
优点:不要求不同检索方式的分数具有可比性,只需排名可靠,实现简单且效果稳定。
四、Dify中的混合检索配置
在Dify知识库的“高质量”索引模式下,混合检索是默认或推荐的检索策略,具体设置方式因版本不同有所差异:
- 检索策略选择:在知识库的“检索设置”中,可选择“混合检索”选项(部分版本中默认开启,无需额外配置)。
- 权重调整:部分版本支持调整向量检索和全文检索的权重配比(如语义权重0.7,关键词权重0.3)。
- Rerank整合:在“高质量”模式下,可进一步启用Rerank模型,在混合检索初步排序后进行二次精排,提升顶部结果的精确度。
五、混合检索的适用场景
- 企业知识库问答:用户问题可能包含产品型号、订单号等精确术语,也可能包含自然语言描述(如“最近有啥优惠”)
- 技术文档检索:代码示例中的API名称需精确匹配,但功能描述需语义理解
- 医疗/法律领域:专业术语需精确匹配,但症状描述、案情叙述需语义理解
六、总结要点
混合检索的本质是“语义理解 + 精确匹配”的双引擎模式,通过将两种检索方式的优势结合,在召回率和准确率之间取得最优平衡。它已成为现代RAG系统的标配检索策略,显著优于单一检索方式。