检索增强生成(RAG)是一种通过外部知识源增强现有大型语言模型(LLM)的方法,以提供和上下文更相关的答案。在RAG中,检索组件获取额外的信息,使响应基于特定来源,然后将这些信息输入到LLM提示中,以使LLM的响应基于这些信息(增强阶段)。与其他技术(例如微调)相比,RAG更经济。它还有减少幻觉的优势,通过为LLM提供额外的上下文——使RAG成为今天LLM任务(如推荐、文本提取、情感分析等)的流行方法。
如果我们进一步分解这个想法,根据用户意图,我们通常会查询一个向量数据库。向量数据库使用连续的向量空间来捕捉两个概念之间的关系,使用基于接近度的搜索。
向量数据库概述
在向量数据库中,无论是文本、图像、音频还是任何其他类型的信息,都被转换为向量。向量是数据在高维空间的数值表示。每个维度对应数据的一个特征,每个维度中的值反映了该特征的强度或存在。
在向量数据库中进行基于接近度的搜索,涉及使用另一个向量查询这些数据库,并搜索在向量空间中“接近”它的向量。向量之间的接近度通常由距离度量来确定,例如欧几里得距离、余弦相似度或曼哈顿距离。
当您在向量数据库中执行搜索时,您提供了一个系统将其转换为向量的查询。然后数据库计算这个查询向量与数据库中已经存储的向量之间的距离或相似性。那些最接近查询向量的向量(根据所选度量)被认为是最相关的结果。
基于接近度的搜索在向量数据库中特别强大,适用于推荐系统、信息检索和异常检测等任务。
这种方法使系统能够更直观地运行,并通过理解数据中的上下文和深层含义,更有效地响应用户查询,而不是仅依赖于表面匹配。
然而,向量数据库在接近度搜索方面有一些限制,例如数据质量、处理动态知识的能力以及透明度。
RAG的限制
根据文档的大小,RAG大致分为三类:如果文档很小,可以上下文访问;如果文档很大(或有多个文档),在查询时生成较小的块,这些块被索引并用于响应查询。
尽管取得了成功,RAG也有一些缺点。
衡量RAG性能的两个主要指标是困惑度和幻觉,困惑度代表在文本生成过程中同等可能的下一个词的选择数量。即语言模型在其选择上的“困惑”程度。幻觉是AI做出的不真实或想象的陈述。
虽然RAG有助于减少幻觉,但它并没有消除它。如果您有一个小而简洁的文档,您可以减少困惑度(因为LLM的选择很少),并减少幻觉(如果您只询问文档中的内容)。当然,另一方面是,一个单一的小文档会导致一个微不足道的应用。对于更复杂的应用,您需要一种提供更多上下文的方法。
例如,考虑单词“bark”——我们至少有两个不同的上下文:
树的上下文:“橡树粗糙的树皮保护它免受寒冷。”
狗的上下文:“邻居的狗每当有人经过他们的房子时,都会大声叫。”
提供更多上下文的一种方法是将RAG与知识图谱结合(一个GRAPHRAG)。
在知识图谱中,这些单词将与它们相关的上下文和含义连接起来。例如,“bark”将与代表“树”和“狗”的节点连接。其他连接可以指示常见动作(例如,树的“保护”、狗的“制造噪音”)或属性(例如,树的“粗糙”、狗的“响亮”)。这种结构化信息允许语言模型根据句子中的其他单词或对话的总体主题选择适当的意义。
在接下来的部分中,我们将看到RAG的局限性以及GRAPHRAG如何解决这些局限性。
原文标题:Understanding GraphRAG – 1: The challenges of RAG
原文作者:ajitjaokar