大家好,我是Ai学习的老章
推荐一篇硬核文章,原文:https://www.philschmid.de/memory-in-agents
想象一下,你雇用了一位才华横溢的同事。他们拥有出色的推理、写作和研究能力。但有一个问题:每天他们都会忘记自己曾经做过、学过或说过的所有事情。这就是当今大多数 Agents 的现实。它们功能强大,但本质上是_无状态的_ 。我们在推理和工具使用方面取得了重大进展,但 Agents 记住过往交互、偏好和所学技能的能力仍然严重未被探索。
核心挑战:上下文工程
LLMs 的上下文窗口是一个(目前)有限的空间,用于处理信息。这个窗口的带宽有限,但应包含正确的信息和工具,以正确的格式,在正确的时间呈现,以便 LLM 完成任务。这现在被称为上下文工程[1] 。
这是一种微妙的平衡——“在上下文窗口中填入恰好足够的信息以推进下一步”——AK[2]。上下文太少,智能体就会失败;上下文过多或无关,成本上升,性能反而下降,而“正确信息”最强大的来源正是智能体自身的记忆/上下文。
由于 LLMs 本身不具备记忆,必须刻意在架构中设计。与人类认知类似,智能体记忆在两个不同的时间线上运作:短期记忆和长期记忆。
智能体记忆的优势
集成记忆功能为无状态模型解锁了原本无法实现的能力:
深度个性化:智能体能够记住用户偏好、历史记录和风格,为每位用户量身定制交互体验。
连续性:任务可以在多个会话间暂停和恢复,而不会丢失上下文。
效率提升:智能体避免重复询问相同信息,并从过去的成功与失败中学习。
复杂推理:通过回忆相关事实和经验,智能体能够解决需要历史背景的多步骤问题。
短期记忆就是上下文窗口本身。它保存系统指令、最近的对话历史、当前指令、工具定义以及与当前交互相关的信息。它“快速”且对当前任务至关重要,但具有临时性且容量有限。每次调用 LLM 时都需要重新构建。
长期记忆(持久存储)
长期记忆需要外部数据存储,例如向量数据库。它使智能体能够在多个会话和长时间跨度内存储并回忆信息。真正的个性化与“学习”就发生在这里。当相关或有帮助时,长期记忆会被加载到短期记忆中。长期记忆可细分为三种类型:
语义记忆(“是什么”):保留关于用户的具体事实、概念和结构化知识,例如用户更喜欢 Python 而非 JavaScript。
情景记忆(“何时”与“何地”):通过查看过去的交互,回忆过去的事件或具体经历以完成任务。可将其视为少样本示例,但使用的是真实数据。
程序记忆(“如何做”):智能体执行任务时内化的规则与指令,例如“ 我的摘要太长了 ”,如果多位用户反馈要求更简洁。
智能体写入或更新记忆的策略有两种: 方式_和_时机 :在交互过程中显式进行,或通过后台进程隐式完成。
智能体在回应用户之前或之后,通过工具使用,将记忆更新作为持续交互流程的直接组成部分。
✅优点:记忆实时更新,可立即用于后续轮次;对用户透明。
❌缺点:可能增加响应延迟;将记忆逻辑与智能体逻辑混合,提高复杂度;智能体需同时处理记忆任务与响应生成。
隐式记忆更新
记忆更新作为独立的异步后台进程发生。代理先响应用户,后台任务稍后再更新记忆。
✅优点:不会增加面向用户的响应延迟;将记忆逻辑与核心代理逻辑分离;让代理专注于响应。
❌缺点:记忆不会立即更新,可能在短时间内导致上下文过时;需要仔细设计后台进程何时以及如何频繁运行。
记忆挑战
在智能体中成功实现记忆颇具挑战,因为记忆本身没有直接的反馈或影响。记忆系统会随时间增长,你必须在性能、准确性和运营成本之间找到恰当平衡,以解决以下关键问题:
相关性问题:检索到不相关或过时的记忆会引入噪声,并可能降低实际任务的性能。实现高精确度至关重要。
记忆膨胀:一个什么都记得的智能体最终什么都记不住。存储每一个细节会导致“膨胀”,使搜索成本更高,导航更困难。
遗忘的必要性:信息的价值会衰减。依据过时的偏好或事实行动会变得不可靠。设计驱逐策略以丢弃噪声,同时又不误删关键的长上下文,非常困难。
单是挑战本身就已难以解决,而记忆系统的延迟反馈回路更让难度倍增。有缺陷的记忆策略所带来的后果往往要过一段时间才会显现,使得衡量与迭代变得异常困难。
工具与未来
如今,一个日益壮大的工具生态系统正让记忆功能的实现变得更加轻松。LangGraph[3]、Mem0[4]、Zep[5]、ADK[6]、Letta[7] 等框架都提供了易于集成的方案,用于添加记忆功能。我用 mem0 和 Google Gemini 2.5 Flash 构建了一个聊天机器人[8] ,用来记住用户偏好。
当下的工具已解决了存储与检索数据的核心工程难题。但若要迈向真正的未来,我们需要的不仅是更大的硬盘,而是一颗更聪明的大脑。
致谢
本概述通过深入且手动的研究完成,汲取并参考了以下优秀资源的灵感与信息:
Mem0:构建具备可扩展长期记忆的生产级 AI Agent [9]
通过 Memory Export 提升用户体验 [10]
Langgraph 内存文档 [11]
内存:AI 智能体的秘密武器 [12]
构建更智能的 AI 代理:用 Redis 管理短期与长期记忆 [13]
参考资料
上下文工程: https://www.philschmid.de/context-engineering
AK: https://x.com/karpathy/status/1937902205765607626
LangGraph: https://github.com/langchain-ai/langgraph
Mem0: https://github.com/mem0ai/mem0
[5]
Zep: https://github.com/getzep/zep
[6]
ADK: https://github.com/google/adk-python
[7]
Letta: https://github.com/letta-ai/letta
[8]
mem0 和 Google Gemini 2.5 Flash 构建了一个聊天机器人: https://www.philschmid.de/gemini-with-memory
[9]
Mem0:构建具备可扩展长期记忆的生产级 AI Agent: https://mem0.ai/research
[10]
通过 Memory Export 提升用户体验: https://mem0.ai/blog/improving-user-experiences-with-memory-export/
[11]
Langgraph 内存文档: https://langchain-ai.github.io/langgraph/concepts/memory
[12]
内存:AI 智能体的秘密武器: https://decodingml.substack.com/p/memory-the-secret-sauce-of-ai-agents
[13]
构建更智能的 AI 代理:用 Redis 管理短期与长期记忆: https://redis.io/blog/build-smarter-ai-agents-manage-short-term-and-long-term-memory-with-redis/
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.