混合检索
混合检索是一种同时运行两种或以上不同检索方式,再将结果合并为一个排序列表的技术。通常会同时使用逐词匹配的“关键词检索”和查找含义相近文档的“语义检索”。
是什么
混合检索是针对同一个查询同时执行多种检索方法,并将各方法给出的结果合并排序的方式。最常见的组合是关键词检索(词汇检索)和语义检索(向量检索)。关键词检索擅长精确匹配词语和短语,语义检索则擅长把握问题背后的意图。将两者结合,可以兼顾准确性和检索覆盖面。也可以有其他组合,比如文本与图像、位置信息与语义检索。
工作原理
关键词检索通常使用一种名为 BM25 的评分方法。BM25 会考察查询中的词在文档中出现的频率,以及该词在整个文档集合中有多罕见,据此打分,并对文档长度进行校正。语义检索则把句子转换成由数字组成的列表,即嵌入,然后查找含义相近的文档。关键词侧的表示大部分值为 0,有时称为“稀疏向量”;语义侧的表示大部分值都有填充,有时称为“稠密向量”。两种方式的结果通过专门的“融合”方法合并成一个排序列表。
发展历程
BM25 是一种基于 1970~80 年代确立的概率检索理论的老牌关键词评分方法,长期以来一直是检索的默认选择。2020 年的论文《Dense Passage Retrieval for Open-Domain Question Answering》表明,仅用把问题和段落分别转换为嵌入的简单结构,就能比强大的 BM25 系统更好地找到相关段落,从而证明了语义检索的实用性。随后,2021 年的 BEIR 论文构建了一个用 18 个多样化数据集比较多种检索方式的基准测试,结果显示:在陌生领域中,BM25 仍是稳健的基线,而稠密和稀疏检索模型往往泛化能力不足。这类“没有哪一方总是胜出”的结果,为同时使用两种方式的混合检索提供了有力支撑。
为什么重要
混合检索能让各检索方式的弱点相互弥补。关键词检索速度快、结果易于解释,擅长处理产品编号或专业术语等罕见词,但表达方式一变就容易漏检。语义检索即使换种说法提问也能理解含义,但在精确词语匹配很重要的场景中可能较弱。尤其在 AI 智能体或 RAG 这类需要为一个问题找到高度相关资料的服务中,检索质量直接影响回答质量,因此它变得更加重要。
注意事项
两种检索方式的评分标准不同,因此需要根据数据调整结果合并方法以及各方式的权重。由于要运行两次检索,系统会更复杂,成本也可能增加。如果需要更高的准确率,有时会用重排序器对合并后的结果再排序一次;BEIR 研究也指出,这类重排序方法平均性能较好,但计算成本较高。
示例
Elasticsearch、Weaviate 等搜索引擎和向量数据库都提供混合检索功能。例如,Weaviate 说明其方式是将 BM25(或可为每个文档字段设置不同权重的 BM25F)与向量检索相结合。对于检索公司内部文档来生成回答的聊天机器人,用户询问确切的文档编号时,关键词检索发挥作用;用户像“怎么请假”这样笼统提问时,语义检索发挥作用,二者的结果最终合并为一个结果列表提供给用户。