Press "Enter" to skip to content

信息检索用于检索增强生成

三个经过战斗考验的技巧,大幅提升性能

Source and copyrights

检索增强生成(RAG)是指基于大型语言模型(LLM)的应用,其在上下文生成过程中使用信息检索(IR)组件。拥有高性能的IR组件,为LLM提供相关信息,是构建强大的RAG应用的关键。本文深入探讨了三个(和半个)简单的技巧,可以显著提高您的信息检索系统的性能。所以,不再拖延,让我们开始吧!

技巧0.5 – 评估您的IR性能

信息检索是指从大量数据中找到与检索查询相关的信息的过程。在RAG应用中,检索到的文本将附加到用户提供的问题上,以创建将发送给LLM的提示。

Retrieval Augmented Generation. Image by author. Icons from Flaticons.

在开始讨论性能改进技巧之前,我们首先需要一种可靠的方式来衡量我们的信息检索性能。

构建您的评估集

评估集应包含一组具有代表性的查询Q、一组文档D,以及一个二进制矩阵,指示哪个文档与哪个查询相关。具有代表性的查询是用户通常在系统中执行的不同类型搜索的指示性或典型查询。

提示:利用LLM来构建矩阵,通过询问它是否某个特定文档包含相关信息以回答某个特定查询。

A binary document relevance matrix. Created by author

选择合适的评估指标

我们希望检索系统返回所有相关文档(高召回率),但也只返回确实相关的文档(高精确率)。根据您的用例,其中一个指标可能比另一个更重要。

在构建IR系统时,我们还需要决定返回的文档数量K。这有点技术含量。我们希望K尽可能小,以减少噪音(和潜在成本),同时使结果包含尽可能多的相关信息。因此,测量不同K值的预期质量非常重要。

基于这两个考虑因素,我建议大多数用例使用的指标是排名为k的精确度(P@k)和召回率(R@k),它们衡量了各种可能的K值的精确度和召回率。选择适合用例的正确评估指标非常重要。有关更多详细信息,我强烈推荐阅读Pinecone的以下博文。

Know your toolbox and select the right tool for the job. Source.

现在我们有了建立基准并检查我的技巧是否有效的工具,让我们开始吧。

技巧1- 集成TF/IDF以进行相似度距离

你是告诉我相似度距离除了嵌入空间上的余弦相似度还有其他的东西吗?好吧,是的。

在所有复杂的嵌入式距离计算之前,信息检索系统基于TF/IDF,这是一种直观的方法,根据在特定文档中频繁出现但在整个文档集合中很少出现的术语来计算文档相似性。事实证明,在相似性计算中集成TF/IDF的变体(除了基于嵌入式搜索)可以显著提高性能。

这可以通过将每个文档表示为稠密嵌入向量和稀疏词袋向量的组合来实现。这种方法,也称为混合搜索或混合检索,在许多流行的向量存储提供商(如Pinecone、Weaviate等)中都有开箱即用的支持。

组合比各自的部分更强大。吉尔索尔,是奥普蒂马斯·普莱姆和威震天的组合体。

提示2 — 不要直接嵌入文本

无论我们选择哪种嵌入方法或模型,其目标都是创建一个向量表示,使得“相似”的文本被映射到“相似”的嵌入向量。

问题在于,当我们存储的信息与检索查询的格式完全不同时,就会出现问题。例如,在问答系统中,存储的信息可能是长篇信息性文档,而检索查询可能是一个简短的问题。

为了缓解这个问题,我们需要确保存储的信息和检索查询都格式化为一种常见结构,作为嵌入过程的第一步。这可以通过在存储信息、检索查询或两者中的嵌入过程中进行操作来实现。格式化操作应该是特定用例和领域的。

提示:在许多用例中,格式化操作可以由LLM执行。

示例:

  • 问答系统 — 对于每个存储的文档,询问LLM,“这个文档提供了哪个问题的答案?”使用此响应的嵌入作为文档的表示。
  • 非文本格式(如JSON)可以转换为描述其中存储信息的文本段落。

提示3 — 嵌入段落,而不是文档

专注于较小的文本对象可能会提高整体检索上下文的质量,原因如下:

  1. 更准确的嵌入:嵌入向量将更好地保留上下文,因为段落通常专注于单个主题,而文档可能涉及多个主题。
  2. 更少的噪声:返回的结果将更加聚焦,并包含较少的离题信息。
  3. 特别适用于RAG —— 能够在上下文窗口中容纳更多文档的信息。

另一方面,也有一些明显的缺点:

  1. 我们需要存储和计算距离计算的嵌入向量数量显著增加。
  2. 某些段落可能包含无法在没有文档上下文的情况下理解的信息。
盆栽树。有时较小更好。来源。

结论

检索增强生成的效率在很大程度上取决于信息检索组件的有效性。因此,准确评估信息检索组件并努力改进它非常重要。

在存储信息和执行相似性搜索的方式上进行小的修改可以显著提高信息检索的质量。本文讨论的三个提示经过实战考验,已被证明可以提高其所集成到的应用程序的性能。

期待听到集成这些提示是否实现了承诺,以及您还有哪些有效的提示。

Nadav Barak是Deepchecks的实践研究员,Deepchecks是一家为组织提供验证和监控基于机器学习的系统工具的初创公司。Nadav在数据科学领域拥有丰富的背景,并且是构建和改进生成式NLP应用程序的领域专家。

Leave a Reply

Your email address will not be published. Required fields are marked *