一文读懂 RAG

625 阅读9分钟

在做智能体平台开发中,RAG 是一个必备的功能。那 RAG 是什么呢?能给 AI 带来什么新的能力?今天这篇文章,就来详细介绍下什么是 RAG。

什么是RAG?

检索增强生成(Retrieval-Augmented Generation,RAG)是一种框架,通过外部数据获取或检索机制增强大型语言模型。当你提出问题时,RAG系统首先在知识库(数据库、内部文档等)中搜索相关信息。然后,它将这些检索到的信息添加到你的原始问题中,并将二者一起输入到大型语言模型(LLM)中。这为LLM提供了上下文——即问题和支持文档——使其能够生成更准确、事实正确的答案,并与提供的信息紧密相连。

概念拆解

  • 检索(Retrieval):一种工具或系统搜索特定知识源(如你保存在Google Drive中的文件),寻找与你的查询相关的信息,然后再让LLM生成答案。
  • 增强(Augment):将检索到的信息(上下文)添加到你的原始查询中,创建一个“增强”或扩展的提示。
  • 生成(Generation):LLM使用这个增强的提示(原始查询 + 检索到的上下文)生成基于提供信息的答案,从而使回答更加准确和相关。

为什么我们需要检索增强生成?

RAG解决了单独的LLM的一些局限性。传统的LLM是在大型但静态的数据集上进行训练的,因此知识截止日期是固定的。它们也可能会“幻觉”——生成看似合理但实际上不正确或捏造的信息——尤其是在被询问其未曾训练过的细节时,如私营公司的数据或新产品的具体信息。此外,验证标准LLM给出的特定答案的原因也很复杂。RAG通过将LLM的回答基于特定的、检索到的文档,从而克服这些问题,这也可以允许信息生成的可追溯性和验证。

结合图示理解 RAG

没有RAG

假设一个LLM被安装在ACME公司内部,一名员工询问LLM:“Saturn Analytics产品的特点是什么?”该产品是新开发的,由ACME内部研发,详细信息尚未公开。LLM由于不知道该特定产品的实际信息(因为它不在其训练数据中),可能会根据其对分析产品的一般认识或甚至不相关的信息编造一些听起来合理的特点。这会导致生成的事实错误信息,这称为幻觉。

使用RAG

如果LLM具有基于用户查询检索文档的工具,AI系统可以首先从知识库中搜索相关文档。然后,它将这些检索到的信息附加到原始提示中(创建一个“增强”提示)。最后,LLM根据这些文档的上下文生成答案,从而生成事实正确的信息。

RAG的好处是什么?

我们看到标准LLM在处理特定或新信息时可能会遇到困难,有时会导致幻觉。检索增强生成(RAG)直接解决了这些问题。以下是主要优势:

  1. 获取当前和特定的信息:RAG系统在回答之前从外部源检索信息。它可以访问即时数据、私人公司文档或任何你提供的特定知识库。这克服了传统LLM的静态性质和知识截止问题。
  2. 提高准确性和减少幻觉:通过将LLM的回答基于实际检索到的文档,RAG显著减少了模型捏造信息的可能性。LLM不仅仅是在基于其广泛训练进行猜测;它是在构造基于用户问题和特定事实的答案。
  3. 可信性和可验证性:当RAG系统提供答案时,很容易看出它使用了哪些文档进行检索。这意味着你可以潜在地验证信息或理解答案的来源,从而建立对生成答案的信任。
  4. 成本效益的知识更新:与每次需要整合新信息时都要对整个LLM进行昂贵和复杂的重训练或微调相反,你可以简单地更新RAG检索的外部知识库。添加新的产品文档或更新信息表要便宜得多,也快得多。

RAG将LLM转变为可靠的工具,使其在需要特定、当前或专有信息的任务中更安全、更知识丰富且更实用。这弥合了LLM的通用能力与现实信息需求之间的差距,使你对你的AI项目更有信心。

接下来,考虑为使RAG管道正常工作和在AI生成答案前提供上下文所需的重要工具。

如何为LLM提供信息以实现RAG?

我们已经确定,为LLM提供外部信息的访问权限对于获得准确、最新的答案至关重要。但是,我们如何将LLM连接到这些知识上呢?以下是构建RAG系统的一些标准技术:

  1. 使用向量数据库进行语义搜索:在此方法中,我们将你的信息(如产品手册、公司政策和文章)进行处理,使用嵌入模型将每个文档转换为称为“向量”的数值表示。所有这些向量存储在专用的向量数据库中。当用户提出问题时,系统在向量数据库中搜索与查询的文本语义最接近(即向量最接近)的内容。这使LLM能够找到相关信息,即使用户在文档中没有使用完全相同的关键词。
  2. 使用API和外部工具(LLM代理、工具调用、MCP):LLM还可以访问“工具”,包括调用外部API。这使其能够获取实时信息(如查询当前股票价格、获取天气预报、查询特定公司微服务),而这些信息并不存储在任何静态文档集合中。这种方法通常涉及“LLM代理”的领域,LLM可以更加动态地与外部系统进行交互。你可以在这里详细了解这种方法。
  3. 查询结构化数据库(SQL):有时,关键信息并不在非结构化文档中,而是整齐地组织在结构化数据库(如SQL数据库)中。对于这些情况,你可以实现通常称为“文本到SQL”的技术。系统将用户的自然语言问题转换为正式的SQL查询,对数据库执行该查询,并检索所需的数据行。这些检索到的数据随后作为上下文提供给LLM。

构建有效的RAG系统涉及一个深思熟虑的过程,而不仅仅是将LLM插入其中。我们将很快深入具体内容,并利用强大的语义搜索与向量数据库检索相关信息。我们还将讨论像LangChain这样的框架如何大大简化这些组件的协调工作。

在第二点中提到了MCP,你可以在这里了解更多。然而,许多人混淆了MCP和RAG之间的区别,并提出诸如“由于MCP,RAG已经过时”等毫无根据的说法。在本节中,我们分享RAG的不同方法。如我们所讨论的,核心思想是向LLM提供数据,这可以通过多种方式实现。让我们探讨MCP和RAG之间的区别,以便你清楚理解它们的不同与相似之处。

RAG和MCP:RAG已经过时了吗?

许多人常误将主要概念或哲学与工具混淆。RAG成了向量数据库、LangChain、嵌入、搜索引擎、数据管道等的同义词。然而,情况并非如此。如我们所讨论,RAG是一种通过增强提示在AI生成答案之前获取数据并提供上下文的方法,使其更加准确和事实正确。

我们还应该讨论MCP(模型上下文协议),这是Anthropic为其Claude AI开发的。它是一种访问不同数据库、工具、功能等的方式,并执行如抓取网页、获取相关文档和读取数据库最新查询等操作。

这种连接性使得AI模型能够执行各种操作、执行特定功能,并从不同来源检索必要的数据。MCP(或通过此协议运行的工具/服务器)可以有效地充当RAG架构中的检索器。这种信息收集方法可能与其他标准检索工具(如简单的向量搜索)有所不同,甚至可以绕过它们。然而,重要的是要理解,即使检索是通过MCP管理的,基本过程仍构成RAG,因为外部知识是主动检索的,以增强提示,从而在AI生成最终响应之前提供上下文。

因此,MCP并不意味着RAG已经过时。这表示我们找到了一种更易于设置数据的方式,但其使用取决于个人或公司的需求。

长上下文AI模型与RAG:RAG已经过时了吗?

Meta AI发布了Llama 4系列AI模型,具有高达1000万令牌的上下文窗口。为了便于理解,它可以容纳整个《哈利·波特》系列、《魔戒》系列和《权力的游戏》系列——还有余地。这种扩展的上下文使模型能够处理和推理更大范围的文本,从而输出更深刻、更连贯的内容。

RAG(检索增强生成)的背后想法很简单:不仅仅关注LLM所知道的内容,还考虑我们如何为其提供正确的上下文。在许多现实应用中,LLM需要检索相关数据或者在短时间内提供这些数据,以生成明智、准确的响应。

结论:通过RAG为LLM提供上下文

简而言之,虽然标准的LLM令人印象深刻,但它们的固定知识和幻觉倾向限制了它们在特定或当前数据上的实际使用。检索增强生成(RAG)通过使LLM首先从你选择的源中检索相关信息,增强其提示并结合这些上下文生成基于事实的答案,提供了有效解决方案。RAG是将LLM从普通的对话者转变为具有特定、实用、现实应用的可靠知识工具的关键。

  • 知识星球:云原生AI实战营。10+ 高质量体系课( Go、云原生、AI Infra)、15+ 高质量实战项目,P8 技术专家助你提高技术天花板,冲击百万年薪!
  • 公众号:令飞编程,分享 Go、云原生、AI Infra 相关技术。回复「资料」免费下载 Go、云原生、AI 等学习资料;
  • 哔哩哔哩:令飞编程 ,分享技术、职场、面经等,并有免费直播课「云原生AI高新就业课」,大厂级项目实战到大厂面试通关;