检索增强生成(Retrieval-Augmented Generation,RAG)是一种把外部信息检索与生成模型结合起来的应用架构。系统先根据用户问题查找相关资料,再把检索结果作为上下文交给模型生成答案。
RAG 的目标不是让模型永久记住新资料,而是在回答当前问题时提供可更新、可追溯的外部依据。它常用于私有知识问答、文档助手、客服、研究检索和需要引用来源的生成任务。
为什么需要 RAG
模型参数中的知识难以及时更新,也无法天然指出某条回答来自哪份业务资料。RAG 将知识保存在模型之外,使资料可以独立更新,并允许系统在回答时附带来源。
但 RAG 不能自动保证答案正确。如果没有检索到关键资料、召回了错误片段,或者模型没有忠实使用检索内容,最终答案仍然可能出错。
基本流程
一个典型 RAG 系统包含两个阶段。
资料准备
- 收集并解析文档;
- 将文档切分为可检索的片段;
- 提取关键词、向量或其他索引信息;
- 保存片段、元数据、权限和来源位置。
查询与生成
- 理解或改写用户问题;
- 从索引中召回候选资料;
- 对候选结果过滤、重排和去重;
- 组装适合当前问题的上下文;
- 让模型基于资料生成答案并给出引用;
- 检查答案是否得到来源支持。
检索方式与融合
- 稀疏检索按词项和统计权重匹配,适合型号、术语、名称和代码等需要精确命中的内容;
- 稠密检索使用 Embedding 表示语义,适合查询与资料用词不同但含义相近的情况;
- 混合检索合并两路候选,兼顾精确词项与语义相关性;
- 重排序使用额外模型或规则重新判断候选与问题的关系,将更相关的片段排到前面。
向量数据库 可以承担稠密检索的向量存储和相似度查询,但解析、关键词召回、融合、重排序、权限过滤、上下文组装和答案校验仍属于完整 RAG 系统的其他环节。
检索质量如何评估
检索与生成应分别评估。检索侧可以检查相关资料是否进入前 k 项、全部相关资料中有多少被召回,以及正确结果的排序位置。需要注意:hit rate@k 表示前 k 项中是否至少出现一条相关结果;标准 recall@k 表示前 k 项覆盖了全部相关资料的多少比例,两者在存在多条相关资料时并不相同。
生成侧还应检查回答是否忠实使用资料、关键陈述是否得到引用支持,以及端到端任务是否完成。只看回答流畅度,无法判断问题出在检索还是生成。
超越扁平分块
把长文档切成互不关联的片段,可能丢失章节层次、实体关系和指代背景。结构化索引可以使用树状摘要、实体关系图或目录层次保存知识之间的关系,让系统先找到概览,再深入原始细节。
上下文感知检索则在索引阶段为片段补充来源、章节、时间和实体等背景,再进行关键词或向量索引。它与运行时为了节省上下文窗口而压缩对话历史不同:前者为待检索片段增加必要背景,后者从当前上下文中移除无关信息。
Agentic RAG
传统 RAG 常在生成前只检索一次。Agentic RAG 将检索器作为 Agent 可以反复调用的工具:Agent 可以分解问题、改写查询、检查证据缺口、继续搜索并交叉验证,再决定是否生成答案。
多轮检索更适合复杂问题,但会增加延迟、成本和错误路径。系统应限制轮数和资源预算,保存查询与证据轨迹,并且不能让检索到的文本直接触发转账、删除或对外发送等高风险动作。
知识更新与治理
- 原始文档及其版本是事实来源,索引和摘要是可以重建的派生物;
- 增量更新应及时处理新增、修改和删除的资料,定期整理用于发现重复、过期、冲突和结构漂移;
- 片段应保留来源、版本、生效与失效时间,避免新旧政策同时进入上下文;
- 权限和租户过滤必须发生在资料进入模型上下文之前;
- 外部文档可能包含间接提示注入,应把检索内容标记为不可信数据,并独立判断工具执行权限。
RAG 不是什么
- RAG 不是一个具体的模型,也不是一种新的训练方式;
- RAG 不是知识库本身,而是使用知识库完成检索与生成的流程;
- RAG 本身不是 Agent,但 Agent 可以把检索器作为工具使用;
- 使用向量数据库并不等于完成了 RAG,系统仍需处理解析、召回、上下文和答案验证。
与 LLM Wiki 的关系
传统 RAG 主要在查询时从原始资料中检索片段,并临时合成答案。LLM Wiki 则强调在资料进入和日常维护过程中,由 LLM Agent 把知识持续编译成结构化、互相链接的 Wiki。
两者是并列而非包含关系,也可以组合:LLM Wiki 在规模增大后仍可使用关键词、向量或混合检索来查找 Wiki 页面。
与用户记忆的关系
RAG 也可以用来按需检索某个用户的历史对话和事件细节,但 用户记忆 还需要决定哪些信息值得长期保存、如何处理冲突和删除,以及如何保证用户隔离。用户记忆可以使用 RAG,二者并不是同一个概念。
主要风险
- 文档解析或切片破坏了原始语义;
- 检索遗漏关键证据或召回无关内容;
- 权限过滤不严导致信息泄露;
- 引用存在,但引用内容并不支持答案;
- 索引未及时更新,答案基于过期资料;
- 只评估文本流畅度,没有分别评估检索与生成质量。
子词条概述
- RAG 文档切分:切分边界、长度、重叠、结构与来源保留;
- RAG 索引增量更新:新增、修改、删除、版本切换与失败恢复;
- RAG 引用与依据校验:来源有效性、陈述支持关系与依据覆盖。
- RAG 评测:分层指标、评测集、Top-K 选择、拒答和线上监控。
这些子词条分别深入资料准备、索引维护、答案校验和系统化评测。主词条继续保留端到端流程和各环节之间的关系。