我如何在 16GB MacBook 上重现 BM25、密集检索和 SPLADE

三个检索基线的实际再现,包括对 RAG 系统重要的崩溃、修复和分数检查。我如何在 16GB MacBook 上再现 BM25、密集检索和 SPLADE 帖子首先出现在 Towards Data Science 上。

来源:走向数据科学

(RAG) 系统不断地说“密集检索击败 BM25”或“混合搜索效果更好”,而且大多数时候,没有人参与实际重现所比较的基线。 BM25 是一种已经使用了几十年的关键词评分方法,并且仍然作为当今发表的几乎所有检索论文的基线。密集检索现已成为生产搜索的标准。它使用经过训练的模型将文本转换为嵌入,然后根据嵌入与查询的匹配程度对文档进行排名。学习稀疏检索是一种概念上介于两者之间的新方法,正在迅速传播。许多人重复有关 BM25、密集检索和 SPLADE 的说法,但很少有人在真实的基准数据上运行这三者并检查其结果是否与发布的分数相符。

我在一台 16GB 内存的 MacBook 上使用了一组名为“检索基础入门路径”的公开练习,该练习由 Castorini 信息检索研究小组维护。该路径使用 Castorini 的两个开源工具包:Anserini(基于 Java)和 Pyserini(其 Python 版本)。它在两个真实的文档集合上对其进行测试,并为每个练习给出准确的预期分数。

每个数字都匹配。达到这一目标需要经历内存不足崩溃、本机库崩溃以及仅靠有效的应用程序编程接口 (API) 密钥无法满足的门控模型访问请求。这些都没有出现在官方文档中,因此本文将像数字本身一样仔细地介绍它。最后,您将了解如何在本地运行这三种方法,在普通硬件上可能会出现什么问题,以及如何读取分数。

BM25、密集检索和 SPLADE 实际做什么

所有三种方法都解决相同的问题:给定搜索查询和大量文档,返回最有可能回答它的文档,排名最好的第一个。它们的不同之处仅在于如何将文本转换为计算机可以比较和排名的内容。

词汇表