上下文是一种有限资源
把所有历史都塞进上下文并不会自动提高质量。重复、冲突和过期信息会稀释关键规则。可靠系统需要区分哪些内容必须常驻、哪些可以检索、哪些只能作为低信任参考。
可以把上下文分为四层:
- 系统与项目规则:稳定、优先级最高。
- 任务状态:当前步骤、已完成动作和待解决问题。
- 检索证据:为当前问题按需取回的片段。
- 临时交互:只对本轮有效,完成后可以压缩或丢弃。
冷热记忆
热记忆是当前任务需要频繁访问的信息,应短小、稳定、去重。冷记忆是历史决策、长文档和低频素材,通过索引按需检索。两者之间要有清晰同步和冲突规则。
长期记忆必须记录来源、更新时间和适用范围。没有时间和来源的记忆容易在政策、版本或产品变化后继续误导系统。
检索与排序
检索质量不仅取决于向量相似度。关键词、编号、错误码和产品名通常更适合 BM25;语义问题适合向量检索;生产系统常用混合检索,再通过 rerank 或业务规则排序。
检索结果进入 Prompt 前,应完成:
- 权限过滤。
- 来源与时间过滤。
- 去重和片段合并。
- 长度预算分配。
- 不可信内容隔离。
压缩与 Prompt Caching
压缩不是简单删字,而是保留目标、约束、决策、未解决问题和证据引用。稳定且重复的前缀适合缓存;高度动态、含敏感信息或频繁变化的内容不应为了命中率被错误固定。
一个任务摘要可以采用:
目标:
不可违反约束:
已完成:
当前状态:
关键证据:
未解决:
下一步:失败恢复
上下文丢失或冲突时,不应让系统凭印象继续。恢复流程应重新加载权威规则、验证当前文件或外部状态、比较版本,然后从最近可信检查点继续。
常见误区
- 把聊天历史等同于长期记忆。
- 只做向量检索,忽略关键词与结构化过滤。
- 压缩时删除未解决问题和证据位置。
- 缓存包含用户隐私或高频动态数据的前缀。
- 多个记忆副本冲突时没有真理源。
实战检查清单
- 上下文分层并设置预算。
- 长期记忆有来源、日期和适用范围。
- 检索前执行权限与时效过滤。
- 摘要保留约束、决策和未解决项。
- 缓存只用于稳定、可复用前缀。
- 恢复流程从权威状态重新验证。