详细内容或原文请订阅后点击阅览
如何构建过度设计的检索系统
实际上,有些人就是这么做的。如何构建过度设计的检索系统一文首先出现在《走向数据科学》上。
来源:走向数据科学在进行人工智能工程工作时,你会偶然发现没有真正的蓝图可遵循。
是的,对于检索的最基本部分(RAG 中的“R”),您可以对文档进行分块、对查询使用语义搜索、对结果重新排名等等。这部分是众所周知的。
但是一旦你开始深入研究这个领域,你就会开始问这样的问题:如果一个系统只能读取文档中的几个块,我们如何才能称其为智能系统?那么,我们如何确保它有足够的信息来真正智能地回答呢?
如果一个系统只能读取文档中的几个块,我们怎么能称其为智能系统呢?很快,您就会发现自己陷入了困境,试图辨别其他人在自己的组织中做了什么,因为这些都没有正确记录,而且人们仍在构建自己的设置。
这将引导您实现各种优化策略:构建自定义分块器、重写用户查询、使用不同的搜索方法、使用元数据进行过滤以及扩展上下文以包含相邻的块。
因此,我现在构建了一个相当臃肿的检索系统来向您展示它是如何工作的。因此,让我们逐步了解一下,以便我们可以看到每个步骤的结果,同时也可以讨论权衡。
为了公开演示这个系统,我决定嵌入 150 篇最近提到 RAG 的 ArXiv 论文(2,250 页)。这意味着我们在这里测试的系统是为科学论文而设计的,并且所有测试查询都将与 RAG 相关。
如果您想详细了解整个过程,我已经收集了此存储库中几个查询的每个步骤的原始输出。
存储库对于技术堆栈,我使用 Qdrant 和 Redis 来存储数据,并使用 Cohere 和 OpenAI 来存储法学硕士。我不依赖任何框架来构建管道(因为这使得调试变得更加困难)。
与往常一样,我会快速回顾一下我们为初学者所做的事情,因此如果您已经熟悉 RAG,请随意跳过第一部分。
回顾检索和 RAG
RAG 检索 一代❤
