什么是混合检索(Hybrid Search)?为什么要结合关键词检索(BM25)和向量检索?
混合检索(Hybrid Search) 是目前在搜索技术和 RAG(检索增强生成)应用中非常流行且有效的一种策略。
简单来说,混合检索就是同时使用“关键词检索(Keyword Search)”和“向量检索(Vector Search)”两种技术,并将它们的搜索结果进行加权融合,从而得到更精准的最终结果。
为了理解为什么要这样做,我们需要先了解这两种技术各自的优缺点,以及它们是如何互补的。
1. 两种检索方式的对比
A. 关键词检索(基于 BM25)
这是传统的搜索引擎技术(如早期的 Google 或 Lucene/Elasticsearch)。
- 原理:基于字面匹配。它计算查询词在文档中出现的频率(TF)和稀有度(IDF)。
- 优点:
- 精确匹配能力强:对于专有名词、人名、产品型号、错误代码(如 "Error 503")、缩写非常敏感。
- 无需训练:直接基于统计学,不需要复杂的模型训练。
- 缺点:
- 不懂语义:它不理解“苹果”是水果还是手机,也不理解“开心”和“高兴”是同义词。如果文档里写的是“汽车”,你搜“轿车”,可能就搜不到。
B. 向量检索(Vector Search / Dense Retrieval)
这是基于深度学习(Embedding 模型)的新一代检索技术。
- 原理:将文字转化为高维空间中的向量(一串数字)。含义相近的文本,在空间距离上更近。
- 优点:
- 理解语义:能处理同义词、近义词、甚至跨语言搜索(搜中文出英文)。
- 模糊匹配:即使用户描述得很模糊,也能找到相关概念。
- 缺点:
- 精确匹配弱:对于特定的序列号、生僻的专有名词,向量模型往往表现不佳(因为它可能没见过这个词,或者把它们归类到错误的语义空间)。
- 黑盒/幻觉:有时会检索出“看起来相关但实际上不相关”的内容。
2. 为什么要结合两者?(核心优势)
将 BM25 和向量检索结合,本质上是在做“取长补短”。
① 解决“语义”与“精确”的矛盾
- 场景:用户搜索 "iPhone 15 Pro Max 电池容量"。
- 向量检索会找到很多关于智能手机电池续航的文章,因为它理解语义。
- BM25 会确保结果中必须包含 "iPhone 15 Pro Max" 这个具体的型号,而不是 iPhone 14 或 Android 手机。
- 结合后:既保证了话题相关(电池),又保证了对象精准(特定型号)。
② 弥补“长尾词”和“专有名词”的短板
向量模型(Embedding)通常是在通用语料库上训练的。如果你在一个垂直领域(如医疗、法律、公司内部文档)使用:
- 问题:向量模型可能不认识你们公司内部的项目代号(例如 "Project X-2024")。在向量空间里,它可能被映射成未知的噪音。
- 解决:BM25 只要看到文档里有 "Project X-2024",就能立刻抓住它,不管它是否有语义含义。
③ 提高系统的鲁棒性(泛化能力)
在构建 RAG 应用时,我们无法预知用户会怎么提问。
- 如果用户问的是概念性的问题(“怎么评价...?”),向量检索得分高。
- 如果用户问的是细节性的问题(“合同编号 12345 的条款...”),BM25 得分高。
- 混合检索相当于加了一道“双重保险”,无论用户怎么问,总有一种算法能接住。
3. 混合检索是如何工作的?(融合算法)
仅仅运行两个搜索是不够的,关键在于如何将两个截然不同的结果列表合并成一个。最常用的算法是 RRF (Reciprocal Rank Fusion,倒数排名融合)。
为什么需要 RRF?
- BM25 的打分范围可能是 0 到 50(无上限)。
- 向量检索(余弦相似度)的打分范围通常是 0 到 1。
- 直接相加分数没有意义。
RRF 的逻辑:
它不看具体分数,只看排名。
- 如果文档 A 在关键词检索排第 1,在向量检索排第 10。
- 如果文档 B 在关键词检索排第 5,在向量检索排第 2。
- RRF 会通过公式计算综合排名,让那些在两个列表中排名都靠前的文档最终排在最前面。
总结
你可以把混合检索想象成在一个图书馆找书:
- 关键词检索 (BM25) 就像是查阅图书索引卡:非常精确,只要书名里有这个词就能找到,但如果你记错了书名或者用了同义词,就找不到了。
- 向量检索 就像是询问经验丰富的图书管理员:你可以描述书的内容(“一本关于魔法和学校的小说”),管理员能理解你的意思并带你找到《哈利波特》,即使你没提书名。
混合检索就是:既查索引卡,又问管理员,最后把两边的结果综合起来给用户。这是目前提升搜索质量最稳健的方法。