想象一下,你花了一个学期的时间学习大学的一门课程。在期末,经过密集的学习阶段,你参加了一场考试——无需查阅任何资料,你就能回忆起最重要的概念。
现在想象第二种情况:有人问你一个新主题的问题。你不能立即回答,于是你拿起一本书或浏览维基百科,去寻找正确的信息来回答问题。
这两个比喻代表了改进大语言模型(LLM)基础模型,或使其适应特定任务和领域的最重要的两种方法:检索增强生成(RAG)和微调(Fine-Tuning)。
但是,哪个例子属于哪种方法呢?
这正是我将在本文中解释的内容:阅读后,你将了解 RAG 和微调的定义、它们最重要的区别,以及哪种方法适合哪种应用场景。
让我们开始吧!
目录
- 1. 基础:什么是 RAG?什么是微调?
- 2. RAG 与微调的区别
- 3. 构建 RAG 模型的方法
- 4. 微调模型的选项
- 5. 什么时候建议使用 RAG?什么时候建议使用微调?
- 最后的话
- 您可以在哪里继续学习?
1. 基础:什么是 RAG?什么是微调?
像 OpenAI 的 ChatGPT、Google 的 Gemini、Anthropic 的 Claude 或 Deepseek 这样的大语言模型(LLM)功能极其强大,并在极短时间内确立了在日常工作中的地位。
它们最大的局限性之一是其知识仅限于训练数据。一个在 2024 年训练的模型无法获知 2025 年发生的事件。如果我们问 ChatGPT 的 4o 模型当前的美国总统是谁,并明确指示不得使用互联网,我们就会发现它无法确定地回答这个问题。

此外,这些模型无法轻易访问公司特定信息,例如内部指南或最新的技术文档。
这正是 RAG 和微调发挥作用的地方。
这两种方法都可以使 LLM 适应特定的需求。
RAG —— 模型保持不变,输入得到改进
使用检索增强生成(RAG)的 LLM 本身保持不变。
然而,它获得了访问外部知识源的权限,因此可以检索存储在模型参数之外的信息。RAG 在推理阶段通过利用外部数据源来提供最新或特定的信息,从而扩展了模型。推理阶段即模型生成答案的时刻。
这使得模型无需重新训练即可保持最新状态。
它是如何工作的?
- 用户提出问题。
- 查询被转换为向量表示。
- 检索器在外部数据源中搜索相关的文本段落或数据记录。这些文档或常见问题解答(FAQ)通常存储在向量数据库中。
- 找到的内容作为附加上下文被传输到模型中。
- LLM 基于检索到的最新信息生成答案。
关键点在于,LLM 本身保持不变,且 LLM 的内部权重保持不变。
假设一家公司使用内部的 AI 支持聊天机器人。
该聊天机器人帮助员工回答有关公司政策、IT 流程或人力资源主题的问题。如果你问 ChatGPT 一个关于你公司的问题(例如:我还有多少天年假?),从逻辑上讲,该模型无法给你一个有意义的答案。一个没有 RAG 的传统 LLM 对公司一无所知——它从未接受过这些数据的训练。
而 RAG 改变了这一点:聊天机器人可以搜索外部的最新公司政策数据库,找到最相关的文档(例如 PDF 文件、维基页面或内部常见问题解答),并提供具体的答案。
RAG 的工作方式类似于我们人类在图书馆查找特定信息或通过 Google 搜索——但它是实时的。
当一名学生被问到“CRUD”的含义时,他会迅速查阅维基百科条目并回答“创建、读取、更新和删除”——这就像 RAG 模型检索相关文档一样。这一过程使得人类和人工智能都无需死记硬背就能提供知情回答。
这也使得 RAG 成为保持回答准确和最新的有力工具。

微调 —— 模型经过训练并永久存储知识
LLM 不仅可以通过查找外部信息,还可以通过微调直接更新新知识。
微调用于训练阶段,为模型提供额外的领域特定知识。现有的基础模型会使用特定的新数据进行进一步训练。结果是,它“学习”了特定的内容,并内化了术语、风格或某些内容,同时保留了其对语言的通用理解。
这使得微调成为根据特定需求、数据或任务定制 LLM 的有效工具。
它是如何工作的?
- 使用专门的数据集对 LLM 进行训练。该数据集包含有关某个领域或任务的特定知识。
- 调整模型权重,使模型将新知识直接存储在其参数中。
- 训练完成后,模型无需外部源即可生成答案。
现在假设我们想使用一个能为我们提供法律问题专家级回答的 LLM。
为此,该 LLM 接受法律文本的训练,以便在微调后提供精确的答案。例如,它会学习诸如“故意侵权(intentional tort)”之类的复杂术语,并能说明相关国家背景下的适当法律依据。它不再只是给出一个笼统的定义,而是可以引用相关法律和判例。
这意味着你所拥有的不再仅仅是一个通用的 LLM(如 GPT-4o),而是一个用于法律决策的实用工具。
如果我们再次审视人类的比喻,微调就像是经过密集学习阶段后内化了知识。
在这个学习阶段之后,计算机专业的学生就知道 CRUD 代表创建、读取、更新和删除。他/她无需查找即可解释这个概念。通用词汇量得到了扩展。
这种内化使得回答更快速、更自信——就像经过微调的 LLM 一样。
2. RAG 与微调的区别
两种方法都能提升 LLM 在特定任务上的表现。
两种方法都需要准备充分的数据才能有效工作。
而且,两种方法都有助于减少“幻觉”——即生成虚假或捏造的信息。
但如果我们查看下表,就能看出这两种方法之间的区别:
RAG 特别灵活,因为模型始终可以访问最新数据,而无需重新训练。它在前期所需的计算量较小,但在回答问题(推理)时需要更多资源。延迟也可能较高。
另一方面,微调提供了更快的推理速度,因为知识直接存储在模型权重中,不需要外部搜索。其主要缺点是训练耗时且昂贵,并且需要大量高质量的训练数据。
RAG 为模型提供了在需要时查找知识的工具,而无需改变模型本身;而微调则通过调整参数和权重,将额外知识存储在模型中。

3. 构建 RAG 模型的方法
构建检索增强生成(RAG)流水线的一个流行框架是 LangChain。该框架促进了 LLM 调用与检索系统的链接,并能够有针对性地从外部来源检索信息。
RAG 技术上是如何工作的?
1. 查询嵌入(Embedding)
第一步,使用嵌入模型将用户请求转换为向量。例如,使用 OpenAI 的 text-embedding-ada-002 或 Hugging Face 的 all-MiniLM-L6-v2。
这是必要的,因为向量数据库不搜索传统文本,而是计算数值表示(嵌入)之间的语义相似度。通过将用户查询转换为向量,系统不仅可以搜索完全匹配的术语,还能识别内容相似的概念。
2. 在向量数据库中搜索
然后将得到的查询向量与向量数据库进行比较。目的是找到回答问题最相关的信息。
这种相似度搜索使用近似最近邻(ANN)算法执行。此任务中著名的开源工具包括:Meta 的 FAISS(用于大型数据集中的高性能相似度搜索)或 ChromaDB(用于中小型检索任务)。
3. 插入 LLM 上下文
在第三步中,将检索到的文档或文本段落集成到提示词(Prompt)中,以便 LLM 基于此信息生成响应。
4. 生成响应
LLM 现在将接收到的信息与其通用的语言词汇相结合,生成上下文特定的响应。
LangChain 的替代方案是 Hugging Face 的 Transformer 库,它提供了专门开发的 RAG 类。
- ‘RagTokenizer’ 对输入和检索结果进行分词。该类处理用户输入的文本和检索到的文档。
- ‘RagRetriever’ 类执行语义搜索,并从预定义的知识库中检索相关文档。
- ‘RagSequenceForGeneration’ 类获取提供的文档,将其集成到上下文中,并传输给实际的语言模型以生成答案。
4. 微调模型的选项
虽然 RAG 模式的 LLM 使用外部信息进行查询,但通过微调,我们改变了模型权重,使得模型永久存储了新知识。
微调在技术上是如何工作的?
1. 准备训练数据
微调需要高质量的数据集合。该集合由输入和期望的模型响应组成。例如,对于聊天机器人,可以是问答对。对于医疗模型,可以是临床报告或诊断数据。对于法律 AI,可以是法律文本和判决书。
让我们看一个例子:如果我们查看 OpenAI 的文档,会发现这些模型在微调期间使用带有角色(系统、用户、助手)的标准化聊天格式。这些问答对的数据格式为 JSONL,例如:
{"messages": [{"role": "system", "content": "Du bist ein medizinischer Assistent."}, {"role": "user", "content": "Was sind Symptome einer Grippe?"}, {"role": "assistant", "content": "Die häufigsten Symptome einer Grippe sind Fieber, Husten, Muskel- und Gelenkschmerzen."}]}
其他模型使用其他数据格式,例如 CSV、JSON 或 PyTorch 数据集。
2. 选择基础模型
我们可以使用预训练的 LLM 作为起点。这些可以是闭源模型(通过 OpenAI API 的 GPT-3.5 或 GPT-4),也可以是开源模型(如 DeepSeek、LLaMA、Mistral 或 Falcon,或者用于 NLP 任务的 T5 或 FLAN-T5)。
3. 模型训练
微调需要大量的计算能力,因为模型是用新数据训练来更新其权重的。特别是像 GPT-4 或 LLaMA 65B 这样的大型模型,需要强大的 GPU 或 TPU。
为了减少计算工作量,有一些优化方法,如 LoRA(低秩自适应),即只训练少量的额外参数;或 QLoRA(量化 LoRA),即使用量化的模型权重(例如 4-bit)。
4. 模型部署与使用
模型训练完成后,我们可以将其部署在本地,或部署在云平台(如 Hugging Face Model Hub、AWS 或 Azure)上。
5. 什么时候建议使用 RAG?什么时候建议使用微调?
RAG 和微调各有优缺点,因此适用于不同的用例。
RAG 特别适用于内容动态更新或频繁更新的场景。
例如,在常见问题(FAQ)聊天机器人中,需要从不断扩充的知识库中检索信息。定期更新的技术文档也可以使用 RAG 有效集成,无需模型频繁重新训练。
另一点是资源:如果计算能力有限或预算较少,使用 RAG 更合理,因为不需要复杂的训练过程。
另一方面,当需要将模型定制为特定公司或行业时,微调更适用。
通过有针对性的训练,响应质量和风格可以得到提高。例如,LLM 可以生成具有精确术语的医疗报告。
基本规则是:当知识过于庞大或过于动态,无法完全集成到模型中时,使用 RAG;当需要一致的、特定于任务的行为时,微调是更好的选择。
还有 RAFT——结合的魔力
如果我们把两者结合起来会怎样?
这正是 检索增强微调(RAFT) 所做的事情。
首先,模型通过微调补充领域特定知识,以便理解正确的术语和结构。然后,模型通过 RAG 进行扩展,从而能够从外部数据源集成特定且最新的信息。这种结合既确保了深厚的专业知识,又具备了实时适应能力。
企业会同时利用这两种方法的优势。
结语
RAG 和微调这两种方法都以不同的方式扩展了基础 LLM 的能力。
微调使模型专门针对特定领域,而 RAG 则为模型配备了外部知识。这两种方法并不互斥,可以在混合方法中结合使用。从计算成本来看,微调前期资源密集,但运行效率高;而 RAG 前期资源需求较少,但在使用过程中消耗更多。
当知识过于庞大或动态,无法直接集成到模型中时,RAG 是理想选择。当需要针对特定任务进行稳定且持续的优化时,微调是更好的选择。这两种方法各有独特且互补的用途,使它们成为 AI 应用中的宝贵工具。
在我的 Substack 上,我会定期撰写有关科技、Python、数据科学、机器学习和 AI 领域已发表文章的总结。如果你感兴趣,欢迎查看或订阅。





