Skip to content

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 的最重要信号。

Effective LLM