RAG 工程手册
Retrieval-Augmented Generation Handbook · 中文开源工程指南

从静态检索到
智能体与图谱

检索增强生成 (RAG) 不是简单的向量数据库查询,而是一套将异构知识、动态语义、推理控制与生成对齐统一的认知工程系统。

12核心章节
4前沿RAG架构
1完整演进路径
30+关键术语与验收项
01

RAG 到底是什么

奠定检索增强生成的基本认知,明确学术定义与企业级定义。

学术经典Lewis 等人在 2020 年发表的论文《Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks》中,首次将 RAG 定义为一种结合了参数化记忆(预训练语言模型)与非参数化记忆(外部文档索引)的端到端生成框架,旨在解决大语言模型事实性错误(幻觉)与时效性滞后的痛点。
生产工程在企业级工程实践中,RAG 是一种认知操作系统:它位于海量非结构化数据资产和推理引擎(LLM)之间,通过将源数据映射为可被向量、关系或图谱索引的空间,在查询时动态拉取最相关的内容片断,注入模型上下文,实现低门槛的知识外挂。
一句话理解RAG = 大语言模型的“开卷考试”系统。 预训练权重是模型的“脑内常识”,而 RAG 是摆在桌上的“参考书”,允许随时更新、精确溯源并遵守数据治理边界。
RAG 系统 = 知识切分与表征 + 语义/拓扑检索 + 上下文注入与控制 + 动态受控生成

三个判断题

只要导入向量库就行?

这只是最粗糙的 Naive 检索层,生成层的幻觉控制、对齐和格式限制同样决定成败。

RAG 只能处理纯文本?

不是。多模态 RAG(Multimodal RAG)可以直接对表格、图表、甚至整页 PDF 进行跨空间表征检索。

RAG 只是静态流水线?

不是。Agentic RAG 将检索作为工具,通过规划(Planning)与反思(Reflection)循环,使系统可动态适应多步骤和自纠错。

02

为什么需要演进

解析 Naive RAG(传统朴素 RAG)在真实企业场景中的四大痛点与崩溃点。

数据切块 (Chunking)暴力均分,截断词句
→
相似度检索单纯的 Cosine 相似度计算
→
提示词拼接无压缩地硬塞到 Context
→
模型生成盲目信任检索文档生成回答

朴素 RAG(Naive RAG)是一个经典的线性单向流。这种架构在处理复杂业务文档时,几乎每个节点都是崩溃点:

检索噪音(Retrieval Noise)

由于语言的多义性,相似度检索常常引入大量无关的背景碎片,导致生成层受到干扰甚至被“带偏”(带偏幻觉)。

语义碎片化(Semantic Fragmentation)

固定长度切片(如 512 tokens)强行切断了前后文逻辑,使得跨段落的连续概念在向量空间中难以聚合检索。

无法回答全局问题(Lack of Global View)

面对“这份产品手册中所有关于安全规范的共性要求是什么”这类问题,朴素 RAG 无法通过局部的 K 个 Chunk 回答,因为答案散落在全文中。

静态路线僵化(No Feedback Loop)

朴素 RAG 无法自主评估检索质量。如果检索出来的东西是不相关的,它也会直接生成;它没有反思、多轮重试和路由机制。

03

RAG 演进全景图与技术栈

纵览 RAG 发展的三次浪潮以及当代模块化 RAG 的层次架构体系。

RAG 应用与智能体问答看板、研报分析 Agent、多源搜索、跨系统写回Cognitive Interface
认知流编排 (OS/Orchestration)LangGraph (状态机)、LlamaIndex Workflows (事件驱动)、DSPyLogic & Routing
检索增强内核 (RAG Core)向量相似检索、GraphRAG 全局/局部检索、多模态晚期交互Retrieval & Alignment
索引与分析层 (Indexing)Leiden 社区检测、知识三元组提取、共享向量空间、多级 Chunk 挂载Knowledge Structuring
基础模型与基础设施多模态 LLM、向量数据库 (Milvus/PGVector)、图数据库 (Neo4j)、OCR 解析Foundation & DB
演进历程RAG 1.0 (Naive RAG):侧重于“有无”——向量索引,Cosine 匹配,单次注入;RAG 2.0 (Advanced RAG):侧重于“精细”——引入重排(Rerank)、混合检索、前处理与后处理优化;RAG 3.0+ (Modular & Cognitive RAG):侧重于“系统”——以 Agentic 循环为核心控制逻辑,引入 GraphRAG 实现全局语义提炼,利用多模态对齐(如 ColPali)保留物理排版细节,通过 DSPy 实现 Prompt 的编译与优化。
04

传统与高级 RAG 架构与优化

深入拆解 Advanced RAG 中的前后处理技术,突破朴素检索的极限。

形象类比 · 开卷考试传统 RAG 就像一次开卷考试。学生(大语言模型)捧着厚厚的参考书,遇到提问时先翻书后的索引/目录(向量检索),找到相关的几页纸(Chunks),然后把这几页纸抄下来,整理成最终答案。
一句话本质传统/高级 RAG 的本质是基于局部语义相似度的分块检索与上下文拼接。它的核心工作是确保局部匹配的“准”与“精”,剔除冗余干扰。

高级 RAG 技术全链路优化

查询重写与 Hypo 注入 (Query Pre-processing)

Query Rewrite:使用轻量语言模型将用户口语化提问转换为 3-5 个不同角度的检索式。
HyDE(Hypothetical Document Embeddings):先让 LLM 生成一份假设性“伪答案”文档,用这个伪答案的向量去检索真实文档,解决问题与答案在向量空间中的不对称问题。

混合检索 (Hybrid Search)

将基于关键词匹配的 BM25 与基于语义距离的 Vector Search 进行融合,通过 RRF(Reciprocal Rank Fusion) 或倒数排序融合算法合并结果,兼顾专有名词精确匹配与泛泛语义理解。

跨级分块策略 (Advanced Chunking)

Sentence Window Retrieval:检索时只匹配单句(向量表征更纯净),生成时动态滑移将该单句前后的上下文(如前后各 3 句)拼入 Prompt。
Parent-Child Chunking:将文档分为大块(Parent,用于生成上下文)和内嵌的小块(Child,用于被向量检索匹配)。一旦命中子块,自动返回父块。

重排 (Reranking) 与上下文压缩 (Post-Retrieval)

向量数据库只做粗筛(例如召回 Top-50),再使用双塔交叉编码器(Cross-Encoder Reranker)计算细致的深度交互得分,重排并截取 Top-5。
Context Compression:使用 LLMLingua 等工具对冗余的检索文本进行压缩,剔除废话,保留关键信息,节省 Token 成本并防止“长文本迷失”。

工程痛点 / 踩坑点1. “Lost in the Middle”效应:检索出的片段较多、上下文较长时,LLM 极易忽略放在中间段落的关键信息,只关注开头和结尾。
2. 表格塌陷与版面丢失:复杂跨页表格、多列双栏排版 PDF 在暴力切片下会变成无序文字流,表格结构和相对空间位置彻底塌陷,导致向量检索完全匹配失准。
3. 硬分块语义截断:硬性 token 截断导致完整的一句话或逻辑链被拦腰切断,召回的碎片失去前后文依托。
05

多模态 RAG:跨越视听的检索增强

解决图表、截屏、扫描件等无法被传统文本分块表征的场景痛点。

形象类比 · 带插图的绘本考试多模态 RAG 就像是“带插图的绘本考试”。参考书里不仅有文字,还有密密麻麻的图表、设计图纸、PPT 幻灯片和扫描件。学生不能只靠文字索引,必须一边读字,一边结合图片的排版、表格的行列相对位置,以及复杂的视觉细节进行跨维度作答。
一句话本质多模态 RAG(特别是 ColPali 路线)的本质是基于文档图像的视觉补丁级(Patch-level)多向量对齐与晚期交互(Late Interaction)匹配检索。它彻底绕过了传统 OCR 解析,实现“所见即所检”。

流程:PDF/图片 → OCR解析文字 → 目标检测定位表格与图表 → 使用 VLM(如 GPT-4o)将图表转为文字描述 (Captioning) → 将所有文本拼接并切块 → 传统文本 Embedding 索引。

痛点这种转换流程极长,极易在“排版分析-OCR-图表描述”中丢失空间相对位置关系和微小数值,且建索引耗时漫长。

流程:PDF 页面直接渲染为高清图片(例如 150 DPI)→ 送入视觉编码器 (如 SigLIP) → 输出图像的补丁级多向量表征 (Patch-level Multi-vector Embeddings) → 用户输入文本直接使用相同的语言模型投射到共享向量空间 → 运行晚期交互 (Late Interaction) 匹配计算。

MaxSim Late Interaction = Σ_(i ∈ Query) max_(j ∈ Doc) (q_i · d_j)

这种方法直接通过视觉机制定位图片或文档中的表格细节,省去了 OCR 和分块步骤,索引构建速度提升近 20 倍。

工程痛点 / 踩坑点1. 显存与算力黑洞:ColPali 依赖于前沿多模态大模型(如 PaliGemma/SigLIP/Gemma2B),其检索与索引过程极其消耗 GPU 显存(VRAM),在大规模并发检索场景下推理成本高昂。
2. 多向量索引存储爆炸:由于 ColPali 采用晚期交互(Late Interaction)机制,它不把整页图压缩为单个向量,而是把每个页面的上千个视觉补丁(Patches)都保存为独立向量。相较于传统 RAG 单向量存储,其数据库内存与磁盘占用会急剧膨胀 10 至 100 倍,对向量库的多向量处理性能提出了极端挑战。
3. 纯文本场景冗余:对于没有图表、排版的干净纯文本或数据库表数据,将其转换为图片进行多模态检索不仅多此一举,且性能和召回精度反而不如传统的混合检索。
06

Agentic RAG:智能体驱动的自主检索

突破被动单次检索,赋予系统多步路由、动态评估和自主订正的能力。

形象类比 · 带侦探思维的学术助理Agentic RAG 就像是“带侦探思维的学术助理”。学生不是死板地翻开一本书看到第几行就抄第几行。他拿到复杂问题时先进行规划(Planning)。如果发现第一轮检索出的参考资料语焉不详或存在矛盾,他会启动纠错与反思,自主重写搜索关键词,换一本书再查,或者调用计算工具、外部 API 补充线索,确认材料确凿无误后才整理交卷。
一句话本质Agentic RAG 的本质是将检索(Retrieval)和写回(Action)解耦为 Agent 随时选择调用的 Tool,依靠规划、路由与反思纠错状态机(Feedback Loop)完成动态知识闭环。
Agentic RAG = 规划决策器 (Planner) + 检索与写回工具 (Tools) + 反思评判机 (Self-Correction) + 动态状态/记忆 (State)

LangGraph 核心范式:采用集中式状态图 (State Graph)。图中的节点是函数/LLM,边(Edges)控制控制流。整个状态(State)在图的执行过程中是全局共享、互斥修改的。它提供了强大的人工在环 (Human-in-the-loop)能力,可以中断 Agent 检索并允许用户手动修改检索参数或进行回滚。

LlamaIndex Workflows 核心范式:采用事件驱动架构 (EDA)。系统解耦为一组独立自治的步骤(Steps),各个步骤不共享集中式的控制流,而是通过发送和订阅自定义的 **Event** 来决定下一步。这种去中心化机制使得高度并发、异步并行的多路径检索(例如同时查询向量库和 Web 搜索)开发变得异常轻松且易于扩展。

Self-RAG 与纠错环路:RAG 不需要无脑生成。自反思环路会使用微调模型或 Prompt 规则输出 Critique 标签:
1. Is_Retrieval:用户问题是否真的需要检索?
2. Is_Relevant:召回的 Chunk 和问题是否相关?若不相关,重新检索(重写 Query)。
3. Is_Supported:生成的答案是否完全由召回的 Chunk 支持(控制幻觉)?
4. Is_Useful:回答是否真正对用户提问有用?

工程痛点 / 踩坑点1. 执行漂移与死循环 (Execution Drift):在多步循环中,Agent 极易由于 LLM 的微小幻觉、或者检索工具返回了空数据,陷入“检索不到-换词检索-依然检索不到”的无限死循环中,或者导致推理目标发生偏移。
2. 时延与 Token 费用呈指数攀升:因为引入了多次规划、改写和反思的 LLM 调用,单次问答响应时间(TTFT)可能会从 1 秒飙升至几十秒甚至数分钟。同时,大量循环中的冗余上下文注入会导致 Token 账单呈爆炸式增长。
3. 状态管理极其沉重:在并发高、链路长的情况下,如何优雅地处理多轮对话的 Memory 遗忘边界、防止上下文窗口被思考历史撑爆,是工程上非常头疼的难题。
07

GraphRAG:关系与图谱的全局视野

解决传统 RAG 无法处理跨文档实体聚合和全域总结性查询的技术痛点。

形象类比 · 侦探的线索墙与思维导图GraphRAG 就像是“侦探的线索墙与思维导图”。当遇到如“总结整本书中公司业务有哪些财务违规隐患”这类全局宏观问题时,翻看局部的单页书毫无意义。学生必须在建索引时用大模型读完全书,提炼所有人物和关系,在墙上拉满红线,织成巨大的实体网,再用聚类工具将线索分为不同的分卷(Leiden 社区)并预写好案卷摘要。回答时,鸟瞰整面线索墙汇总报告即可。
一句话本质GraphRAG 的本质是基于图提取非结构化实体,利用拓扑聚类算法(Leiden)构建层级社区,并采用 Map-Reduce 对多级社区报告进行并行检索提炼。它以构建图谱和预先撰写摘要报告的代价,换取了全局关系归纳能力。
非结构化源文档海量散乱的长文、报告、技术文档、项目归档
图提取与
Leiden 聚类
分级社区摘要报告多级社区节点(S0-S3)的 LLM 主题总结报告

实体与关系提取 (Graph Extraction)

大模型扫描所有原始 Text Chunks,抽取包含 (Entity_A, Relation_Label, Entity_B, Metadata) 的三元组,并记录关联的原文来源。

图谱合并与消歧 (Resolution)

将重复的实体合并,使用图嵌入和实体对齐技术解决同一概念在不同表述下的指向问题(如“OpenAI”与“GPT开发公司”的归并)。

社区发现与分群 (Leiden Clustering)

使用 Leiden 等社群检测算法,根据拓扑结构紧密度将图谱划分为多级的社区(Communities)。每一个社区是一个高度聚合的实体与关系簇。

Leiden 社区摘要编写 (Community Summarization)

针对每一个检测出来的社区,用 LLM 读取其内部的所有实体、关系及对应原文片段,撰写一份结构化摘要报告。这组报告代表了该子域的宏观知识总结。

全局检索 (Global Search) 的 Map-Reduce 执行

当用户提问属于全局主旨性问题(如“公司的供应链体系存在哪些核心风险点?”):
1. Map 阶段:将问题发送给所有相关的社区摘要报告,各报告并行输出本小域的子回答及重要性得分;
2. Reduce 阶段:按得分重排,将高分回答组合后送入 LLM 生成最终的全局总结回答。

局部检索 (Local Search) 的子图遍历

当用户提问属于特定具体问题(如“供应商 A 去年交付的产品质量如何?”):
1. 通过向量检索定位“供应商 A”这个种子实体节点;
2. 沿其关联的关系边拉取周边实体、元数据,并拉取直接关联的原始文本 Chunk;
3. 将这些混合的拓扑与文本碎片拼入 Context 产生精准回答。

工程痛点 / 踩坑点1. 建图过程的“抢劫式” API 账单:GraphRAG 需要在建索引时使用 LLM 反复扫描并提取每个文本块的实体和关系。对于百万字以上的企业文档库,建图需要调用数万次 LLM 接口,API 成本可能是传统向量化存储的数百倍,且极易触发并发限频。
2. Leiden 社区粒度失控:社群聚类分辨率(Resolution 参数)极难调节。如果参数设得太大,划分的社区过于宽泛,导致社区摘要模糊、流于表面,丢失深层细节;如果设得太小,社区数量呈碎片化爆炸,在全局检索时会并发产生上千个 Map 任务,超出模型上下文窗口和企业并发额度。
3. 增量更新(Incremental Update)灾难:当知识库中新增一份文档时,它不能像向量数据库那样直接追加写入。由于新实体的引入可能彻底改变原有的网络图拓扑结构,系统必须重新跑一次图聚类并重新生成受影响的全部社群摘要,这在工程运维上是极其沉重的包袱。
08

四大 RAG 架构对比与决策矩阵

面对具体的企业级落地需求,应如何进行理性的技术选型与折衷?

评估维度朴素/高级 RAG多模态 RAG (ColPali型)Agentic RAGGraphRAG (Leiden型)
查询复杂度单点事实问答 (Q&A)图表、图像与视觉排版问答多步骤、探索性复杂任务规划全局关系分析、跨实体宏观总结
检索时延 (Latency)极低 (0.5s - 1.5s)较低 (1.0s - 2.0s)高 (多轮思考,数秒至数十秒)高 (特别是 Global Search 多轮 Map-Reduce)
建索引成本 (Build Cost)极低 (纯文本向量转换)中等 (GPU 渲染页面并生成多向量)低 (通常依赖现有文本索引)极高 (构建时需调用大量 LLM 提取并总结)
API 运行成本 (Run Cost)低中等 (需要处理多向量表示)中高 (多步循环和自纠错思考)中高 (Reduce 阶段汇总大量社区报告)
存储与数据库依赖传统向量数据库高性能向量数据库 (需支持多向量匹配)向量库 + 运行态状态存储图数据库 (Neo4j) + 向量库
适合业务场景客服知识库、API 常用问答财报分析(含大量图表表格)、工程图纸数据对比分析、需要调用外部 API 的系统人物关系梳理、供应链影响链推演、行业综述
09

工业级技术栈与工具链

构建生产级 RAG 系统的核心拼图与前沿工程范式。

向量与混合检索库

Milvus / Qdrant:支撑数十亿级别稠密与稀疏向量检索的分布式底座;PGVector:在既有 PostgreSQL 关系数据库上通过 scram-sha-256 极速扩展的向量检索插拔层。

拓扑关系管理

Neo4j:GraphRAG 核心依赖,支撑实体关系图谱持久化、子图遍历以及图分析计算(如社群划分与度数中心性计算)。

编排与自动化

LlamaIndex / LangChain:标准的数据连接器(Connectors)与检索接口;LangGraph:为多步骤 Agentic RAG 提供可阻断、可回滚的状态流控制。

多模态对齐表征

SigLIP / ViT-L:提供多模态共享向量底座;ColPali 扩展库:使传统检索器能直接通过图像感知 PDF 的物理排版位置。

声明式开发编译

DSPy 框架:取代手写硬编码 Prompt,通过 Signature 声明输入输出,用 MIPRO 优化器在标注数据集上自动“编译”出最佳的 Prompt 及小样本示例。

评估与可观测性

Ragas / TruLens:实现 Faithfulness(忠实度)、Answer Relevance(相关度)和 Context Recall(召回度)的三元评估体系。

声明式变革DSPy 解决了传统 RAG 中“改一个提示词,系统准确率随机波动”的噩梦。它通过引入 Assertions 并将 Prompt 视为可调参的超参数,实现了软件工程式的迭代。
10

典型落地误区与反模式

规避在企业级 RAG 落地应用中常犯的“致命”反模式。

误区一:盲目迷信长上下文窗口(Lost in context size)

虽然当今模型(如 2M tokens 窗口)可以塞下整本书,但在大篇幅上下文的“中间段落”,模型的注意力提取和忠实度(Lost in the middle)会剧烈滑坡。RAG 不是大窗口的替代品,而是保证模型注意力集中和事实落地的强约束手段。

误区二:暴力切片(Naive chunking on complex documents)

在处理含有大量跨页表格、双栏排版、嵌套公式的复杂 PDF 时,按每 512 字暴力的硬切,会导致表格结构支离破碎,向量空间彻底混乱。工业界必须在索引前使用专门的布局分析(Layout Analysis)或多模态表征(如 ColPali)。

误区三:过度抽取 GraphRAG 关系导致图爆炸

如果使用大模型提取实体和关系时不加类型限制和阈值控制,LLM 会提取出“苹果-是-水果”“水果-有-颜色”等大量常识性的稀疏垃圾边,导致知识图谱极速膨胀,不仅带来千万级别的 Token 账单,还会污染 Leiden 社区划分效果。

误区四:Agentic RAG 中工具泛滥导致死循环与不可观测

将十几个甚至数十个粗糙的 RAG API 作为智能体的工具,在推理时由于模型路径分叉增多,容易陷入“反复检索-失败-换词再检索”的无限死循环。应采用受控的策略路由或事件驱动的分层步骤限制。

误区五:在有高时效要求的场景下使用全局图检索

微软 GraphRAG 的 Global Search 在每一次提问时都要扫描多层社区报告,如果图谱规模巨大,这意味着要触发成百上千次的 LLM 串并行调用,首字返回时间(TTFT)可能高达数分钟。对于实时智能客服等高时效场景,这是一种灾难性的反模式,应结合 Local Search 或预构建的多级摘要库。

误区六:认为向量检索自带数值推理与精确计算能力

向量检索回答的是“语义相似度”,它无法处理“找出上个季度净利润同比增长最高的三个子公司”这种需要确定性求和、对比或排序的计算问题。这类问题必须交由 Text-to-SQL 工具或预计算好的数据库逻辑层来回答。

11

成熟度模型与验收标准

客观衡量一个 RAG 系统工程落地完成度的成熟度指标。

L0Naive 召回简单的暴力均分切片与向量匹配,无任何前/后处理。
L1高级前/后处理引入重排 (Rerank)、混合检索与句子窗口滑移。
L2版面感知与混合度感知物理版面与表格,能够处理图表等跨媒体介质。
L3图谱拓扑增强通过 GraphRAG 支持对海量文档的全局主旨大纲总结。
L4自适应 Agentic具备多步规划与自反思环路,可智能判定检索决策。
L5数据自进化与自动编译基于 DSPy 自动化优化 Prompts,系统基于用户负反馈自学习。

上线前检查(10 Checkpoints)

验收维度不合格信号合格证据
语义准确度 (Faithfulness)回答中夹杂了召回源文本中不存在的脑补事实大模型回答的所有实质论点均能追溯并锚定到具体的引用 Chunk 路径
检索召回率 (Context Recall)用户询问了文档中确有记载的内容,但检索器未过滤出来人工标注的测试黄金数据集(Goldens)端到端召回率高于 92%
系统端到端时延首字返回时间 (TTFT) 大于 5 秒,或者全局总结检索超时通过流式输出、并发 Map 优化、局部子图缓存将 TTFT 控制在 2 秒以内
多模态版面还原度表格中的单元格数值在回答中产生串行或空缺对于含有复杂三线表、多列网格的图片,定位准确率与数据读取正确率完全一致
12

术语、自测与延伸资料

检验你的 RAG 核心知识储备,提供一手原始论文来源。

关键术语速查

Chunking将原始文档按字数、标记或物理版面切分成语义上相对完整的片段。Rerank第二阶段打分算法,用于细致评估粗筛选文档和用户提问的深层交叉注意力。
Late Interaction在匹配时保持词/Patch级别的向量进行矩阵最大相似度相加,保留底层细节语义。Self-RAG在生成过程中通过生成控制 Token 引导大模型自主判定何时检索、如何反思。
Leiden Algorithm一种通过优化模块度来检测复杂网络社群的算法,GraphRAG 的聚类核心。Map-Reduce一种将大任务拆分为子任务(Map)计算并重构合并结果(Reduce)的计算模式。
DSPy声明式提示词编程框架,将提示词工程化并实现可微分/可编译优化。PGVector在关系数据库中原生实现基于 HNSW/IVFFlat 的低延迟向量检索工具。

三题自测

1. GraphRAG 中用于将海量实体和关系划分为多级社区(Community)的核心算法是?
2. 多模态 RAG(特别是 ColPali)的核心原理和技术路径是?
3. 在 Agentic RAG 的架构设计中,LangGraph 与 LlamaIndex Workflows 最关键的控制流差异是?

一手学术资料与延伸阅读

  1. Lewis et al., 2020 - Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks——奠定 RAG 起点的学术开山之作。
  2. Microsoft Research, 2024 - From Local to Global: A GraphRAG Approach to Query-Focused Summarization——系统阐述 Leiden 社群划分与全局 Map-Reduce 检索的经典文献。
  3. ColPali, 2024 - Efficient Document Retrieval with Vision Language Models——多模态原生检索与 Late Interaction 晚期交互的里程碑式研究。
  4. Self-RAG, 2023 - Learning to Retrieve, Generate, and Critique with Self-Reflection——系统化介绍检索增强的自我反思控制模型。