智能体agent要真正好用,光会"聊天"还不够,还得会"记住你"。
当前的大模型LLM是"无状态"的,每次对话都是独立的计算,记不住之前说过什么。为了解决这个问题,借鉴了人类记忆系统,agent引入了完整的记忆机制。
今天聊聊agent的记忆系统的设计:从人类记忆的启发,到为何需要记忆,再到四种记忆类型和四个核心操作。
从人类记忆说起
人类的大脑是怎么记忆的?认知心理学研究发现,我们的记忆分成好几个层次。
感觉记忆:时间超短,0.5到3秒,容量巨大但一闪而过。比如你扫一眼房间,能记住大概摆放了什么,但几秒钟就忘了。
工作记忆:只能维持15到30秒,容量也小,一次只能记7±2个项目。比如你默背一个电话号码,打完就忘了。
长期记忆:能存一辈子,容量几乎无限。它又分两种:程序性记忆是技能和习惯,比如骑自行车、打字;陈述性记忆是能用语言表达的知识,比如"巴黎是法国首都"或"昨天吃了什么"。
人类记忆的形成要经过几个阶段:编码就是把信息转成可存储的形式,存储就是保存起来,检索就是需要时找出来,整合是从短期变长期,还有遗忘就是删掉不重要的。
智能体的记忆系统,就是借鉴了这个设计。
为何智能体需要记忆?
当前的大模型虽然强大,但"无状态"的设计带来了几个问题:
上下文丢失:对话长了早期的重要信息可能因为上下文窗口限制而丢失,你前面说过的关键信息后面它就想不起来了。
个性化缺失:Agent记不住你的偏好、习惯或特殊需求,每次都要重新告诉它你想要什么,挺烦人的。
学习能力受限:没法从过往的成功或失败中学习改进,同样的坑踩一次又一次。
一致性问题:多轮对话中可能前后矛盾,前面说的A后面又说成B。
这些问题,都源于一个事实:模型本身不会"记住"什么。
记忆系统架构设计
为了解决这些问题,我们需要给Agent装上一个完整的记忆系统。
记忆类型层是核心,区分成四种记忆:
WorkingMemory是工作记忆,存临时信息;
EpisodicMemory是情景记忆,存具体事件;
SemanticMemory是语义记忆,存抽象知识;
PerceptualMemory是感知记忆,存多模态数据。
四种记忆,各司其职
工作记忆 (WorkingMemory) : Agent的"短期记忆",存当前对话的上下文信息。容量有限,比如默认50条,会话结束就自动清理。纯内存存储,访问速度极快,但系统重启后会丢失。就像你在纸上临时记几个要点,用完就扔了。
情景记忆 (EpisodicMemory) : 就不一样了,负责长期存储具体事件和交互经历。比如"用户昨天问过Python性能优化",这就是一个情景记忆。它包含完整的上下文,支持按时间或主题回顾。用了SQLite+Qdrant的混合存储:SQLite管结构化数据和复杂查询,Qdrant管高效的向量检索。
语义记忆 (SemanticMemory) : 更抽象一点,存的是知识、概念和规则。比如用户的偏好("喜欢简洁的代码风格")、长期指令("每次输出都要加注释")、领域知识点。这部分是Agent形成"知识体系"和进行关联推理的核心,用了Neo4j图数据库+Qdrant向量数据库的混合架构,既能快速语义检索,又能用知识图谱进行复杂关系推理。
感知记忆 (PerceptualMemory) : 处理图像、音频这些多模态信息,支持跨模态检索,生命周期根据重要性和存储空间动态管理。
记忆的四个核心操作
光有存储还不够,还得有管理机制。记忆系统有四个核心操作:
add-添加:把感知信息编码成记忆,不是简单存个文本,而是添加丰富的上下文信息——什么时候存的、谁存的、有多重要、是什么类型的,这些信息在后续检索时很关键。
search-检索:从大量记忆中找到最相关的内容,涉及语义理解、相关性计算、结果排序等多个环节。比如你问"Python性能优化",系统能找到你昨天讨论过这个话题的情景记忆。
forget-遗忘:这个最有意思,模拟人类的选择性遗忘,支持三种策略:基于重要性的策略删掉不重要的记忆,基于时间的策略删掉过时的记忆,基于容量的策略在存储快满时删掉最不重要的。不是存得越多越好,定期"清理内存"才能保持高效。
consolidate-整合:借鉴神经科学的记忆固化概念,把短期记忆变成长期记忆。比如重要性超过0.7的工作记忆自动转成情景记忆,重要的情景记忆可以进一步提炼成语义记忆。整个过程是自动的,系统会智能判断哪些记忆值得长期保存。
总结
通过这套记忆机制,智能体真正具备了类人的记忆能力。下次Agent再跟你聊天,它能记得你喜欢什么、讨厌什么,就像老朋友一样。
如果这篇文章对你有帮助,可以帮忙点个赞,让更多人看到!
欢迎关注公众号: "蝈蝈的AI笔记" ,里面有更多AI实用技巧和避坑指南。
资料来源: