浅谈 “混合检索”和“重排”
你(用户)提出查询: “帮我找关于现代人工智能之父最新观点的书。混合检索(图书管理员助理)关键词助理: 听到“人工智能”、“之父”,他跑去索引卡区(倒排索引)找含有“Alan Turing”、“John McCarthy”等关键词的书。(稀疏检索)语义助理: 理解你想要的是“AI领域开创者的近期言论”,他凭借对书籍内容的深刻理解(Embedding),找出了关于“Geoffrey Hinton”、
它们通常结合在一起使用,是现代搜索引擎、推荐系统以及大模型(尤其是用于RAG-检索增强生成场景的大模型)的关键组成部分。
我们可以用一个图书馆找书的比喻来贯穿整个讲解,这样会更清晰。
第一部分:混合检索
1. 是什么?
混合检索指的是同时使用多种不同的检索方法,并将它们的结果融合在一起,以期获得比任何单一方法都更全面、更准确的结果。
最常见的混合形式是结合:
- 稀疏向量检索: 又称关键词检索。比如传统的倒排索引、TF-IDF、BM25等。
- 稠密向量检索: 又称语义检索。使用模型(如BERT、Embedding模型)将查询和文档都转换为高维向量(一组数字),然后通过计算向量间的相似度(如余弦相似度)来查找相关内容。
2. 为什么需要它?(动机)
因为单一检索方式有各自的优缺点:
-
稀疏检索(关键词)的优缺点:
- 优点: 擅长精确匹配。对于技术术语、人名、地点等特定关键词,效果非常好,速度快,计算开销小。
- 缺点: 无法处理词汇表不匹配问题。比如查询“汽车”,文档里写的是“车辆”,基于关键词的方法就无法找到。它缺乏语义理解能力。
-
稠密检索(语义)的优缺点:
- 优点: 擅长语义匹配。它能理解查询背后的意图。比如查询“苹果公司最新手机”,它能找到关于“iPhone 15”的文档,即使文档里没有“苹果”和“公司”这些词。
- 缺点: 有时会错过重要的关键词。对于非常细粒度的、具体的关键词匹配,可能不如稀疏检索可靠。并且需要模型推理,计算开销相对较大。
混合检索的核心思想就是:取长补短,强强联合。 我用关键词保证召回结果的精确性,同时用语义检索保证召回结果的语义相关性,确保不遗漏。
3. 如何工作?(技术实现)
混合检索通常分两步:
- 并行检索: 用户的查询同时发给稀疏检索器和稠密检索器。
- 结果融合: 将两个检索器返回的结果列表合并成一个最终的列表。融合策略有很多种,常见的有:
- 加权综合评分: 给每个文档的两种得分(BM25分和语义相似度分)分配一个权重,计算加权后的综合分,然后重新排序。
最终分数 = α * BM25_score + (1 - α) * Dense_score
- RRF(倒数排序融合): 一种非常流行且有效的无需调权重的融合方法。它为每个文档在不同列表中的排名计算一个分数,然后汇总。
RRF分数 = 1 / (排名1 + k) + 1 / (排名2 + k)
(k是一个常数,用于调整排名靠后项的影响)
- 简单拼接去重: 简单地将两个列表拼接在一起,然后去掉重复的文档。
- 加权综合评分: 给每个文档的两种得分(BM25分和语义相似度分)分配一个权重,计算加权后的综合分,然后重新排序。
第二部分:重排
1. 是什么?
重排 是指在初步检索(比如上面的混合检索)返回一个候选文档列表之后,再使用一个更复杂、更精确但通常也更耗资源的模型对这个候选列表进行重新排序,以提升最顶部的结果质量。
你可以把它想象成:
- 检索阶段: 用一张大网(混合检索)从海洋(整个文档库)里捞出一网鱼(比如1000个候选文档)。这个阶段要求快和全(高召回率)。
- 重排阶段: 把网里的鱼倒出来,用一个非常精细的筛子(重排模型)一条一条地仔细筛选,把最大、最好的鱼挑出来放在最前面。这个阶段要求准和精(高精确率)。
2. 为什么需要它?(动机)
检索模型(无论是稀疏还是稠密)为了速度,通常只能进行“粗粒度”的匹配。而重排模型可以“慢工出细活”:
- 更深入的理解: 重排模型可以同时看到查询和候选文档的全文,进行更深层次的交叉语义理解和交互(例如使用Cross-Encoder),而检索阶段的稠密模型通常是双塔结构,查询和文档是单独编码的,没有交互。
- 考虑更多特征: 重排模型不仅可以考虑语义相关性,还可以考虑其他特征,如:文档的新鲜度、权威性、用户个性化偏好、点击率等。
3. 如何工作?(技术实现)
- 模型: 通常使用参数量更大、性能更强的预训练模型,如BERT等作为Cross-Encoder。它接收“查询:文档”对作为输入,直接输出一个相关度分数。
- 过程:
- 从混合检索阶段获得一个Top K(例如K=100)的候选文档列表。
- 将用户的查询分别与这100个候选文档一一配对,输入到重排模型中。
- 重排模型为每一对生成一个相关性分数。
- 根据这个新的分数,对100个文档进行降序排序,取出Top N(例如N=10)个最终结果返回给用户或大模型。
总结与比喻:图书馆找书
让我们用整个流程来比喻一下:
-
你(用户)提出查询: “帮我找关于现代人工智能之父最新观点的书。”
-
混合检索(图书管理员助理):
- 关键词助理: 听到“人工智能”、“之父”,他跑去索引卡区(倒排索引)找含有“Alan Turing”、“John McCarthy”等关键词的书。(稀疏检索)
- 语义助理: 理解你想要的是“AI领域开创者的近期言论”,他凭借对书籍内容的深刻理解(Embedding),找出了关于“Geoffrey Hinton”、“Yann LeCun”近期访谈的书籍。(稠密检索)
- 助理们合作: 他们把找到的书合并成一个初始清单(共50本),交给了首席管理员。(结果融合)
-
重排(首席管理员):
- 首席管理员拿到这个50本书的清单。他不需要再跑遍整个图书馆,只需要专注于这个清单。
- 他拿起每一本书,仔细对比你的问题和书的目录、引言片段(Cross-Encoder深度交互)。
- 他会判断哪本书最贴切、最新、最权威,然后重新整理这个清单,把最好的3本放在最上面交给你。(重排)
-
最终结果: 你拿到了最符合你需求的、质量最高的书籍。
效果与价值
- 混合检索: 保证了召回率,即把所有可能相关的文档都找了出来,防止遗漏。
- 重排: 保证了精确率,即确保最终排在前面、呈现给用户的结果是最精准、最相关的。
在大模型RAG应用中,这个“检索-重排”流程至关重要。它为大模型提供了最相关、最高质量的外部知识,从而让大模型能生成更准确、更可靠的回答,减少“幻觉”现象。
希望这个解释对你有帮助!这是构建高效RAG系统非常核心的一环。
更多推荐
所有评论(0)