什么是 RAG 架构?完整定义与详细实践示例

RAG 架构是负责存储、检索外部信息并将其提供给 LLM 的一组组件;本指南详解 10 种类型,从基础 RAG、混合 RAG 到智能体式 RAG 和 GraphRAG,并附有两个分步示例。

Diagram of the types of RAG architecture branching from a central hub: basic, hybrid, adaptive, corrective (CRAG), self-RAG, multimodal, agentic, GraphRAG, HyDE, and branched.

RAG 即检索增强生成(retrieval augmented generation),是指 LLM 利用外部信息来扩展和改进其输出的过程。RAG 架构则是实现 RAG 的一整套组件及其连接方式。

RAG 分为几个不同的类别,每一类都基于其独特的架构运行。从本质上讲,RAG 系统的架构决定了信息以何种独特方式被存储、检索并提供给 LLM。

什么是 RAG 架构?

RAG 架构是驱动特定 RAG 系统的底层组件配置(及其相关功能)。所有这些架构都建立在一个基础模板之上,这个模板通常被称为“简单”RAG 或“朴素”RAG。

以下是基础 RAG 架构的概览:

  • 信息源:外部信息存储于此。它可以是搜索索引、承载海量信息的向量数据库,也可以是原始文档库。
  • 检索组件:这是查询信息源的机制。例如,RAG 系统可以使用简单的关键词搜索来查找相关文本块,也可以使用更复杂的向量查询来执行相似性搜索。
  • 编排组件:这一层是基于 LLM 的应用中负责针对用户提示词启动 RAG 管道的部分,可以与 LLM 协同工作,也可以独立运行。它还会将检索到的信息整合成扩展后的提示词。

RAG 架构的组件通常分为两条路径。摄取路径负责获取数据,并将其组织成可搜索的信息源。向量数据库是应用最广泛的形式之一,它将大量文本转换为由向量嵌入构成的可搜索存储库。

检索路径接收用户的提示词,并生成用于搜索信息源的查询。随后,编排器将检索到的信息添加到 LLM 的上下文输入中。对于智能体式 RAG 和混合 RAG 架构,可能存在多条检索路径。

RAG 架构的类型

把 RAG 看作若干截然不同的架构,是一种误解。大多数工程师会采用模块化方法,针对具体用例实现各自独立的组件。虽然可以大致划分界限,但需要注意的是,各种架构模型之间存在大量重叠。

1. 基础 RAG

基础 RAG 也称为“朴素”RAG 或“简单”RAG,是其他类型 RAG 的架构模板。

其底层流程相对简单:用户输入提示词,编排器(独立或与 LLM 协同)判断是否需要外部信息,然后据此构建并发送检索查询。

外部信息源通常是向量数据库,但也可以是 SQL 数据库、Web API、知识图谱,甚至是“原始”文档库。这些补充信息随后会被添加到 LLM 的输入上下文中。

除 SQL 查询和 API 之外,检索方法大致可分为两类:

  • 词法搜索(关键词搜索):这是一种简单的 RAG 形式,从用户查询中提取关键词,并与包含这些关键词的文本段落进行匹配。在现代管道中,编排器可能会通过所谓的稀疏向量查询来完成这一步,但这种查询无法捕捉语义。
  • 稠密向量搜索(语义搜索):稠密向量嵌入能够捕捉语义。编排器在查询稠密向量数据库时,可以同时捕捉用户提示词和源信息的含义。

记忆的使用也是 RAG 架构的重要组成部分。它指的是 LLM 如何利用先前聊天中的上下文来构建检索查询,从而将查询置于一次(或多次)讨论的更广泛语境之中。对话式 RAG 是大多数聊天机器人的标准做法,不过某些用例(例如工单回复)可能会使用单问题 RAG。

2. 混合 RAG

混合 RAG 结合了两种不同类型的检索,通常是关键词检索和语义检索。关键词搜索查找匹配的词语,基于向量的搜索则查找含义相关的段落。

此外还可能使用其他检索形式,例如知识图谱遍历或 SQL 数据库查询。这一过程通常由路由逻辑引导,路由逻辑可以是预先编写的规则,也可以是模型对问题的分类(不过也可以同时运行多条管道)。

编排器会合并结果,并可能在将其传递给 LLM 之前进行重排序。重排序是指为检索到的文本块分配相关性分数,使 LLM 优先使用最适用的信息。

3. 自适应 RAG

在自适应 RAG 中,路由组件根据用户提示词的需求选择检索策略,然后由编排器执行所选的工作流。

在最初的框架(Adaptive-RAG)中,由一个较小的模型充当分类器,在不检索、单步检索和多步检索之间做出选择。如今,一些架构改用生成式模型或基于规则的启发式方法。

这是一种广受欢迎的架构,因为它根据提示词的复杂程度和需求分配处理能力,从而为较简单的提示词减少不必要的检索步骤。它常见于需要处理多种问题类型的助手。

4. 纠正式 RAG(CRAG)

纠正式 RAG 会先评估检索到的信息,再将其添加到 LLM 的上下文输入中。检索评估器负责评估检索到的信息是否相关且有用。其独特的架构特征在于,在生成答案之前设有明确的“评估与纠正”阶段。

如果发现信息不完整或与提示词无关,就会触发额外的请求。这些请求可能采用与原始请求不同的检索方法,例如网络搜索或知识图谱遍历。

纠正式 RAG 常见于医学和法律等对准确性要求很高的领域。不过,它需要额外的信息源来补充最初检索到的段落。

5. Self-RAG

在 Self-RAG 中,模型可以在收到初始上下文输入后发起请求。系统使用反思令牌,对照检索到的证据评估生成的答案,并根据需要通过编排器发送进一步的请求。反之,LLM 也可能判定根本不需要检索。

它与纠正式 RAG 的区别在于,LLM 会评判自身的输出,判断是否需要检索以及检索到的文本是否有用,并监控自己的答案,根据需要加以修改。而纠正式 RAG 则是在生成之前评估检索信息的质量。

这种架构特别适用于复杂的深度研究类提示词。由于它将(对检索信息的)相关性评估融入答案生成过程,因此非常适合需要基于证据作答的提示词。

6. 智能体式 RAG

智能体式 RAG 是指在智能体平台环境中执行的任何形式的 RAG。模型利用其推理能力确定所需的信息类型,并从可用的检索选项中进行选择。

检索可以根据需要多次触发,对于更复杂的查询,模型还可以选择分派智能体。例如,LLM 可以请求查询数据库以确定供应商,触发文档搜索以查找相关合同,最后通过网络搜索借助公开来源核实联系方式。

智能体式 RAG 是 Perplexity、ChatGPT、Claude 等主流聊天机器人采用的主要架构实现。由于这些平台让核心模型能够访问多种工具和 RAG 管道,模型可以选择最适合某个提示词的检索形式。

7. 多模态 RAG

多模态 RAG 可跨不同类型的媒体检索上下文。它是一种重要的 RAG 形式,因为它能让 LLM 获取图表、录音等原本无法访问的信息。

其底层架构与其他任何系统相同。例如,索引管道可以将图像直接转换为嵌入,为搜索做好准备。随后,智能体式 RAG 系统可以检索这些图像以及语义相关的文本,并将其提供给视觉语言模型进行双重处理。

8. GraphRAG

GraphRAG 结合使用知识图谱与向量搜索来检索有关实体的信息。通常,编排器会通过关键词提取(有时也会通过初步的向量搜索)找到相关的起始实体,这些实体也称为节点。然后,图检索器遍历知识图谱,以构建更广泛的上下文。

例如,在收到对某个产品类别进行详细分析的请求时,LLM 可能会触发向量搜索来识别特定实体(产品)。随后,编排器会触发知识图谱搜索,查找供应商、零售网点、评论等相关实体。

9. 分支式 RAG

混合 RAG 架构能够使用不同的检索方法,而分支式 RAG 则是指同时运行多个查询(称为分支)的过程。每个分支可以查询各自的信息源,也可以使用不同的查询或筛选条件同时查询同一信息源。智能体式 RAG 架构经常使用分支式 RAG。

10. HyDE(假设性文档嵌入)

HyDE 是一种创新的 RAG 形式:LLM 先生成一份假设性文本文档,描绘最佳答案可能的样子。随后,这份“假设性文档”被用于构建查询,以实现更准确的检索。尽管 LLM 参数中并不包含相关知识,但其原理在于,与简短的问题或含糊的提示词相比,类似答案的段落可能与相关文档匹配得更好。

简单 RAG 架构示例:向量数据库

基础 RAG 是更复杂架构类型的基础。对于使用向量数据库的简单 RAG 系统,源文档会被拆分成更小的片段(文本块),并转换为稠密嵌入。当用户输入提示词时,编排器会生成查询并对其进行编码,然后查询数据库以查找相关段落。

以下是该过程的分步解析:

  1. 使用自动化摄取管道和 BERT 等嵌入模型,将大量文本转换为向量。
  2. 数据库应用对向量进行组织、索引和存储,以实现快速搜索。
  3. 用户在聊天机器人(如 Perplexity)中输入提示词。
  4. 应用编排器(使用嵌入模型)对提示词进行编码,以便从向量数据库中检索相关信息。
  5. 向量数据库返回相关文本块,编排器将其添加到输入上下文(即“大型提示词”)中,并提供给 LLM。
  6. LLM 利用这些额外的上下文,结合其内部知识(存储在参数化权重中)生成答案。

高级 RAG 架构示例:智能体式 RAG

智能体式 RAG 是指智能体平台中 RAG 系统的底层架构。智能体式 RAG 流程往往较为复杂,因为 AI 智能体可以根据提示词的性质调用不同的工具和管道,并在必要时部署多个智能体。

以下是该过程的一个实际示例:

  1. 用户输入一个需要对某个主题进行深度研究的复杂问题。在本例中,假设提示词为“结合重大地缘政治动态,预测公司未来六个月的盈利情况”。
  2. LLM 推断需要跨不同内容类型组合使用多种 RAG 查询。
  3. 部署三个不同的智能体,分别负责 (a) 向量搜索、(b) 基于网络的事实锚定,以及 (c) 图像(多模态)搜索。
  4. 这些智能体通过编排器,使用可用的检索工具搜索新闻报道、内部财务数据等相关信息。
  5. LLM 将检索结果与每个智能体的研究问题进行比对,并按相关性对其排序。
  6. LLM 评估这些信息,并在信息缺失之处通过相应的智能体触发额外搜索。
  7. 检索到足够的信息后,LLM 会根据现有财务数据(从内部文档中检索得到)生成多种情景预测,并调用计算器工具预测每种情景下的盈利。
  8. LLM 利用检索到的信息和计算结果生成最终答案,并在必要时注明来源。

RAG 的未来走向如何?

当前的创新主要集中在提升现有 RAG 架构的深度与速度、提高多媒体检索的准确性,以及构建能够处理实时信息的系统。

以下是目前正在塑造研究方向的三大趋势:

  • 跨多个来源的深度研究:这类 RAG 架构能够规划搜索、在不同来源间运行多个分支、评估检索到的证据,并自我优化生成的答案。能够执行所有这些任务的智能体式 RAG 正变得越来越快、越来越具成本效益。
  • 多模态应用:检索管道处理图像和视频的能力日益提升,越来越能够在长视频和精细图表等复杂的多模态数据中精准定位特定类型的信息。
  • 基于持续变化的信息生成答案:基于 LLM 的应用可以利用实时信息源(例如视频流和传感器)来提供输入上下文。系统还可以生成多层面的信息网络(例如借助 GraphRAG)来解读这些数据。

RAG 是基于 LLM 的应用运作的基础。它让从普通消费者到专业领域企业的各类用户,都能克服幻觉、训练数据不完整以及无法获取专业内部知识等问题。

正因如此,RAG 系统及其底层架构成为 AI 研究中发展最快、最令人振奋的领域之一。