【AI Agent从0到1】深入浅出RAG:从核心概念到完整系统工作流详解
在构建 AI Agent 的过程中,我们很快就会遇到一个大坑:大语言模型(LLM)存在“幻觉”,且它的知识停留在训练数据的截止时间。当 Agent 需要处理企业私有数据或实时信息时,单纯依赖 LLM 的内在能力往往会“胡说八道”。
这时候,RAG(Retrieval-Augmented Generation,检索增强生成) 就成了 Agent 获取外部知识、落地实际业务的最核心架构。可以这么说:没有 RAG 的 Agent,就像是没有联网的电脑;有了 RAG,Agent 才真正拥有了“开卷考试”的能力。
本文将带你彻底搞懂 RAG 的本质,并按工业级标准拆解一个完整 RAG 系统的详细工作流。
一、 什么是 RAG?
RAG,即检索增强生成,是一种将信息检索与大模型生成相结合的架构设计。
它的核心思想非常朴素:先找依据,再说话。
如果直接让 LLM 回答问题,它依靠的是脑内模糊的记忆(概率生成),这必然导致幻觉;而 RAG 则是在回答前,先去外部的知识库中检索出相关的真实文档,把这些文档作为“参考资料”喂给 LLM,让它基于参考资料来总结答案。
为什么我们需要 RAG?相比于微调的优势
很多人问:“让模型学习私有知识,为什么不用微调?” 核心原因有三:
- 知识实时性与可替换性:微调如同把知识刻进模型的脑子里,知识更新了得重新训练;RAG 如同给模型配了一个书架,书架上的书随时可换,模型总能查到最新信息。
- 防幻觉与可溯源:微调无法保证模型百分之百记住细节,依然会编造;RAG 生成的答案基于检索到的原文,不仅准确,还能给出引用来源,这在金融、医疗等严谨领域是刚需。
- 成本极低:相比于算力昂贵的微调,RAG 的构建和迭代成本几乎只在工程开发层面。
二、 完整 RAG 系统的工作流程详解
一个工业级的 RAG 系统绝不是简单的“文档入库 -> 搜索 -> 问大模型”,它包含极其严密的工程链路。为了清晰理解,我们将整个流程分为数据入库阶段(离线)和检索生成阶段(在线)。
下面是一张完整的 RAG 架构工作流全景图:
阶段一:数据入库阶段(离线处理)
这个阶段的目标是把人类阅读的非结构化文档,变成机器可以快速检索的结构化知识。“Garbage in, garbage out”,这是整个 RAG 系统的地基。
1. 文档解析与清洗
现实中的知识多以 PDF、Word、PPT 存在,尤其是 PDF,解析难度极大。
- 挑战:多栏排版乱码、表格跨页断裂、图片中的文字无法提取、页眉页脚干扰。
- 工程实践:简单的 TXT 可以直接读取;复杂的 PDF 需要借助 OCR 工具(如 PaddleOCR)或专用解析库。对于表格,通常需要提取为 Markdown 或 HTML 格式保留结构;对于含图文档,甚至需要引入多模态大模型(如 GPT-4V)直接理解图表语义并转为文字描述。
2. 文本切分
LLM 的上下文窗口有限,且塞入无关信息会严重干扰注意力,因此必须将长文档切分成语义块。
- 常见策略:
- 固定长度切分:按字符数切分,带一定重叠。简单粗暴,但极易切断完整的语义。
- 基于规则切分:按段落、章节、标点切分,保留语义完整性。
- 结构化切分:针对 Markdown/代码,按标题树(H1/H2)或函数块切分。
- 💡 前沿趋势:语义切分。利用 Embedding 模型计算相邻句子的相似度,当相似度骤降时(说明话题发生了转折)进行切分,这是目前效果最好的方式。
3. 向量化
文本无法直接计算相似度,需要通过 Embedding 模型将其映射为高维向量。
- 原理:把文本映射到多维空间,语义相近的文本在空间中的距离越近。
- 选型考量:需关注词向量的维度(维度越高表达越细但计算越慢)、对中英文的支持程度。开源推荐 BGE、M3E,闭源可用 OpenAI text-embedding-3。
4. 存入向量数据库
将生成的向量连同原始文本(及元数据,如页码、来源文档名)一起存入专门的数据库。
- 元数据的作用:在后续检索时,可以通过元数据实现过滤。例如用户问“2023年财报”,系统可以只在元数据年份=2023的范围内进行向量检索,大幅提升精准度。
阶段二:检索生成阶段(在线处理)
当用户提问时,RAG 系统需要在毫秒级响应,完成“找资料”并“写总结”的过程。
5. 查询预处理与改写
用户的原始提问往往口语化或指代不清(比如:“上个季度的利润是多少?”),直接拿去检索效果极差。
- 常用技术:
- HyDE(假设性文档嵌入):让 LLM 先假装回答一下这个问题,拿这个“假答案”去向量库里检索。因为假答案和真实文档的语义分布更接近,往往能搜出更准的结果。
- Step-back Prompting(后退提示):将具体问题抽象为更高层面的概念问题去检索。比如把“XX公司2023年Q3利润”退后为“XX公司财务状况”,先获取宏观背景,再回答具体问题。
- 多路查询:让 LLM 生成多个不同角度的搜索词,分别检索扩大召回面。
6. 混合检索
将改写后的 Query 进行 Embedding,在向量数据库中计算相似度,召回最相关的 Chunk。
⚠️ 工程避坑:纯向量检索是不够的!
向量检索擅长语义匹配(如“公司赚钱了吗”匹配“净利润增长”),但对专有名词、编号极度迟钝(如“订单号 SN-8392”可能搜出“SN-8391”)。现代 RAG 系统必然是混合检索:
- 向量检索(Dense):负责模糊的语义理解。
- 关键词检索(Sparse / BM25):负责精准的字词匹配。
两者通过倒数排名融合(RRF)算法合并结果,各取所长。
7. 重排
混合检索拿回来的 Top-K 结果,排序未必符合逻辑。比如第 5 条可能比第 1 条对回答问题更有用。
- 为什么需要重排? 向量检索使用的是双塔模型,只看 Query 和 Chunk 的整体相似度,计算快但不够精细;而 Rerank 采用交叉编码器,让 Query 和每一个 Chunk 深度交互,精准打分。
- 常见工具:BGE-Reranker、Cohere Rerank。重排后,截取 Top-N(通常 N 在 3~5 之间)送入大模型,既保证信息量,又避免“迷失在中间”。
8. 构建 Prompt 与生成
将重排后的知识块作为上下文,和用户的 Query 一起拼接成提示词,交给 LLM 生成最终回答。
一个工业级防幻觉的 Prompt 模板示例:
你是一个严谨的企业知识库助手。请仅根据以下【参考资料】回答用户问题。
要求:
- 如果参考资料中有明确信息,请提炼后回答,并在句末标注引用来源(如[Doc1])。
- 如果参考资料中没有相关信息,坚决不能自行编造,请直接回答“根据现有知识库无法回答”。
- 不要将参考资料中的无关内容拼凑进答案。
【参考资料】:
[Doc1]: {chunk_1}
[Doc2]: {chunk_2}【用户问题】:{query}
三、 闭环:RAG 系统的评估
建完了 RAG,怎么知道效果好不好?不能只靠体感,必须建立量化评估体系。目前业界最常用的是 RAGAS(RAG Assessment) 框架,主要看三个核心指标:
- Retrieval Quality(检索质量):衡量检索模块是否找到与用户查询真正相关的上下文,是RAG效果的基础。若检索质量差,后续生成再好也属“垃圾进垃圾出”(GIGO)。
- Fact Groundedness(事实忠实度):大模型生成的答案,是否严格基于检索出来的上下文?有没有自己乱加内容?(评估生成的幻觉率)
- Answer Relevancy(答案相关性):生成的答案是否真正切中了用户的问题?(评估最终体验)
没有评估就没有优化,这三个指标是我们后续调整切分策略、更换 Embedding 模型、优化 Rerank 的唯一标尺。
四、 总结与 Agent 的关系
回顾整个流程,一个完整的 RAG 系统涵盖了:解析 -> 切分 -> 向量化 -> 存储 -> 查询改写 -> 混合检索 -> 重排 -> 生成 这八大关键节点。其中任何一环拉胯,都会导致最终的回答出现“找不到”或“找错了”的问题。
在 AI Agent 的架构中,RAG 往往不是作为一个独立的系统存在,而是被封装成 Agent 可以调用的一个 Tool(工具/技能)。当 Agent 在规划任务时判断自己缺乏某些私有知识,它会主动发起 RAG 调用,获取外部事实依据,再辅助自己进行推理和决策。
掌握了 RAG,就等于给 Agent 装上了精准的“外挂大脑”。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)