Agent 为什么总是“记得不够”或“记得太多”

随着大语言模型逐渐从问答工具发展为能够长期协作的 AI Agent,记忆系统正在成为智能体架构中的关键组成部分。

一个真正能够长期工作的 Agent,需要记住用户过去表达过的偏好,理解之前完成过的任务,并在未来遇到相关问题时重新调用这些信息。对于企业级 Agent 来说,它还需要记住项目文档、历史工单、代码提交、业务规则和用户反馈。

但在实际系统中,Agent Memory 经常陷入两个相反的问题。

第一种情况是,系统检索到的信息太少。Agent 只看到了局部内容,没有找到解决问题所需要的关键事实。第二种情况是,系统检索到的信息太多。大量相似但不重要的内容被放入 LLM 上下文,增加了推理成本,也让模型更容易忽略真正有价值的信息。

很多系统采用固定 Top-k 检索来解决这个问题。每次收到用户问题之后,系统都会从数据库中返回固定数量的结果,例如 Top-5 或 Top-20,再将这些结果交给模型处理。

这种方法容易实现,也适合简单的信息查询。但对于长期记忆和复杂任务来说,固定 Top-k 往往不是一个理想方案。

真正需要解决的问题不是“每次返回多少条结果”,而是: 当前这个问题究竟需要多少信息?Agent 什么时候应该继续搜索?什么时候已经获得了足够证据?

固定 Top-k 检索的问题

传统 RAG 系统通常按照固定流程运行。用户提出问题后,系统会将问题转换成向量,从知识库中找到相似内容,最后把检索结果拼接到提示词中。

这种方式默认所有问题都具有相似的信息需求。但真实世界中的问题复杂程度差异很大。

如果用户只是询问一个简单事实,一次检索可能已经足够。此时继续加入更多内容,只会增加上下文长度和成本。

但如果问题涉及多个角色、多个事件以及不同时间节点,那么一次检索很可能不够。Agent 可能需要先确认某个人物是谁,再追踪这个人物参与过的事件,最后根据事件发生顺序完成回答。

固定 Top-k 无法根据问题动态调整检索策略。Top-k 设置得太小,关键线索可能被遗漏;设置得太大,又会把大量无关内容带入上下文。

更重要的是,固定检索不会主动判断“信息是否已经足够”。即使模型已经获得了可以回答问题的证据,系统也可能继续注入更多内容;即使当前信息明显不足,系统也可能直接要求模型生成答案。

从一次检索到多轮检索

LoCoMo-Refined 关注的核心问题,就是如何让 Agent 从固定检索走向动态检索。

在多轮检索流程中,Agent 不再一次性返回所有内容,而是根据当前结果决定下一步动作。

第一轮检索通常用于寻找初始线索。Agent 可能从中识别出新的实体、人物或事件,然后基于这些线索生成下一次查询。第二轮检索进一步补充信息,系统再根据新结果判断是否需要继续搜索。

这个过程可以被理解为一种逐步展开的检索过程: Agent 先提出初始问题,随后获得一组候选记忆。它分析这些记忆中出现的实体和关系,再生成更具体的后续查询。如果后续结果补充了新的关键事实,Agent 就继续更新当前上下文;如果系统认为证据已经足够,则结束检索并开始回答。

相比一次性检索,多轮检索的价值在于它允许系统根据实际任务动态分配检索预算。

Agent 如何判断“信息已经足够”

检索不是越多越好。

如果 Agent 过早停止,答案可能缺少关键依据;如果 Agent 长时间搜索,则可能引入无关内容,甚至让模型在多个相互冲突的结果之间产生混淆。

因此,一个更成熟的 Agent Memory 系统需要具备停止判断能力。

系统可以从多个方面评估当前上下文是否足够。首先,它需要判断问题中的关键实体是否已经被覆盖。其次,需要检查不同来源的信息是否相互印证。再次,还需要判断继续检索是否可能带来新的有效信息。

如果新增检索内容只是重复已经获得的事实,或者无法明显提升回答质量,系统就应该停止搜索。

这也是 Adaptive Retrieval 和传统 RAG 的重要区别。Adaptive Retrieval 并不是简单地增加检索次数,而是让 Agent 学会控制检索过程。

对 Agent Memory 的影响

LoCoMo-Refined 所体现的一个重要趋势,是 Agent Memory 正在从“内容存储”发展为“信息管理”。

过去,人们通常把 Memory 理解为一个数据库。系统负责保存历史信息,模型负责读取这些内容。

但对于长期运行的 Agent 来说,Memory 需要承担更多职责。它不仅要决定什么内容被保存,还要决定什么内容应该被优先检索、是否需要继续搜索,以及如何将多个记忆组合起来支持当前任务。

换句话说,Agent Memory 不只是回答“我以前见过什么”,还要回答:

  • 这条信息是否与当前任务有关;
  • 它是否已经过时;
  • 是否需要寻找更多证据;
  • 它应该如何与其他记忆结合;
  • 使用它是否真的能够提升任务表现。

对 LLM Agent 开发的实践启示

对于正在构建 AI Agent 的开发团队来说,固定 Top-k 可以作为起点,但不应该成为最终方案。

系统可以根据问题复杂度动态调整检索轮数。对于简单问题,可以减少检索步骤;对于涉及多个实体和时间关系的问题,则需要支持多轮查询。

同时,检索过程应该记录每一轮查询的原因和结果。这样不仅有助于调试,也可以帮助系统判断哪些检索路径有效,哪些路径只是增加了噪声。

此外,评估 Agent Memory 时不能只看最终答案是否正确,还需要关注检索轮数、上下文长度、Token 成本和无关内容比例。

一个真正高质量的 Agent Memory 系统,不应该通过无限扩大上下文来解决问题,而应该学会在有限资源下找到真正有价值的信息。

固定 Top-k 检索适合简单场景,但很难满足复杂任务和长期交互的需求。

MemoraX AI 关注的方向,是让 AI Agent 从固定检索走向动态检索,让系统能够根据任务需要自主决定搜索多少、搜索什么,以及什么时候停止。

未来的 Agent Memory 不应该只是拥有更多记忆,而应该更准确地管理记忆。