改良RAG管道检索文档品质的五种方法

RAG可以应用外部消息优化大型言语模型的功能,其功能依赖于检索文档的品质。除了规范检索方法之外,还有4种方法可以提高所检索文档的品质。

检索增强生成(RAG)是应用外部消息定制大型言语模型的关键技术之一。然而,RAG的功能取决于检索到的文档的品质。除了在RAG管道中经常使用的规范检索方法之外,还有这4种技术有助于提高所检索文档的品质。

基于规范嵌入的检索

RAG管道中经常使用的规范检索方法是在用户查问和常识语料库的嵌入之间启动相似性搜查。在这种方法中,可以经过以下步骤预备常识库:

1.文档首先被合成成更小的块(例如500~1000个令牌)。

2.编码器模型(例如SentenceTransformers或OpenAI嵌入)计算每个块的嵌入。

3.嵌入存储在向量数据库中(例如Pinecone或Qdrant)。

图1经常使用规范检索方法检索相关文档

一旦向量数据库预备就绪,那么RAG管道就可以开局向用户查问参与场景:

1.用户向运行程序发送查问。

2.在预备阶段经常使用的编码器模型计算查问的嵌入。

3.将嵌入与向量数据库中存储的嵌入启动比拟,以检索最相似的文档。

4.检索到的文档的内容作为场景参与到用户揭示中。

5.将降级后的揭示消息发送给LLM。

图2经常使用嵌入和向量数据库检索相关文档

文档和查问域对齐

有时,蕴含有用消息的文档在语义上与用户的查问不分歧。因此,它们嵌入的相似性得分将十分低,RAG管道将不可检索到它们。

文档畛域对齐可以经过修正揭示的形式来处置,使其与相关文档愈加凑近。文档对齐的一种有效技术是假定文档嵌入(HyDE)。

给定一个查问,假定文档嵌入(HyDE)会揭示言语模型生成一个蕴含答案的假定文档。这个生成的文档或许蕴含虚伪的细节,但它将具备常识语料库中相关文档左近的相关形式。在检索阶段,不是经常使用用户查问,而是将假定文档的嵌入发送到向量数据库,以计算与索引文档的相似度得分。

图3假定文档嵌入(HyDE)框架

还有另一种方法可以改良查问和文档之间的分歧性。在“查问域对齐”中,经常使用LLM生成一组疑问,每个文档可以回答这些疑问,并将它们的嵌入存储在向量存储库中。在检索环节中,将查问的嵌入与疑问的嵌入启动比拟,并前往与最佳婚配对应的文档。将疑问与疑问启动比拟可以确保查问和向量存储之间更好地对齐。

混合搜查

传统的RAG管道十分有效,但也有其局限性。嵌入模型在捕捉语义消息方面十分有效,但在寻觅准确婚配时或许前往不准确的结果。为此,可以经常使用经典搜查算法或SQL查问来增强RAG管道。

例如,可以经常使用像BM25这样的算法,依据用户查问的关键字搜查文档。BM25的好处是它会智能降落或许出如今大型言语模型(LLM)查问中的经常出现词的权重,并专一于最关键的关键词。

或许,可以经常使用文本到SQL技术(​ ​ text-to-SQL techniques ​ ​),该技术经常使用LLM依据用户的恳求创立SQL查问。而后可以将查问发送到相关数据库以检索婚配的记载。

可以组合由不同检索方法检索的文档,删除重复的文档,并将它们作为场景参与到揭示符中。这可以确保取得不同检索方法的值。

图4基于嵌入检索和BM25的混合搜查

场景检索

在许多状况下,蕴含查问答案的文档块缺少关键的消息。假设要处置被分红多个块的大型文档,这一点尤其正确。在这种状况下,用户查问的答案或许须要来自文档多个块的消息。

例如,常识语料库或许包括X公司的季度收益,想回答这个疑问:“X公司2024年第一季度的支出增长是多少?”

季度文件的其中一个局部或许蕴含正确的答案:“公司的支出与上一季度相比增长了3%。”但这局部并没有指明是哪家公司,也没有说明是指哪个期间段。

在这些案例下,可以经过在计算嵌入和索引之前向每个块参与场景消息来增强检索。最近,Anthropic AI引入了场景检索。在上述示例中,蕴含答案的文档块前面将参与以下消息:“这个块来自X公司的季度收益。它探讨了该公司2024年第一季度的收益。”

从新排序

无论如何改良索引和检索机制,都有或许遗漏某些揭示的关键文档。一个易于实施且广受欢迎的处置方法是从新排序。

从新排序算法将文档的全文与用户查问启动比拟。只管它们在对整个语料库启动处置时效率不高,但可以十分极速地处置几十篇文档。因此,假设宿愿将n个文档作为场景参与到LLM中,则可以检索2n或3n个文档,并经过从新排序算法运转它们,以检索与查问相关的前n个文档。

​ ​ Cohere Rerank ​ ​​是一个极速且易于经常使用的基于API的从新排序工具。假构想要一个开源的从新排序模型,可以经常使用​ ​ bge-reranker ​ ​​​。

图5 驳回从新排序的RAG

留意事项

只管经常使用先进检索技术可以提高RAG管道的功能,但思考掂量起因雷同关键。参与复杂性档次或许会造成计算和存储老本回升,或许减慢检索环节。例如,文档域对齐须要在RAG流程中额内查用一次性LLM,从而减慢流程并在大规模运行时清楚参与老本。驳回经典搜查算法和从新排序为RAG参与了额外的处置步骤。场景检索须要屡次调用LLM来生成场景消息,从而参与了预备和索引步骤的老本。

理论从为义务设定预期准确率开局,而后确定额外的致力和成天性否值得报答。例如,在一个写作辅佐运行程序中,假设希冀一位对该主题有片面了解的专家来审查和纠正整个答案,那么或许不须要经过向RAG管道参与额外的处置层来取得几个百分点的准确率优化。另一方面,假设正在开发一个运行程序,其中检索文档的准确性是一个很大的差异化起因,并且用户不介意多期待几秒钟来取得更准确的答案,那么参与额外的技术是无心义的。

原文题目:​ ​ 4waystoimprovetheretrievalofyourRAGpipeline ​ ​​​​,作者:Ben Dickson

您可能还会对下面的文章感兴趣: