
🧠 图解记忆: RAG 注入可更新知识,SFT 塑造稳定行为;先判断要改“知道什么”还是“怎么做”。
💡 答案要点
选择决策框架:
| 维度 | RAG | SFT |
|---|---|---|
| 知识时效性 | ✅ 高(可实时更新) | ❌ 低(需重新训练) |
| 知识容量 | ✅ 海量知识 | ❌ 受模型参数限制 |
| 推理成本 | ❌ 每次检索有延迟 | ✅ 推理更快 |
| 定制风格 | △ 受 prompt 控制 | ✅ 深度定制 |
| 幻觉问题 | ✅ 答案可溯源 | ❌ 幻觉难以避免 |
| 训练成本 | ✅ 低 | ❌ 高(需要数据) |
选型决策树:
知识是否频繁变化?
├── 是 → RAG(实时更新知识库)
↓ 否
知识是否超出模型参数容量?
├── 是 → RAG(知识库 > 7B参数容量)
↓ 否
需要深度定制回答风格/格式?
├── 是 → SFT(需要大量标注数据)
↓ 否
对答案准确性/可溯源性要求高?
→ RAG(答案可溯源到文档)混合方案(RAG + SFT):
python
# 实际生产环境中,RAG + SFT 混合使用
class HybridRAGWithSFT:
def __init__(self, vector_db, fine_tuned_model):
self.vector_db = vector_db
self.model = fine_tuned_model # 微调过的模型
def answer(self, query):
# 1. RAG 检索相关文档
docs = self.vector_db.search(query, k=5)
# 2. 用微调模型生成(微调模型已学会特定风格)
context = "\n".join([d['content'] for d in docs])
answer = self.model.generate(
prompt=f"基于以下上下文回答:{context}\n\n问题:{query}"
)
return answer
# SFT负责风格(如医疗报告格式)
# RAG负责知识实时性(如最新药品信息)面试话术:
"我的经验是:知识频繁变化选 RAG,需要特定风格选 SFT,数据量小先 RAG,效果不够再 SFT。实际项目里通常是 RAG + SFT 混合——RAG 保证知识实时性,SFT 微调模型输出风格。我在之前的短剧平台项目里就是混合方案:RAG 检索最新剧情热度,SFT 控制回复风格。"