3 条路线一句话区分
| 路线 | 本质 | 类比 |
|---|---|---|
| RAG | 每次回答前先查资料 | 开卷考试 |
| 微调 | 用你的数据再训练一次模型 | 请家教反复辅导 |
| 长上下文 | 把所有资料直接塞进 prompt | 把教材摆桌上一起看 |
10 个判断维度
| 维度 | RAG | 微调 | 长上下文 |
|---|---|---|---|
| 数据量 | 无限 | 1K-100K 样本 | < 200K tokens |
| 数据更新频率 | 实时 | 训练后固定 | 每次 prompt 现塞 |
| 初始成本 | 中(搭索引擎) | 高(训练 + 调参) | 极低(直接塞) |
| 每次调用成本 | 低 | 低 | 高(token 多) |
| 溯源 / 引用 | ✅ 容易 | ❌ 难 | ✅ 容易 |
| 学风格 / 行话 | ❌ 弱 | ✅ 强 | ⚠️ 一般 |
| 学新事实 | ✅ 容易 | ⚠️ 需大量数据 | ✅ 容易 |
| 幻觉控制 | ✅ 好 | ⚠️ 一般 | ✅ 好 |
| 延迟 | +检索 100ms | +0(同基模) | + 长 prompt 处理 |
| 工程复杂度 | 中 | 高 | 极低 |
决策流程
📍 起点:我想让 LLM 用上"我的数据"
├─ 数据 < 200K tokens 且不常变?
└─ ✅ 长上下文(最简单,先试这个)
├─ 数据量大 + 需要溯源 + 经常更新?
└─ ✅ RAG(90% 场景的答案)
├─ 想改模型的"风格 / 语气 / 输出格式"?
└─ ✅ 微调(LoRA 即可,不用全量)
├─ 学一个新领域的专业术语 + 推理模式?
└─ ✅ 微调 + RAG 组合
└─ 不知道?
└─ 默认 RAG,遇到瓶颈再升级
真实场景对照
✅ RAG 最适合
- 企业知识库问答(员工手册 / 产品文档 / 客户 FAQ)
- 客服机器人(动态产品库存 + 政策)
- 法律检索(按案例库回答)
- 新闻摘要 / 新论文综述
- 个人笔记助手(Obsidian / Notion 接 RAG)
✅ 微调最适合
- 客服调到"公司语气"(比如保持品牌风格)
- 输出严格结构化 JSON(基模做不到的细致格式)
- 医学 / 法律术语的精准使用
- 本地小模型蒸馏(让 7B 接近 GPT-4 水平的某个任务)
- 分类 / 抽取这类有大量标注数据的任务
✅ 长上下文最适合
- 一次性分析一份长文档(合同 / 报告 / 论文)
- 代码库 review(几十 K-几百 K tokens)
- 视频字幕分析(Gemini 1M 上下文)
- Few-shot 学习(10-100 个示例直接 in-context)
- 原型阶段(先用长上下文跑通,规模化时再上 RAG)
常见组合
- RAG + 微调:检索找事实,微调调风格。最常见的"专业 Agent"组合。
- RAG + 长上下文:检索 top-10 文档(每个 5K-10K),全塞 prompt(Gemini 1M)。
- 层次化 RAG:先粗筛 100 → 精排 10 → 重读全文 1。质量比朴素 RAG 高 30-50%。
- Adaptive RAG:先让 LLM 判断"这题要不要查资料",省钱省时。
新手最常见的错误
- ❌ "我要训练个自己的 ChatGPT" → 99% 情况下你想要的是 RAG,不是从头训练或微调
- ❌ 用微调来加新知识 → 效果远不如 RAG,而且更新麻烦
- ❌ RAG 系统不做 reranker → top-k 召回质量决定一切,必加 rerank
- ❌ chunk 切得太大 / 太小 → 经验:300-800 tokens + overlap 50-100,先试再调
- ❌ 不评估 → 用 RAGAS / TruLens / 自己造测试集,没有 eval 等于盲飞
下一步
- 深入 RAG → L4-08: RAG 工程实践
- 深入微调 → L4-05: 微调与 LoRA
- 深入长上下文 → L4-06: 长上下文 Scaling