Skip to content
🔗 分享本题
查看我的学习进度 →
RAG 与 SFT 选型图解

🧠 图解记忆: RAG 注入可更新知识,SFT 塑造稳定行为;先判断要改“知道什么”还是“怎么做”。

💡 答案要点

选择决策框架:

维度RAGSFT
知识时效性✅ 高(可实时更新)❌ 低(需重新训练)
知识容量✅ 海量知识❌ 受模型参数限制
推理成本❌ 每次检索有延迟✅ 推理更快
定制风格△ 受 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 控制回复风格。"

📚 参考:OpenAI Fine-tuning Guide(微调 vs RAG 选型)