K8 · 小结与自测
一图回顾
一句话收束:前七章教你搭一个能跑的 RAG,这一章教你搭一个能交出去的 RAG。三道坎对应三个问题——谁能读(权限)、谁在改(更新)、谁能写(投毒)。它们在 demo 阶段全都不存在,上线第一周全都会来。
三条最容易做错的:① 把权限写进提示词而不是检索条件;② 以为「改知识库」是一件事,直到发现换嵌入模型要全库重建;③ 以为守住入库审核就安全了, 而最难防的那种攻击整条链路不报任何错。
要点回顾
| 小节 | 两行版 |
|---|---|
| K8.1 权限 | 提示词不是门——文档进了上下文就等于泄露(已进服务商日志)。检索后过滤会让有权限的答案被无权限文档挤出 top-k,症状是「明明有资料却说没有」。正解是 pre-filter:权限作为候选集边界带进检索。别提示「有 N 条被隐藏」。 |
| K8.2 更新与重建 | 六种变更代价差四五个数量级:增删改单份近乎免费、改元数据不用重嵌、换嵌入模型/改切块要全库重建。向量必须全部来自同一模型(混用是纯噪声)→ 选嵌入模型比选对话模型更该谨慎。重建用双写切换。删除最便宜但最容易出合规事故(两套索引要同步)。 |
| K8.3 投毒 | 检索是自动无人复核的通道,谁能写文档就能写上下文。三种形态:指令注入、检索劫持(塞词抢 top-k,RAG 独有)、答案投毒(改事实,哪里都不报错、最难防)。形态三只能靠盯输出(固定问答回归测试)。强制引用顺手就是投毒防线。 |
综合自测
📝 动手自测0/5
1. 一个实习生问「今年调薪幅度是多少」,机器人答出了只有 HR 能看的 8%。根因最可能是什么?
2. 你的 RAG 突然对一批公开制度问题回答「资料未提及」,但那些制度确实在库里、用户也有权限。最值得先怀疑什么?
3. 关于知识库变更的代价,下面哪个说法是对的?
4. 有人在一份正常的公司文档里,把「住宿标准 600 元」悄悄改成了「6000 元」。这类攻击为什么最难防?
5. 为什么说「别只守入库审核」?
中篇到此为止
八章下来,你把 RAG 从原理走到了生产:
为什么要(K0)→ 怎么找(K1 语义检索、K2 切块、K3 三种找法、K4 重排)→ 怎么答(K5 生成与引用)→ 怎么知道好不好(K6 评测)→ 往哪走(K7 前沿)→ 怎么交出去(K8 上生产)。
接下来两条路:
- 想亲手搭一个 → 附录 · 实战路线:100 行不依赖框架的最小 RAG、选型地图、避坑清单。
- 想让它自己决定查什么、查几轮 → 下篇《智能体是怎么工作的》。K7.2 Agentic RAG 已经推开了那扇门。