Skip to content

3.4 Fine-tuning vs RAG

这是最常见的选择题之一。什么时候用 RAG,什么时候用 Fine-tuning?

Fine-tuning 是什么

Fine-tuning(微调)是在预训练好的模型基础上,用你自己的数据继续训练,让模型学会你特定领域的知识或风格。

💡 类比:预训练模型是一个博学的通才。Fine-tuning 是送这个通才去参加专业培训班,让他成为某个领域的专家。

Fine-tuning 会改变什么:

  • 模型的"说话方式"和风格
  • 对特定领域术语的理解
  • 按特定格式输出的能力
  • 做特定任务(分类、提取)的准确率

Fine-tuning 不会改变什么:

  • 模型的基础推理能力(上限由基础模型决定)
  • 模型的参数量(模型大小不变)
  • 训练数据截止日期之后的知识

两者的本质区别

维度RAGFine-tuning
知识来源查询外部文档烧录进模型权重
知识更新随时更新文档即可需要重新训练
成本存储 + 检索费用训练费用(可能很贵)+ 存储
适合事实性知识、文档问答风格、格式、固定任务
可解释性能看到参考了哪些文档模型内部,难以解释

什么时候用 RAG

✅ 你需要 AI 回答关于你的业务文档、产品知识库的问题
✅ 信息经常更新(如价格、政策、产品信息)
✅ 需要引用来源("根据第 3 条规定...")
✅ 文档量大,无法全部放进上下文

典型场景:
- 企业内部知识库问答
- 客服机器人(回答产品问题)
- 文档检索助手

什么时候用 Fine-tuning

✅ 你需要 AI 以特定的风格或格式输出(比如你们公司的写作风格)
✅ 你有一个固定的、重复性的任务,想让 AI 更专注于这个任务
✅ 需要减少 Prompt 长度(把例子"烧进"模型,不用每次都放 few-shot)
✅ 特定领域的分类、提取、打标签任务

典型场景:
- 训练模型用特定的语气回复用户
- 从合同里提取特定字段(结构化抽取)
- 代码风格统一(总是生成符合你们团队规范的代码)

⚠️ Fine-tuning 不适合的场景

不要用 Fine-tuning 来"注入知识"
"让模型记住我们所有的产品信息"——这是 RAG 的活,Fine-tuning 做这个效果差、成本高。

不要用 Fine-tuning 解决 Prompt 问题
如果 Prompt 写清楚就能解决,不需要 Fine-tuning。Fine-tuning 成本更高,先把 Prompt 工程做到位。

数据量太少
Fine-tuning 需要足够的高质量训练数据,通常几百到几千个样本起步。


LoRA 和 QLoRA 是什么

这是 Fine-tuning 的两种高效方法,你可能会看到这些词。

传统 Fine-tuning 需要更新模型的所有参数,非常耗资源。

LoRA(Low-Rank Adaptation):只训练模型里的一小部分参数(加了两个小矩阵),但效果接近全量训练。大幅降低训练成本。

QLoRA:在 LoRA 基础上,对模型做量化(用更少的比特存储),进一步降低显存需求。4 张消费级 GPU 也能 Fine-tune 70B 的模型。

你需要了解的程度:知道这些词是"更省钱的 Fine-tuning 方式"就够了,不需要自己实现。


实际决策流程

任务是否需要实时/动态知识?
  ├── 是 → RAG
  └── 否 → 继续判断

任务是否是固定格式/风格的输出?
  ├── 是 → Fine-tuning 可能有用
  └── 否 → 先试 RAG + Prompt Engineering

Prompt Engineering 能解决问题吗?
  ├── 能 → 用 Prompt,不用 Fine-tuning
  └── 不能,且有足够数据 → Fine-tuning


🛠️ 实战练习:场景判断

下面 4 个场景,判断该用 Prompt Engineering、RAG 还是 Fine-tuning:

场景 A:你想让 AI 回答关于你们公司产品的问题,产品文档有 200 页,每个月更新一次。

场景 B:你想让 AI 生成代码时,总是使用你们团队定义的特定函数命名规范(下划线命名、特定前缀等),不管用户怎么描述需求。

场景 C:你想让 AI 在对话中能查询用户的历史订单,回答"我上次买的是什么"这类问题。

场景 D:你想让 AI 把用户上传的合同自动分类成"劳动合同/服务合同/购销合同",要求准确率很高,有 5000 份标注好的历史合同。

参考答案(先自己想,再看)
  • 场景 A → RAG(知识是动态更新的,文档量大)
  • 场景 B → Fine-tuning(固定的风格/格式要求,用 Few-shot Prompt 效果不稳定)
  • 场景 C → Tool Use + RAG(需要实时查询用户数据,不是静态知识库)
  • 场景 D → Fine-tuning(固定任务、有大量标注数据、对准确率要求高)

📌 关键结论

  1. RAG 是外挂知识库,Fine-tuning 是改变模型本身
  2. 业务知识、动态内容用 RAG;风格、格式、固定任务用 Fine-tuning
  3. 先做好 Prompt Engineering,再考虑 Fine-tuning
  4. LoRA/QLoRA 让 Fine-tuning 更实惠,但仍然有成本

下一节:3.5 怎么读 AI 论文

写给自己的 AI 学习地图