Chapter 12 · 知识冲突与上下文优先
模型权重里的事实可能过时;但当用户给它新事实时,它经常仍坚持旧的——这是知识冲突。
Item 33:用 Context-Aware Decoding 强化上下文权重
解码时直接放大"用了 context vs 没用 context"的差。
核心
CAD(arXiv:2305.14739):解码时同时计算 (p(y \mid \text{context, x})) 和 (p(y \mid x)),输出 logits 取前者比后者放大的方向。等价于 PMI 强化,可显著提升 ConflictQA 跟随率。
Things to Remember
- 自部署模型可直接接 CAD;闭源模型用 prompt-level 替代。
- 与 RAG 联用收益最大。
- 副作用:常识性问题可能因上下文压制被错误改答——需场景判断。
Item 34:显式声明 "trust context over your memory"
当 prompt 与权重冲突时,明确告诉它信谁。
核心
Anthropic / OpenAI 推荐的 system prompt 模式:在 RAG 场景显式写 "如果上下文与你的训练知识冲突,请相信上下文"。这条单行规则能把 ConflictQA 跟随率从 60% 推到 85%+。
Things to Remember
- RAG system prompt 必含 trust-context 子句。
- 同时要求 cite + abstain:找不到则说 "未找到"。
- 避免在 RAG prompt 里同时写 "use your knowledge if needed",会冲突。
Item 35:让模型必须列出"我用了哪条上下文"
可审计 = 可调试。
核心
不仅要 cite,还要让模型在最终输出里附一份"我用了哪几条 chunk"清单。这能在事后排查"它是不是漏看了某条",也能让你在评估时直接打分"该用没用 / 不该用滥用"。
Things to Remember
- 输出 Schema 加
used_chunks: int[]字段。 - 监控 unused_critical_chunks 比例——它直接对应 Lost in the Middle。
- 这一字段是你日后改 RAG / rerank 的最重要信号。