RAG 系统原理详解:从知识检索到回答生成

RAG 系统通过外部知识库增强大语言模型回答。它以数据准备、检索和生成串起流程,将用户问题与相关资料合并后交给模型,帮助读者理解工作原理、价值和适用场景。

RAG 系统原理详解:从知识检索到回答生成

RAG 系统是什么,要解决什么问题

RAG 系统,即检索增强生成系统,是一种在大语言模型生成回答前,先从外部知识库检索相关信息,再把这些信息用于辅助生成的 AI 框架。它的重点不是替代大语言模型,而是让模型在回答时能够参考训练数据之外的权威知识、私有数据或专有数据。

可以把“检索增强生成”拆成两个动作理解:

  • 检索:从知识库、数据集或其他外部来源中找到与问题相关的资料。
  • 生成:把用户问题和检索到的资料组织成自然语言回答。

也就是说,RAG 把信息检索系统的查找能力,与大语言模型的语言表达能力结合起来。一个简单类比是:普通大语言模型问答更像是直接凭已有知识回答;RAG 问答更像是先查资料,再带着资料组织答案。

问答方式信息来源回答依据适用情况
只问大语言模型模型已有训练数据和当前用户输入主要依赖模型内部知识与当前上下文开放式聊天、通用表达、无需指定资料来源的问题
接入外部知识库的 RAG 问答用户输入、外部知识库、私有或专有数据源先检索相关资料,再结合资料生成回答需要参考企业文档、业务资料、权威知识库或指定数据集的问题

用智能问答场景理解 RAG 的基本过程

以企业知识库问答为例,用户提出问题后,RAG 系统通常不会立刻让大语言模型直接回答,而是先在外部知识库中查找与问题相关的内容。检索到的资料会与用户输入合并,形成更完整的模型上下文,再交给大语言模型生成回答。

步骤系统动作作用
用户提出问题接收用户输入明确用户想查询的内容
检索外部知识库从知识库或大型数据集中查找相关信息找到可供模型参考的资料
合并上下文将用户问题与检索结果一起传入模型让模型在生成前看到相关资料
生成回答大语言模型基于组合信息输出自然语言回答让回答更贴近当前知识库内容

这个过程的关键在于:RAG 并不是让模型永久记住每一份新资料,而是在每次回答前,把与问题相关的资料放入模型可参考的上下文。这样,系统可以把用户数据、外部知识和大语言模型的语言能力结合起来。

RAG 工作流程通常分为三个阶段

RAG 工作流程通常可以概括为三个主要阶段:数据准备、检索和生成。它们分别解决“资料在哪里”“怎样找到相关资料”“怎样基于资料回答”这三个问题。

阶段输入处理动作输出
数据准备外部文档、知识库、数据集、私有或专有资料将需要被引用的资料整理为系统可检索的知识来源可被检索的知识库或数据集
检索用户问题、可检索知识库根据用户问题,从大型数据集或知识库中找到相关信息与问题相关的资料片段或内容
生成用户问题、检索结果将检索结果处理进大语言模型上下文,由模型基于组合信息生成回答面向用户的自然语言回答

数据准备:让外部资料变得可用

数据准备阶段的目标,是把需要被系统引用的外部资料整理成可被检索的知识库或数据集。对于 RAG 系统来说,外部资料可以是权威知识库,也可以是私有或专有数据源。

这一阶段并不直接生成答案,而是为后续检索提供基础。如果资料没有被纳入可检索范围,模型在回答时通常也无法通过 RAG 链路引用这些资料。

检索:从知识库中找到相关信息

检索阶段会根据用户问题,在大型数据集或知识库中查找相关信息。它承担的是“先找资料”的职责,决定哪些外部内容会被带入后续生成过程。

检索质量会影响模型可参考的信息范围。本文聚焦 RAG 系统如何工作的基本逻辑,不展开文档切分、向量化、召回、重排等具体工程实现细节。

生成:基于组合信息组织回答

生成阶段会把检索结果放入大语言模型的上下文中,并结合用户原始问题生成回答。此时,模型不是只凭已有训练数据作答,而是基于用户输入和检索资料的组合来源输出结果。

外部知识如何进入大语言模型上下文

RAG 的关键机制,是在生成回答之前,把相关外部信息放入模型可参考的上下文。换句话说,它不是要求模型凭空记住所有新知识,而是在回答时临时提供与问题相关的资料。

在典型流程中,用户输入会触发检索,系统从外部知识库中找到相关信息;随后,检索结果会与用户输入合并后传入大语言模型。模型再基于这些组合信息生成回答。

要点: RAG 的核心链路可以概括为“先找资料,再带着资料回答”。外部知识进入模型的方式,是在生成前被放入上下文,而不是让模型只依赖已有训练数据。

外部知识的来源可以是权威知识库、私有数据源或专有数据源。对于需要基于指定资料回答的问题,RAG 能让生成过程更贴近这些外部知识来源。

RAG 系统有哪些价值和适用场景

RAG 系统的核心价值,是把传统信息检索系统的查找能力,与生成式大语言模型的语言表达能力结合起来。检索系统负责定位相关资料,大语言模型负责把资料和问题组织成更自然的回答。

用户需求解决方式可能带来的效果
希望问答系统参考企业内部文档在回答前从私有知识库检索相关内容回答可以围绕内部资料展开
希望回答基于指定权威资料将权威知识库作为外部知识来源生成前先引入可参考资料
希望把专有数据用于文本生成将专有数据源接入 RAG 检索链路大语言模型可基于检索结果组织回答
希望构建智能问答应用结合知识库检索和大语言模型生成同时具备查找资料和自然语言回答能力

因此,RAG 常见于知识库问答、企业内部资料问答、基于指定文档的智能问答等场景。只要答案需要参考外部知识,而不是完全依赖模型已有知识,RAG 就有应用价值。

如何判断是否需要 RAG 系统

在设计大语言模型问答或文本生成应用时,可以用以下问题判断是否需要引入 RAG 系统:

  • 回答是否必须参考模型训练数据之外的资料?
  • 答案是否需要来自权威知识库、业务文档、私有数据或专有数据源?
  • 应用是否既需要搜索知识库,又需要大语言模型组织自然语言回答?
  • 用户问题是否经常依赖特定资料背景,而不是单纯开放式聊天?
  • 是否希望在生成前把相关资料放入模型上下文,让回答围绕这些资料展开?

如果以上问题多数成立,可以考虑使用 RAG。反过来,如果应用只是简单开放式对话,且不依赖特定知识库或指定数据源,就未必需要引入完整的 RAG 工作流程。