跳到主要内容

幽灵上下文:矛盾信念如何破坏长期运行智能体的记忆

· 阅读需 12 分钟
Tian Pan
Software Engineer

你的智能体已经与同一个用户对话了400次。六个月前她说她更喜欢Python。三个月前她的团队迁移到了Go。上周她提到了一个新的TypeScript项目。这三个事实现在都存储在你的向量数据库中——语义相似、时间顺序混乱、权重相同。下次她请求代码帮助时,你的智能体会同时检索到这三条信息,将这团矛盾的内容递给模型,然后自信地为TypeScript场景生成带有Go风格的Python代码。

这就是幽灵上下文:那些永不消亡的过时信念,与其替代版本一同被检索,悄然腐蚀智能体的推理。

这个问题之所以被低估,是因为它不会产生可见错误。智能体不会崩溃,不会拒绝响应,而是生成流畅自信的输出——只是微妙地、代价高昂地出错了。

为什么记忆系统在设计之初就存在缺陷

大多数智能体记忆实现都是纯追加日志:新事实到达,嵌入后存储。旧事实无限期保留索引。检索发生时,向量搜索返回语义上接近的内容——这经常同时包含当前世界状态和智能体三个月前所相信的一切。

核心技术缺陷在于向量存储对时间是盲目的。一月存储的事实和四月存储的事实占据同一个扁平命名空间。相似性搜索没有"哪个事实取代了哪个"的概念。模型以同等置信度、同等位置在检索上下文窗口中看到"用户偏好Python"和"用户使用Go",只能猜测该信任哪一个。

实证研究证实了这种损害。LongMemEval(ICLR 2025)对跨多轮聊天历史500个问题的智能体进行了基准测试,发现商业助手在需要知识更新的任务上准确率下降30%——正是用户偏好或事实已经改变但旧记录仍然存在的情况。失败不是检索找不到信息,而是检索找到了太多信息,包括过时版本。

一个相关问题称为前摄干扰,更难修复。研究表明,随着记忆中矛盾更新数量的增加,检索准确率呈对数线性下降——即使正确的最新答案位于上下文末尾。模型参数量是影响鲁棒性的主要因素,上下文窗口长度并非如此。你无法通过扩展窗口来解决这个问题。

幽灵上下文产生的四种失败模式

理解矛盾记忆降低智能体行为的具体方式,有助于确定优先修复的内容。

更新盲区。 智能体根据旧版本事实行动,因为它与新版本一同被检索,而模型给旧条目赋予了更高权重。这在用户偏好、环境配置以及任何逐渐变化而非明确更新的内容中尤为常见。用户说过一次"我转到Go了";Python却存在于15条旧记忆中。

自我强化错误。 智能体错误得出"API端点X在参数Y下失败"后,将该信念添加到记忆中。未来的检索会浮现该信念,智能体因此回避该代码路径,再也不会收集任何能推翻它的新证据。错误变得举足轻重。

过度泛化溢出。 来自一个上下文的经验教训会污染另一个上下文中的推理。"Python在ML推理中速度慢"(对某些工作负载而言大体正确)会在用户询问用于网络服务的Python时被检索,而彼处并不相关。嵌入空间中的上下文相似性并不意味着与当前任务的上下文相关性。

多轮复合失败。 在多智能体系统中,失败会叠加。智能体A检索矛盾记忆并产生略有偏差的输出。智能体B将该输出作为输入,检索更多记忆,并基于被污染的前提做出决策。当错误浮现时,它已经经历了三个推理步骤,极难追溯到最初的矛盾检索。

生产系统的不同之处

处理好这个问题的系统有一个共同洞见:问题主要在写入路径,而非读取路径。大多数团队投资于检索优化——更好的嵌入、混合搜索、重排序。矛盾问题在这之前就已产生。

每个事实的时间归属。 Zep的Graphiti引擎等生产记忆系统为每个存储事实分配一组时间戳:事件在现实中发生的时间、被摄取的时间以及最后更新的时间。图边带有valid-fromvalid-until属性。当用户说"我搬到上海了",系统记录新事实并明确将"我住在北京"标记为时间上已被取代——它仍然在图中,但被标记为无效。检索会遵守这些标记。Zep发布的基准测试结果显示,在知识更新任务上比纯向量基线提高了18.5%的准确率,延迟降低90%,因为检索索引更小、更一致。

写入时的显式矛盾检测。 Mem0的图增强变体不是追加每条新记忆,而是在提交事实前运行冲突检测步骤。系统判断传入事实是否应触发ADD(不存在语义等价项)、UPDATE(补充现有记忆)、DELETE(新事实矛盾并替换旧事实)或NOOP。这将记忆写入操作从被动日志转变为主动策展步骤。系统自我编辑,而非积累矛盾。

差异化时间衰减。 并非所有事实都具有相同的新鲜度特征。偏好变化缓慢;行动和事件很快变得无关紧要。A-MAC这一智能体记忆评估框架,用特定类型的衰减率来建模:偏好每日衰减0.5%(可持续数年),事实每日衰减2%,行动每日衰减20%。在检索时,使用指数移动平均的近期加权会降低旧记忆相对于近期记忆的评分。这并不解决结构性问题——矛盾事实仍在存储中——但它在不删除可能仍具真实相关性的旧信息的前提下,将检索概率分布偏向近期。

双缓冲记忆晋升。 新形成的记忆不应直接进入长期存储并获得永久检索资格。TiMem的方法将新记忆放置在"热"缓冲区中经历一个试用期,在此期间进行重新验证、与现有记忆去重,以及重要性评分,然后才晋升。这会在矛盾传播之前捕获它们,并过滤掉本会污染长期存储的低质量提取内容。

时序知识图谱作为正确的基础原语

加载中…
Let's stay in touch and Follow me for more thoughts and updates