微调还是 RAG?一道大模型落地的灵魂选择题
微调还是 RAG?一道大模型落地的灵魂选择题
团队常陷入两个极端:要么无脑微调,要么一切靠 RAG。其实三者定位完全不同。
一、三者定位
| 手段 | 解决什么 | 不动模型权重 | 数据需求 |
|---|---|---|---|
| Prompt | 任务定义、格式、风格 | ✅ | 0 |
| RAG | 注入私有/最新知识 | ✅ | 文档库 |
| Fine-tuning | 改变行为模式、学会特定“腔调/能力” | ❌ | 数百~数千条样本 |
一句话:知识用 RAG,能力用微调,任务用 Prompt。
二、微调到底改了什么
微调是拿你的数据继续训练,让模型“内化”某种模式。常见三类:
- 全量微调(Full FT):改全部参数,成本高、易灾难性遗忘,少用。
- LoRA:只训练低秩适配矩阵,原权重冻结。显存省 3–5 倍,可热插拔多个“技能包”。
- QLoRA:LoRA + 4-bit 量化,消费级显卡也能跑(如 24G 显存训 7B/13B)。
# 用 HuggingFace PEFT 做 LoRA(示意)
peft_config = LoraConfig(
r=8, lora_alpha=16, target_modules=["q_proj","v_proj"],
task_type="CAUSAL_LM")
model = get_peft_model(base_model, peft_config)
三、决策树
Q1: 需要模型"知道"私有/最新事实吗?
├─ 是 → 用 RAG(知识不该写进权重)
└─ 否 → 看 Q2
Q2: 需要改变"怎么想/怎么说"吗?(如特定文体、结构化抽取、拒答边界)
├─ 是 → 数据够(>500条) → 微调(LoRA/QLoRA)
│ 数据少 → 先用 Few-shot Prompt 顶着
└─ 否 → 纯 Prompt 即可
四、什么时候“不要”微调
- 只是想让模型“知道公司手册” → RAG 更准、更可更新、零训练成本。
- 数据只有几十条 → 微调必过拟合,Few-shot 更稳。
- 知识频繁变动(价格、库存)→ 绝对别微调,RAG 才是正道。
五、成本与迭代
- RAG:边际成本≈检索+生成,知识更新只重建索引,分钟级。
- 微调:训练一次几小时~几天,推理仍需部署,更新要重训。适合“半年不变的行为”。
经验:90% 的业务场景,RAG + 好的 Prompt 就够了。把微调留给“真的要改模型能力”的那 10%。
下一篇聊把模型搬回家:模型量化与本地部署。