RAG范式基础:大模型为何需要外部知识库
RAG范式基础:大模型为何需要外部知识库
大模型的"知识天花板":为什么参数化记忆不够用
2023 年 11 月,一位医生在临床决策支持系统中向 GPT-4 询问关于一种 2023 年 9 月才获 FDA 批准的新药用法用量,模型自信地给出了一个具体剂量建议——但这个数字纯属捏造。同一时期,一家全球性律所的法务 AI 助手在引用 2023 年 10 月修订的欧盟 AI 法案时,错误地引用了已被废止的旧条款。这些并非孤例,而是揭示了大语言模型(Large Language Model, LLM)在企业落地过程中面临的三大根本性困境:知识截止(Knowledge Cutoff)、幻觉生成(Hallucination)与领域缺失(Domain Gap)。理解这三重困境,是理解 RAG(Retrieval-Augmented Generation,检索增强生成)为何成为必然选择的前提。
1.1 知识截止:训练数据是时间的快照
大语言模型的知识来源于其预训练语料。GPT-4 的训练数据截至 2023 年 10 月,Claude 3 截至 2024 年初,国内主流大模型的数据窗口通常也以月为单位。这意味着任何超出训练截止时间的信息,对于模型而言都是"未知领域"。
从信息论的角度看,模型的参数化知识可以用一个概率分布 $P_\theta(y \mid x)$ 来刻画,其中 $\theta$ 是模型参数。预训练过程的本质,是在给定训练语料 $D = \{(x_i, y_i)\}$ 的条件下,最大化对数似然:
$$\theta^* = \arg\max_\theta \sum_{(x_i, y_i) \in D} \log P_\theta(y_i \mid x_i)$$
这一优化过程将语料中的统计规律压缩进数十亿乃至数千亿个浮点参数中。问题在于:压缩是有损的(lossy compression),且截止于训练完成的瞬间。模型部署上线后,外部世界仍在以指数级速度产生新信息——新闻、专利、监管文件、产品手册、医学指南——而模型对这些信息的"无知"程度,与训练截止时间呈单调递增关系。
一个常被忽视的细节是:截止时间并非一条清晰的分界线。由于训练数据采集的延迟、清洗流程的耗时,以及不同语料源的更新时间差异,模型对截止日期附近的信息存在一个"灰色地带"——某些内容可能被纳入,某些则可能遗漏,且这种纳入与否对模型自身而言也是不可观测的。这使得用户无法准确判断模型"知道什么"与"不知道什么",构成了可靠性评估的根本难题。
1.2 幻觉的数学本质:从概率视角看参数化知识的边界
幻觉(Hallucination)指模型生成看似合理但事实上不正确或无中生有的内容。这并非工程实现上的"bug",而是参数化知识表达方式的结构性必然。
考虑一个语言模型在生成第 $t$ 个 token 时的过程:
$$y_t \sim P_\theta(y_t \mid y_{<t}, x)$$
模型从条件概率分布中采样,得到下一个 token。但注意:这个分布是在所有可能文本上的统计平均,而非"对应真实世界的知识"。当查询涉及罕见实体、长尾事实或训练数据中从未出现的组合时,模型被迫在一个"未见过的输入空间"上做外推(extrapolation),其行为无法保证忠实性。
更精确地说,假设真实世界的事实可以用一个确定性的函数 $f: X \to Y$ 表示(给定问题,返回唯一正确答案),而模型学到的 $P_\theta(y \mid x)$ 试图逼近 $P_{\text{data}}(y \mid x)$——即训练数据中的统计模式。当 $x$ 落在训练分布 $P_{\text{data}}(x)$ 的高密度区域时,$P_\theta(y \mid x) \approx f(x)$ 的可能性较高,模型倾向于给出正确答案;但当 $x$ 落在低密度区域或分布外(Out-of-Distribution, OOD)区域时,$P_\theta(y \mid x)$ 可能与 $f(x)$ 严重偏离,此时模型会基于"似是而非的语言模式"生成内容,幻觉便随之产生。
从信息论角度可以更形式化地理解这一点。模型所包含的关于事实 $f$ 的信息量受限于训练数据中的互信息(Mutual Information):
$$I(f; D) \leq H(f) - H(f \mid D)$$
其中 $H(f)$ 是事实的信息熵,$H(f \mid D)$ 是在给定训练数据后关于 $f$ 的剩余不确定性。对于训练数据中罕见或不存在的事实,$H(f \mid D)$ 接近 $H(f)$,意味着模型对这些事实的信息量几乎为零。此时模型只能依赖语言先验(linguistic prior)来生成"看起来合理"的延续,但这种合理性是基于语法和风格的一致性,而非事实层面的准确性。
这就解释了为何模型会"自信地说错话"——它并非在"撒谎",而是在它所学到的概率分布中,那个错误的延续确实拥有较高的概率质量。
1.3 领域缺失:长尾知识的统计困境
第三个困境是领域缺失(Domain Gap),指通用预训练模型在垂直专业领域(如医疗、法律、金融、工程)表现不佳的现象。
从统计学习理论看,预训练数据 $D_{\text{pre}}$ 与目标领域数据 $D_{\text{target}}$ 之间存在分布偏移(distribution shift):$P_{\text{pre}}(x, y) \neq P_{\text{target}}(x, y)$。这种偏移体现在三个层面:
1. 词汇分布偏移:专业领域有大量通用语料中低频甚至不存在的术语。例如法律领域的"善意第三人"、"表见代理",医学领域的"ST 段抬高型心肌梗死"。 2. 关系结构偏移:专业领域的实体关系往往遵循严格的规范约束。例如药物之间的相互作用关系、合同条款之间的引用与被引用关系。 3. 推理模式偏移:专业领域的问答往往需要多跳推理(multi-hop reasoning)、精确的数值计算或对法规条文的逐字引用。
这三层偏移叠加,导致模型在专业领域的输出"形似而神非"——语法流畅、术语正确,但推理链条或事实细节经不起推敲。
更棘手的是长尾知识问题。Zipf 定律告诉我们,自然语言中少量高频词占据了大多数出现次数,而大量专业术语、罕见实体、特殊案例构成了长长的尾巴。预训练语料虽然庞大,但对于企业内部的特定知识(如某款产品的技术规格、某次内部会议的决策结论、某份合同的特殊条款),其覆盖率近乎为零。
要解决上述三重困境,业界探索了多条技术路径:继续预训练(Continued Pre-training)、监督微调(Supervised Fine-Tuning, SFT)、Prompt Engineering、Tool Use、以及本书的主题RAG。它们各自有明确的适用边界,而 RAG 之所以在企业场景中迅速成为事实标准,正是因为它在"知识更新成本"、"事实可追溯性"、"领域适应性"与"部署灵活性"之间提供了一个独特的平衡点。
---
RAG核心范式:检索-增强-生成三段式架构
面对参数化知识的固有局限,一个朴素而强大的想法是:让模型在生成答案时能够"查阅"外部知识。这正是 RAG 的核心思想。其本质是将闭卷答题(closed-book QA)转变为开卷答题(open-book QA),把"知识"从模型参数中解耦出来,放到一个可动态更新的外部知识库中。
2.1 思想溯源:让模型"开卷考试"
传统语言模型回答问题时,只能依赖其在训练阶段"记住"的内容。这就像一个考生被关在考场里,仅凭考前记忆答题。而 RAG 范式则相当于为考生配备了一本可实时更新的参考书:每次答题前,先到参考书里查阅相关材料,再结合这些材料和自身理解生成答案。
这一思想并非凭空产生。传统信息检索(Information Retrieval, IR)领域有数十年的研究积累,从 TF-IDF、BM25 到 Learning to Rank,已经形成了成熟的检索技术栈。2010 年代后期,神经检索(Neural IR)的崛起——以双塔模型(Dual Encoder)、DPR(Dense Passage Retrieval)为代表——将检索的准确率推上了一个新台阶,为 RAG 的出现奠定了基础。
2020 年,Facebook AI 发布的 REALM(Retrieval-Augmented Language Model)模型首次将检索与语言模型进行端到端的联合训练(joint training),标志着神经 RAG 的正式登场。同年,Lewis 等人发表的经典论文 *Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks* 提出了更为清晰的"预训练检索器 + 冻结生成器 + 端到端微调"范式,直接催生了"RAG"这一术语的广泛流行。
2.2 Query→Retrieve→Augment→Generate 四阶段工作机理
现代 RAG 系统的标准工作流可以抽象为四个阶段:
阶段一:Query 理解与改写(Query Understanding & Rewriting)
用户输入的原始 query 往往存在表述模糊、术语歧义、上下文缺失等问题。例如用户问"那个最新的方案怎么用",如果没有上下文,模型无法理解"最新的方案"指代什么。Query 理解阶段的任务包括:
- **意图识别**:判断用户是想获取事实、进行比较、还是寻求操作指导
- **实体抽取与链接**:识别 query 中的关键实体,并将其链接到知识库中的标准实体
- **Query 改写(Query Rewriting)**:将口语化、省略式表达改写为结构化、信息完整的检索 query
- **多 Query 扩展(Multi-Query Expansion)**:从单一 query 生成多个视角的检索 query,以提升召回率
阶段二:检索(Retrieve)
基于改写后的 query,从知识库中检索最相关的文档片段(chunks)。检索策略经历了三代演进:
- **稀疏检索**(Sparse Retrieval):以 BM25 为代表,基于词频与逆文档频率进行关键词匹配。优点是可解释性强、对精确术语敏感;缺点是缺乏语义理解。
- **稠密检索**(Dense Retrieval):使用预训练的 Embedding 模型将 query 和文档映射到同一向量空间,通过余弦相似度或内积进行检索。代表模型包括 DPR、Contriever、BGE、E5、ColBERT 等。优点是语义泛化能力强;缺点是训练成本高、对精确匹配不敏感。
- **混合检索**(Hybrid Retrieval):结合稀疏与稠密检索的互补优势,是生产环境的常见选择。
阶段三:增强(Augment)
将检索到的文档片段与原始 query 组合成增强 prompt。增强阶段的核心问题不是"要不要拼接",而是"怎么拼接才能让模型更好地利用这些信息"。这涉及:
- **上下文压缩(Context Compression)**:检索结果可能冗长,需要提取关键信息
- **排序与去重**:对多源检索结果进行重排(Rerank),保留最相关片段
- **Prompt 模板设计**:如何组织"指令 + 检索片段 + 用户 query"的结构
- **元信息注入**:是否附带文档来源、时间戳、可信度评分等元信息
阶段四:生成(Generate)
LLM 基于增强后的 prompt 生成最终回答。这一阶段需要关注:
- **受约束生成(Constrained Generation)**:通过 prompt 工程或解码策略,确保回答忠实于检索内容
- **引用标注(Citation)**:让模型在回答中标注信息来源,提升可追溯性
- **幻觉抑制**:当检索内容不足以回答时,模型应主动表示不知道,而不是强行生成
2.3 形式化框架:条件概率视角下的 RAG
从概率论的角度,RAG 的生成过程可以形式化为:
$$P(y \mid x) = \sum_{z \in Z} P(y \mid x, z) \cdot P(z \mid x)$$
其中:
- $x$ 是用户 query
- $y$ 是生成的回答
- $z$ 是从知识库中检索到的相关文档(或文档片段)
- $Z$ 是所有可能检索结果的集合
- $P(z \mid x)$ 是**检索分布**(retrieval distribution),由检索器建模
- $P(y \mid x, z)$ 是**生成分布**(generation distribution),由 LLM 建模
这个公式揭示了 RAG 的核心机制:最终回答是"所有可能检索内容上的生成结果的期望"。当检索器能够以高概率返回正确的 $z^*$,且生成器在给定 $z^*$ 时能够输出正确的 $y^*$ 时,整个 RAG 系统的表现就接近"知道正确答案"。
在工程实践中,我们通常用最大化后验概率的方式进行近似:
$$\hat{y} = \arg\max_y P(y \mid x, \hat{z}), \quad \text{其中} \quad \hat{z} = \arg\max_z P(z \mid x)$$
即先用检索器取 top-k 个最相关的文档($\hat{z} = \{z_1, z_2, ..., z_k\}$),再让 LLM 基于这些文档生成回答。这种"先检索再生成"的串行结构,是当前 RAG 系统的主流架构。
值得注意的是,RAG 的威力不仅在于"加上了检索",更在于它改变了模型处理未知信息的方式。在没有 RAG 时,模型面对超出训练数据的问题,只能依赖语言先验进行"创造式"回答,幻觉由此产生。引入 RAG 后,模型获得了"查阅资料"的能力,其生成过程被外部证据所锚定(grounded),事实准确性显著提升。同时,由于知识存储在外部知识库中而非模型参数中,知识更新不再需要重新训练模型——只需更新知识库即可,这为企业级应用提供了极大的灵活性。
---
RAG vs 替代方案:决策矩阵与适用边界
RAG 并非解决大模型知识问题的唯一方案。在企业落地中,常见的技术路径包括 Fine-tuning(微调)、Prompt Engineering(提示工程)、Tool Use(工具调用)以及 RAG。它们各有清晰的适用场景和局限性。理解这些边界,是做出正确技术选型的基础。
3.1 Fine-tuning:参数更新的双刃剑
Fine-tuning(微调)指在预训练模型的基础上,使用特定任务或领域数据继续训练,更新模型参数。常见变体包括:
- **SFT(Supervised Fine-Tuning)**:用标注的 (input, output) 对训练
- **LoRA / QLoRA**:参数高效微调,只更新少量低秩矩阵
- **Continued Pre-training**:在领域语料上继续无监督预训练
- **RLHF / DPO**:基于人类反馈或偏好对齐训练
Fine-tuning 的核心优势在于:模型能够内化(internalize)特定领域的语言风格、推理模式甚至事实知识。例如,一个经过医学文献微调的模型,在不需要外部检索的情况下也能更好地理解医学术语。
然而 Fine-tuning 存在三个根本性挑战:
1. 知识更新成本高:每次知识更新都需要重新训练,耗时耗力。对企业知识库这种每周甚至每天更新的场景而言,这是不可接受的。 2. 灾难性遗忘:模型在学习新知识时可能遗忘旧能力,需要精心设计训练流程。 3. 事实可追溯性差:微调将知识"烧"进了黑盒参数中,无法追溯某个回答的来源。 4. 幻觉仍可能发生:微调并未改变模型的概率生成机制,对于训练数据中未覆盖的事实,模型仍会幻觉。
Fine-tuning 适用的场景是:需要改变模型的行为模式或输出风格(如客服话术、代码风格),需要让模型内化特定推理模式(如多步推理的格式),或需要在低延迟、无外部依赖的场景下获得领域能力。
3.2 Prompt Engineering:上下文窗口内的博弈
Prompt Engineering 通过精心设计的提示词,引导模型产生期望输出。高级技术包括 Few-shot Prompting、Chain-of-Thought(CoT)、ReAct、Tree of Thoughts 等。
Prompt Engineering 的优势在于:零训练成本、可解释性强、易于迭代。但其能力天花板明显:
- 受限于**上下文窗口大小**:即便 GPT-4 提供了 128K 上下文,也难以装下整个企业知识库
- 受限于**位置敏感性**:模型对 prompt 中不同位置的信息关注度不同,中间位置的内容往往被"忽略"
- 难以注入**大量精确事实**:长 prompt 中的细节容易被"稀释"
Prompt Engineering 适用于:任务定义清晰、所需信息量小、需要快速实验的场景。例如定义输出格式、注入少量角色设定、引导推理路径等。
3.3 Tool Use 与 Function Calling:结构化数据访问
Tool Use(工具调用)让 LLM 通过 Function Calling 接口调用外部 API、数据库或计算工具。代表能力包括 Web Search、Code Interpreter、Database Query 等。
Tool Use 的优势是:能够获取实时信息(如当前股价、天气)、执行精确计算(如数学运算)、访问结构化数据(如 SQL 数据库)。但其局限在于:
- 工具调用是**离散操作**,适合"查询-返回"模式,不适合"提供上下文供模型阅读"的场景
- 工具的设计与维护成本高,且需要模型具备较强的**工具选择与参数生成能力**
- 工具的输出通常仍需作为 prompt 的一部分输入 LLM,受限于上下文窗口
Tool Use 适用于:需要实时信息、需要结构化数据访问、需要执行确定性操作的场景。
3.4 四象限决策矩阵与 RAG 选型流程
为帮助读者快速做出技术选型,我们构建一个四维决策矩阵,从四个关键维度对比 RAG、Fine-tuning、Prompt Engineering 和 Tool Use:
| 维度 | RAG | Fine-tuning | Prompt Eng