RAG 的时代背景与技术演进 / The Era and Evolution of RAG
RAG 的时代背景与技术演进 / The Era and Evolution of RAG
如果把大语言模型(LLM)视作一种新型的"通用推理引擎",那么它所暴露出来的最尖锐矛盾并不在于推理能力,而在于知识供给:当模型在 2024 年被要求回答 2025 年的事件、引用一份内部合规手册、或在金融监管规则中给出具体条款编号时,它要么沉默、要么编造、要么给出过期的答案。这种"知道但不知道"的尴尬并非偶然 bug,而是 Transformer 架构在训练—推理两阶段耦合之后产生的结构性缺陷。RAG(Retrieval-Augmented Generation,检索增强生成)正是在这一结构性缺陷之上,被工程界与学术界共同推选出的、目前最可行的参数化记忆与非参数化记忆融合范式。理解 RAG 之所以成立、演进、并将持续存在,是展开本书后续工程实践的逻辑前提。
本章沿"问题—分析—案例—承接"四段式展开:首先剖析 LLM 不可回避的三重知识困境;然后以五次范式跃迁为线索,回顾 RAG 从 2020 年 Naive RAG 到 2024 年 Agentic RAG 的演化路径;接着将 RAG 放入与 Long Context、Fine-tuning、知识图谱的横向对比框架,给出可决策的判断依据;最后通过对一个企业知识库问答系统失败案例的拆解,揭示 RAG 落地的真实复杂性,并自然过渡到第 2 章关于 RAG 整体技术架构的讨论。
---
1.1 LLM 的三重知识困境 / The Three-fold Knowledge Dilemma of LLM
大语言模型在自然语言理解、代码生成、复杂推理等任务上的能力增长曲线,在 2023—2024 年呈现明显的"边际收益递增"特征。然而,这种能力增长并不等同于知识增长。LLM 在生产环境中所暴露的问题,绝大多数可以归因于三个相互纠缠、但本质上独立的现象:参数化知识边界(parametric knowledge boundary)、幻觉(hallucination)与知识截止(knowledge cutoff)。这三者构成了 RAG 范式存在的逻辑根基。
1.1.1 参数化知识边界:Transformer 容量与训练分布的双重约束
所谓"参数化知识",是指 LLM 在预训练阶段通过自监督学习将语料中的事实性知识压缩进 Transformer 权重矩阵所形成的知识形态。在数学上,可以将 LLM 的知识表达抽象为一个概率分布 $P_{\theta}(y \mid x)$,其中参数 $\theta \in \mathbb{R}^{|\theta|}$ 通过最大似然估计在训练集 $\mathcal{D}_{\text{train}}$ 上优化:
$$\theta^{*} = \arg\max_{\theta} \sum_{(x, y) \in \mathcal{D}_{\text{train}}} \log P_{\theta}(y \mid x)$$
这个公式揭示了一个根本性的工程事实:模型所"知道"的内容严格受限于 $|\theta|$ 与 $\mathcal{D}_{\text{train}}$ 的并集。当输入 $x$ 所引用的知识从未在 $\mathcal{D}_{\text{train}}$ 中以足够频率出现,或与现有参数所编码的知识产生冲突时,模型的输出将退化为一种"概率插值"。此时模型并非在"撒谎",而是在做它唯一能做的事——在权重空间中找到最接近输入语义的最可能 token 序列。
参数化知识边界的工程后果有三层。第一层是长尾知识缺失:对于头部高频实体(如"爱因斯坦生于 1879 年"),模型参数中编码的知识足够稠密,准确率可达 95% 以上;但对于长尾实体(如某公司 2023 年发布的内部 API 的具体参数),准确率可能跌至 10% 以下。第二层是权重—事实耦合:当事实发生变化(如某高管离职、某产品停产),参数中编码的旧事实不会被自动更新,除非重新进行预训练或微调。第三层是容量饱和:随着 $|\theta|$ 增大,新知识写入对旧知识的覆盖(catastrophic forgetting)风险同步上升,这使得"无限扩展知识"在工程上不可行。
1.1.2 幻觉:自回归生成的概率性副产品
幻觉(hallucination)这一术语在 LLM 语境中特指模型生成的内容在事实上不成立、但在其语言模型分布中是高概率输出的现象。GPT-4、Claude 3.5、Llama 3.1 等主流模型均无法完全消除幻觉,这并非训练缺陷,而是自回归生成机制的固有属性。
从信息论角度理解,自回归语言模型在每一步生成中最大化的是条件概率 $P(t_i \mid t_{<i}, x)$,而非事实正确性。当模型在某些领域缺乏足够强的"事实证据"作为先验时,其生成过程会回退到"语言合理性最大化"——即生成的句子读起来通顺、句法正确、引经据典的格式逼真,但具体的事实细节由模型在训练时观察到的局部统计模式"虚构"而成。流畅性是幻觉的天然伪装。
更精确地,幻觉可分为三类:
1. 事实性幻觉(factual hallucination):生成内容与可验证的现实世界事实相矛盾,例如错误引用论文、错误历史日期、错误人物关系。 2. 忠实性幻觉(faithfulness hallucination):生成内容与给定上下文(如检索到的文档)相矛盾,模型"忽略"或"曲解"了提供的证据。 3. 推理性幻觉(reasoning hallucination):在多步推理过程中,某一步出现逻辑跳跃或算术错误,导致最终结论失真。
RAG 主要针对前两类幻觉具有显著的抑制作用——通过在生成前显式提供事实证据,模型被"锚定"在给定上下文中,从而大幅降低"无中生有"的概率。但需要强调的是,RAG 并不能从理论上消除幻觉,模型仍可能在检索到的文档中"提取"错误信息,或在多文档综合时产生新的合成错误。这一点在第 6 章关于检索质量评估的内容中将进一步讨论。
1.1.3 知识截止:训练—部署的时间断裂
知识截止(knowledge cutoff)是指 LLM 在预训练阶段使用的数据集存在一个最晚时间点 $T_{\text{cutoff}}$,超出该时间点发生的事实不会进入模型参数。以 GPT-4o 为例,其训练数据截止于 2023 年 10 月;Claude 3.5 Sonnet 截止于 2024 年 4 月;Llama 3.1 系列则在持续滚动更新,但仍存在数月的滞后窗口。
知识截止在工程上导致两类问题:静态知识陈旧化与动态知识不可达。前者是相对温和的版本——模型回答的是 6 个月前的世界,结论虽旧但仍可能部分成立;后者则是硬约束——当用户询问"过去 24 小时内发布的监管文件"或"公司今早 9 点发布的公告"时,模型参数中根本不存在相关知识,无论其规模多大、推理多强,都无法正确回答。
三重困境并非相互独立:参数化知识边界决定了模型"能"知道什么,幻觉决定了模型在不知道时会"做什么",知识截止则决定了模型"何时"开始不知道。三者共同构成了 RAG 作为"外部记忆系统"被发明的根本动因。RAG 的本质,是用一个可动态更新的非参数化知识库,去补足 LLM 参数化记忆的不可达、不可信、不可更新的部分。
---
1.2 RAG 的五次范式跃迁 / The Five Paradigm Shifts of RAG
RAG 并非一蹴而就的静态架构,而是一个在过去五年中经历了多次结构性演化的方法论家族。从 2020 年 Meta AI 与华盛顿大学联合发布的原始 RAG 论文,到 2024 年末出现的 Agentic RAG 范式,RAG 的形态从"检索—生成的简单串联"演进为"多源检索—多阶段推理—多智能体协作"的复杂系统。理解这五次范式跃迁,对于在工程实践中选择合适的 RAG 变体至关重要。
1.2.1 Naive RAG(2020—2022):原文检索 + 序列到序列的朴素范式
Naive RAG 的标志性工作由 Lewis 等人于 2020 年发表,论文标题即《Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks》。其架构可被简洁地表达为三步:
1. 索引(Indexing):将外部知识库(通常是维基百科或领域文档集合)切分为固定长度的 chunk,通过编码器(如 DPR 中的 BERT)将每个 chunk 映射为稠密向量,建立向量索引。 2. 检索(Retrieval):给定用户查询 $q$,使用相同编码器将 $q$ 编码为向量 $v_q$,在向量空间中通过近似最近邻(ANN)算法找到 Top-$k$ 个最相关的 chunk。 3. 生成(Generation):将检索到的 chunk 与原始查询拼接,输入到 BART 等序列到序列模型中,生成最终答案。
Naive RAG 的核心贡献在于第一次系统性地验证了"非参数化记忆可作为 LLM 推理的有效补充"。在开放域问答(Open-Domain QA)、事实核查(Fact Checking)、知识密集型对话等任务上,Naive RAG 显著优于纯参数化模型。然而,其朴素之处也显而易见:
- **Chunk 切分粒度固定**:通常按 token 数硬切,导致句子、段落、表格被任意截断,破坏语义完整性。
- **检索仅基于相似度**:未考虑 query 与 chunk 之间的语义对齐、关键词重叠度、文档权威性等。
- **生成阶段无反馈**:检索到的内容直接拼接进 prompt,模型被动接受,无纠错机制。
- **评估机制缺失**:几乎所有 Naive RAG 实现都缺乏端到端的可观测性指标。
尽管如此,Naive RAG 确立的"indexing—retrieval—generation"三段式范式成为后续所有 RAG 变体的基础骨架。
1.2.2 Advanced RAG(2023—2024):Pre-Retrieval、Retrieval、Post-Retrieval 的全链路优化
2023 年起,随着 ChatGPT 引爆 LLM 工业落地,RAG 在工程实践中暴露出大量 Naive 范式无法解决的问题:检索召回率低、答案幻觉率高、长文档处理失效等。研究者与工程师们围绕检索前、检索中、检索后三个阶段,系统性地引入了优化技术,催生了 Advanced RAG 范式。
Pre-Retrieval 优化关注查询与文档索引的预处理。关键技术包括:
- **Query Rewriting**:使用 LLM 将用户的口语化、模糊化查询改写为更利于检索的明确查询。例如将"那个去年发布的芯片"改写为"2023 年发布的 [公司名] 芯片型号"。
- **Query Expansion**:通过 HyDE(Hypothetical Document Embeddings)等方法,先让 LLM 假设性地生成一个"理想答案文档",然后用该假设文档的向量进行检索,从而弥合 query 与 document 之间的语义鸿沟。
- **Chunk 优化**:从固定切分演进为语义切分(基于段落边界)、小—大切分(small-to-big retrieval,先检索小 chunk,再返回其所在的大段落)、元数据增强切分(在 chunk 中注入标题、章节、时间戳等结构化信息)。
- **Embedding 优化**:从通用 Embedding 模型(如 BERT、SBERT)演进为领域微调 Embedding、BGE、Instructor、E5 等针对检索任务专门优化的模型。
Retrieval 阶段优化关注召回的多样性与精度。关键技术包括:
- **混合检索(Hybrid Search)**:将稠密向量检索(DPR、ColBERT)与稀疏检索(BM25、TF-IDF)结合,通过倒数秩融合(Reciprocal Rank Fusion, RRF)合并结果。
- **重排序(Re-ranking)**:使用更强的 Cross-Encoder 模型(如 Cohere Rerank、BGE Reranker)对初筛的 Top-$k$ chunk 进行精排,将最相关的 $k'$ 个($k' < k$)送入生成阶段。
- **多路召回(Multi-Recall)**:针对不同类型知识(文本、表格、图片、代码)采用不同检索器,再统一融合。
Post-Retrieval 优化关注检索结果与生成阶段的衔接。关键技术包括:
- **Context Compression**:使用 LLM 或专门模型对检索到的 chunk 进行压缩、提取、摘要,去除冗余信息,适配 LLM 的 context window。
- **Re-ranking by Generation**:让 LLM 自己对检索结果进行相关性排序,挑选最有用的几个。
- **Citation Augmentation**:要求 LLM 在生成答案时显式标注引用来源,便于可解释性与可审计性。
Advanced RAG 的工程意义在于,它将 RAG 从一个"开箱即用"的黑盒范式,转变为可被精细化调优的工程流水线。这一阶段的所有优化技术都已成为当前生产级 RAG 系统的标配。
1.2.3 Modular RAG(2023—2024):可组合的功能模块体系
Modular RAG 范式由 Gao 等人在 2024 年的综述论文《Retrieval-Augmented Generation for Large Language Models: A Survey》中正式提出。其核心思想是:RAG 不应被理解为一条固定的流水线,而应是一个由可插拔模块组成的灵活架构。
在 Modular RAG 框架下,RAG 系统被解构为以下几类基本模块:
- **Indexing Module**:负责文档解析、chunk 切分、向量化、元数据注入。
- **Pre-Retrieval Module**:负责 query 改写、扩展、分解。
- **Retrieval Module**:负责多种检索器(向量、关键词、SQL、API)的调用与融合。
- **Post-Retrieval Module**:负责重排序、压缩、过滤。
- **Generation Module**:负责基于检索结果生成答案。
- **Orchestration Module**:负责控制上述模块的执行顺序、循环、分支。
Modular RAG 允许工程师根据业务需求自由组合模块。例如,对于复杂多跳问题(multi-hop QA),可加入"Sub-Query Decomposition"模块将问题拆解为多个子问题,分别检索后再综合答案;对于需要多模态信息的场景,可加入"Image Retrieval"或"Table Parser"模块;对于需要实时数据流(如股票行情、新闻)的场景,可加入"Streaming Retriever"模块。
Modular RAG 的真正价值在于将 RAG 从一种"最佳实践"转变为一种"可工程化设计的系统"。它与软件工程中的"微服务架构"思想一脉相承——每个模块独立演进、独立测试、独立部署。
1.2.4 GraphRAG(2024):图结构知识的引入
GraphRAG 是 2024 年由微软研究院提出并开源的一种 RAG 变体,其核心创新在于将图结构(Knowledge Graph)引入检索增强流程。在传统的 Naive/Advanced RAG 中,文档被切分为扁平的 chunk,chunk 之间缺乏显式的语义关联;在 GraphRAG 中,文档被解析为实体—关系—实体的三元组,构建为知识图谱,检索过程在图结构上执行。
GraphRAG 的工作流程可概括为:
1. Graph Construction:使用 LLM 从原始文档中抽取实体、关系、属性,构建初始知识图谱。 2. Community Detection:使用图算法(如 Leiden 算法)将图谱划分为多个社区(communities),每个社区代表一个语义聚合的主题。 3. Community Summarization:使用 LLM 为每个社区生成摘要,形成"分层语义索引"。 4. Query-Time Retrieval:根据用户查询,匹配相关社区,返回社区摘要作为上下文。
GraphRAG 在两类任务上显著优于传统 RAG:第一类是全局性问题(global sensemaking),如"总结过去一年公司所有产品的演进路线"——这类问题需要跨多个文档的聚合信息,传统 RAG 因上下文窗口限制难以胜任;第二类是关系密集型问题,如"某高管与哪些部门存在汇报关系"——这类问题需要显式的图遍历。
然而,GraphRAG 也存在显著局限:构建成本高(需要 LLM 抽取所有实体关系)、更新成本高(文档变化需要重新构建图)、对简单事实查询反而过度工程化。因此,GraphRAG 适合作为特定场景下的增强模块,而非对传统 RAG 的全面替代。
1.2.5 Agentic RAG(2024—2025):智能体驱动的动态检索
Agentic RAG 是截至 2024 年末最前沿的 RAG 范式,其核心思想是将检索过程从静态流水线转变为由 LLM Agent 驱动的动态决策过程。在 Agentic RAG 中,LLM 不再是被动接收检索结果的生成器,而是主动决定"何时检索、检索什么、如何综合、如何反思"的智能体。
Agentic RAG 的典型架构包括以下机制:
- **Tool-Use Retriever**:Agent 可以调用多种检索工具(向量检索、SQL、API、浏览器、计算器)中的任意一种或多种,根据查询需要动态选择。
- **Multi-Step Reasoning**:Agent 通过 ReAct、Reflexion、Plan-and-Execute 等推理框架,将复杂问题分解为多个子步骤,每步决定是否需要检索以及检索什么。
- **Self-Correction**:Agent 在生成答案后可以自我评估答案质量,若不满意则触发新一轮检索与生成。
- **Multi-Agent Collaboration**:多个专门的 Agent 协同工作,例如"检索 Agent"负责信息获取、"批判 Agent"负责事实核查、"综合 Agent"负责答案组织。
Agentic RAG 的代表工作包括 LangChain 的 Self-RAG、Corrective RAG(CRAG)、Adaptive RAG