Appearance
第 12 课 · 章节直灌 vs 知识库检索
阅读器答疑最核心、也最容易偷懒的一步:知识怎么喂给模型。 直灌简单但天花板低,RAG 麻烦但可控可扩 —— 分清什么时候用哪个。
本课要解决的问题
第 11 课的架构里,能力层最关键的决策是:回答问题时,把 整节正文塞进 prompt(直灌),还是 检索后只给相关片段(RAG)?
这一步选错,后面 token、成本、质量、出处全受影响。
一、两种做法对比
| 章节直灌 | 知识库检索(RAG) | |
|---|---|---|
| 做法 | 按章节 ID 把整节正文拼进 prompt | 切块 + 向量化,按问题检索相关 chunk |
| 实现成本 | 低(拼字符串) | 中(要建库、切块、检索) |
| token | 高,易超窗口 / 被截断 | 低,只塞相关片段 |
| 无关内容 | 多(整节都在) | 少(只取相关) |
| 出处 | 难精确到段 | 可标到章节 / 段落 |
| 可扩展 | 差(跨章问题答不了) | 好(跨章、全库检索) |
一句话: 直灌是「把整本书摊开碰运气」,RAG 是「精准翻到相关那几页」。
二、什么时候直灌「可以」
直灌不是一无是处,内容短且明确聚焦当前位置 时,它更简单:
✅ 用户就问「当前这一段」讲什么 → 直接塞当前段落,不必 RAG
✅ 单章很短(几百字)、问题不跨章 → 可直灌该章
✅ 快速原型验证 → 先直灌跑通,再换 RAG判断法: 要喂的内容 短、且一定相关,直灌够用;否则上 RAG。
三、什么时候必须 RAG
❌ 按章节 ID 拼两节全文(动辄四五千字)→ token 浪费 + 截断 + 答非所问
❌ 跨章节问题(「这个概念在哪几课讲过」)→ 直灌根本覆盖不到
❌ 全教材 / 多教材问答 → 只能检索
❌ 要给精确出处 → 必须 RAG 标来源最常见翻车: 直灌两节正文却叫「智能 Agent」—— 这是 架构偷懒,不是模型能力问题(呼应第 01 课)。
四、RAG 做对的几个关键
| 环节 | 要点 |
|---|---|
| 切块 Chunking | 常见 300~800 字;太大不精准 / 费 token,太小丢上下文 |
| Embedding | 文字转向量,按语义检索(词不同意思近也能找到) |
| 检索数量 | 一般 top 3~5 块 |
| Hybrid 检索 | 关键词 + 语义混合,兼顾精确匹配和语义泛化 |
| Rerank(可选) | 检索后再排序,把最相关的顶上来,提精度 |
| 出处 | 每块记住来自「第 X 节」,答案里带引用 |
教材天然适合 RAG
教材有 结构化章节 —— 天然是切块和标出处的好素材。按「课 / 节 / 知识点」切,检索精准、出处清晰,比通用文档更好做。
五、成本与质量:一笔账
| 方案 | 单次 token | 质量 | 出处 | 跨章 |
|---|---|---|---|---|
| 直灌整节 | 高 | 中(含噪声) | 弱 | ❌ |
| 直灌当前小段 | 低 | 高(若问题就在这段) | 中 | ❌ |
| RAG top 3~5 | 低 | 高 | 强 | ✅ |
决策口诀:
问的就是眼前这一小段 → 直灌当前段落
问的是「书里某处 / 跨章 / 要出处」→ RAG
别用「直灌整节」当默认,它是成本与质量双输本课结论
- 直灌 vs RAG,本质是「摊开碰运气」vs「精准翻页」。
- 直灌只在「内容短且必相关」时可用(当前段落、单短章、原型)。
- 跨章 / 全库 / 要出处 → 必须 RAG。
- RAG 做对: 切块 300~800 字、top 3~5、hybrid、可选 rerank、带出处。
- 教材结构化章节天然适合 RAG,别偷懒直灌整节。
课后自检(3 分钟)
- [ ] 我能判断每个问题该「直灌当前段」还是「RAG 检索」
- [ ] 我没有把「直灌整节」当默认方案
- [ ] 我的 RAG 切块大小、检索数量是有依据设的
- [ ] 跨章 / 要出处的问题我都走 RAG
- [ ] 我的答案带章节引用,便于用户核对
下一课预告
第 13 课 · 从 V1 到 V2 的演进路线 —— 场景篇收尾:一条从最小可用到自主 Agent 的落地路线图。
延伸阅读
© 曹宇春