「我们该微调还是用 RAG?」几乎是每个 AI 项目最先面对的架构问题。诚实的答案是:它们解决的是不同的问题 —— 而最好的系统往往两者并用。以下是我们在 Code Language Hub 的判断方式。
一句话区分
RAG 改变模型「知道什么」;微调改变模型「如何表现」。记住这句话,多数决策就变得显而易见。
RAG 做什么
检索增强生成不改动模型本身。在查询时,你从知识库(通常是向量数据库)检索最相关的片段,拼进提示词。模型基于这些提供的上下文作答 —— 因此知识是 外部的、最新的、可引用的。
微调做什么
微调用你的样本调整模型自身的权重,把一种 行为 固化进去 —— 语气、格式、任务模式、领域词汇 —— 于是你不必在每次提示里都描述它。
并排对比
| 维度 | RAG | 微调 |
|---|---|---|
| 最适合 | 会变化的事实与知识 | 风格、格式、任务行为 |
| 时效性 | 随时更新数据库 | 需要重新训练 |
| 引用溯源 | 天然支持 —— 你知道来源 | 非原生支持 |
| 前期成本 | 较低(搭建流程即可) | 较高(需准备数据 + 训练) |
| 单次查询成本 | 较高(提示更长) | 较低(提示更短) |
| 风险 | 检索失误 = 上下文错误 | 过拟合 / 知识过时 |
一个决策框架
按顺序自问:
- 答案是否取决于会变化的知识?(价格、政策、库存、文档)→ RAG。
- 你需要答案可追溯到来源吗? → RAG。
- 你需要一致的语气、格式或窄任务吗? → 微调。
- 提示词是否因重复指令而变长、变贵? → 用 微调 压缩这种行为。
- 以上两者都要? → 两者并用。
常见的生产模式:微调一个小模型,让它始终以你的品牌语气与格式回复,再接上 RAG,让每个答案都以你当前的文档为依据。行为来自微调,事实来自检索。
实例:一个客服智能体
假设你想为一所在线学校做一个 AI 客服智能体。
- RAG 从数据库提供当前的课程列表、时间表与费用 —— 让答案始终最新并注明来源。
- 微调 教会智能体始终用两句简短的话、友好的中英双语语气回复,并把退款问题转交人工。
单靠任一都不够:只有 RAG 而无微调,回答会跑题、格式散乱;只有微调而无 RAG,则会信心满满地报出去年的费用。
在动用两者之前
先从 好的提示词与强基座模型 开始。很多「我们需要微调」的情况,最后其实是「我们需要更清晰的提示 + 几个示例」。当知识必须外部且最新时用 RAG;当行为必须一致且要大规模低成本运行时用微调。
关键要点
- RAG = 知识;微调 = 行为。
- 需要最新、可引用的事实时选 RAG;需要风格、格式与窄任务时选微调。
- 最稳健的生产系统两者并用。
- 先尝试改进提示 —— 那是最便宜的杠杆。
刚接触微调?读我们的分步指南:如何微调小型语言模型。
Raphael Ting