简介:RAG并非单一算法,而是一套融合检索与生成的系统化架构。本文从定义、背景、核心组成、工作流程、典型场景及相关概念区别等角度,系统梳理如何透彻理解RAG,帮助开发者、技术选型人员和企业用户准确判断其适用边界,避免将RAG简单等同于“给大模型外挂知识库”。
RAG,全称为检索增强生成(Retrieval Augmented Generation),是一种将信息检索与大语言模型生成能力相结合的架构模式。它的核心思想是:在模型生成回答之前,先从外部知识源中检索与问题相关的内容,再将检索结果与原始问题一起作为上下文输入给大语言模型,由模型基于这些材料生成最终答案。
从技术视角看,RAG由两个关键阶段组成:检索阶段与生成阶段。检索阶段负责从结构化或非结构化的知识库中找出与查询最相关的内容片段;生成阶段则负责将这些内容与用户问题整合,交给大语言模型进行条件生成。
从业务视角看,RAG解决的并不是“模型不够强”的问题,而是“模型不知道当前场景的事实”这一问题。它让模型在推理时能够临时获取外部知识,而不需要重新训练模型参数。
从使用视角看,RAG可以理解为一个受控的知识注入机制:开发者预先准备好可信的领域数据,系统在每次问答时动态检索并拼接这些数据,使模型回答更贴近真实业务上下文。
因此,RAG本质上是一种推理阶段的上下文增强方法,它不改变模型本身,而是改变模型可用的信息条件。
当前通用大模型在直接用于实际业务时,通常会遇到三类明显限制。
第一,知识的时效性与覆盖范围有限。模型的知识来自训练数据,而训练数据往往存在时间截止点,且主要覆盖公开网络信息。对于企业内部最新文档、实时业务数据、专有操作手册、离线报表等内容,基础模型通常无法获取。这意味着即便模型能力很强,也可能因为缺乏关键事实而无法给出有效回答。
第二,幻觉问题难以完全消除。大模型的输出本质上是概率分布下的序列采样结果,它在面对知识盲区时,仍可能生成看似合理但实际错误的内容。这种错误在专业场景中代价很高,而且使用者往往难以直接识别。RAG通过显式提供事实材料,可以在一定程度上降低模型自由发挥的空间,使回答更可被追溯和校验。
第三,企业数据安全与合规约束。很多组织不愿意将私域数据上传到第三方平台进行训练或推理。RAG允许数据保持在企业可控制的环境中,仅在推理时按需检索,无需将敏感语料用于模型训练,也无需将完整知识库暴露给外部服务。这样可以在数据安全与模型能力之间取得平衡。
因此,RAG的出现并非偶然,它是将大模型从“通用能力展示”推向“业务场景落地”的关键工程手段之一。
一个完整的RAG系统通常包含以下核心模块。
知识库是RAG的事实来源。构建过程通常包括:将原始文档按逻辑边界切分为合适大小的文本块;对每个文本块进行清洗和结构化处理;使用嵌入模型将文本转换为向量表示;将向量与原始文本一起写入向量数据库或混合存储系统。
这一模块的目标是:让后续检索既能高效匹配语义,又能保留足够完整的上下文信息。
嵌入模型负责将文本转换为固定维度的向量。查询文本和文档文本需要经过同一个嵌入空间进行编码,才能进行相似度计算。嵌入质量直接影响检索召回率,因此选择与领域语言特征匹配的嵌入模型非常重要。
检索模块接收用户查询,将其转换为向量,并在向量索引中搜索最接近的文档块。常见策略包括基于余弦相似度、内积或其他距离度量的近邻搜索。为了提高召回质量,还可以结合关键词检索、重排序模型、混合检索等方式。
检索结果需要被组织成适合大模型阅读的格式。通常做法是将多个相关片段按照相关度或文档顺序拼接,并加入系统指令、用户问题、上下文边界标记等,形成结构化提示。提示设计的核心目标是:明确告知模型哪些内容是参考材料,哪些内容需要回答,以及回答时应遵循的约束。
大模型在接收到带有检索上下文的提示后,生成最终回答。该模块不改变模型权重,只调整输入条件。生成结果的质量取决于检索质量、上下文组织方式和模型自身能力之间的协同效果。
RAG的典型工作流程可以描述为以下步骤。
第一步,用户提交查询。例如:“当前季度华北区域的库存预警规则是什么?”
第二步,查询向量化。系统使用与知识库相同的嵌入模型将查询转换为向量。
第三步,相似度检索。在向量数据库中找到与查询语义最接近的若干文本块。可能同时返回多个候选片段。
第四步,结果筛选与排序。根据相似度阈值、文档来源权重、时间新鲜度等策略,筛选并排序候选内容。
第五步,上下文拼接。将选中的文本块与用户原问题、预设指令一起组装成完整提示。示意如下:
系统指令:你是一个企业知识问答助手。请仅根据以下参考资料回答问题。如果资料中不存在答案,请明确说明“未找到相关信息”。参考资料:[片段1] ...[片段2] ...用户问题:当前季度华北区域的库存预警规则是什么?
第六步,模型生成回答。大模型基于该提示输出结果。
第七步,结果返回与可选的引用展示。部分系统会将参考片段来源一并返回给用户,以增强结果可信度。
整个过程中,检索阶段决定了“模型能看到什么”,生成阶段决定了“模型如何表达”,两者相互依赖,缺一不可。
为了更准确理解RAG,需要将其与几个容易混淆的概念区分开。
微调是在特定数据集上继续训练模型参数,使模型学习新的知识或行为模式。RAG不改变模型参数,而是在推理时动态注入外部上下文。微调更适合改变模型风格、格式或领域行为;RAG更适合快速接入不断变化的事实性知识。两者可以组合使用,但目标不同。
一些大模型支持超长上下文窗口,理论上可以将整个文档集一次输入。但这种方式存在成本高、延迟大、无关信息干扰明显等问题。RAG通过检索筛选出与当前问题最相关的内容,可以降低输入长度并提高信息密度。长上下文适合处理少量但需要整体理解的材料,RAG适合处理大规模且持续更新的知识库。
普通搜索问答通常先搜索网页或文档,再由人工阅读并整合答案。RAG将搜索与生成自动化,由模型完成信息整合与语言组织。但RAG并非替代搜索引擎,而是面向特定知识范围的结构化问答方案。其效果受限于知识库质量与检索精度。
RAG适用于需要基于可靠事实进行生成回答的场景,尤其是知识范围可以预先界定、内容更新频繁或数据敏感度较高的业务环境。
常见场景包括:企业内部知识库问答、技术文档辅助检索、产品手册查询、客服辅助应答、合规政策查询、研发资料定位、运维手册问答、业务流程规则查询等。
在这些场景中,用户的问题往往可以映射到明确的文档片段,答案需要基于事实而非模型先验知识。RAG可以为回答提供可追溯的来源依据,也便于后续审计与优化。
虽然RAG架构清晰,但实际落地时仍有若干关键点值得关注。
文本块过大,会导致检索到的内容包含大量噪声,模型难以聚焦;文本块过小,则可能切断完整语义,使模型无法获得足够上下文。通常需要根据文档结构、平均问题长度和模型上下文窗口来调整切分大小,并考虑重叠切分以保留边界信息。
通用嵌入模型在垂直领域的语义区分能力可能不足。例如,在医疗、法律、工业控制等领域,相同词汇可能具有特殊含义。此时需要评估是否采用经过领域化处理的嵌入方案,或引入混合检索与重排序机制进行补充。
只返回一个片段可能导致信息不完整,返回过多片段又可能引入干扰。合理做法是设置候选集大小、相似度阈值和重排序策略,并结合具体业务指标进行调优。尤其要关注“检索到但不相关”与“相关但未检索到”这两类错误对最终答案的影响。
提示中应明确参考材料边界、回答格式和禁止行为。例如要求模型在资料不足时明确提示,而不是自由生成。缺少这种约束时,模型可能将自身先验知识与检索内容混淆,从而降低系统可信度。
即便知识库部署在企业内部,检索过程仍可能涉及用户权限、文档密级和操作审计等问题。需要在检索前增加权限过滤,确保用户只能检索到其有权访问的内容,并对查询与结果留存必要日志。
RAG系统需要建立多维评测指标,例如检索命中率、答案准确率、引用覆盖度、拒答准确率等。仅依靠人工观察示例容易忽略边界问题,难以指导系统迭代。
透彻理解RAG,关键在于认识到它并非简单的“搜索加生成”,而是一套围绕“如何让模型在正确的时间看到正确的信息”而设计的系统架构。它将知识获取从模型内部参数转移到外部可维护知识库,在推理阶段通过检索提供事实约束,再借助大模型完成语言组织与回答生成。
RAG的核心价值在于:在不重新训练模型的前提下,提升回答的事实性、时效性和可追溯性,同时保留对敏感数据的本地控制能力。但它的效果高度依赖知识库质量、切分策略、嵌入表示、检索精度和提示设计等工程环节。只有将这些环节作为一个整体进行设计与优化,RAG才能真正从概念走向可靠的生产实践。