Memory in the Age of AI Agents: A Survey: Forms, Functions and Dynamics
这篇文章在 formalize 记忆的时候,给了三个层次的工作:形成,演进,召回。Rethinking Memory in AI: Taxonomy, Operations, Topics, and Future 这篇更早的 survey,把记忆的任务分为 6 大类——梳理、索引、更新、删除、检索、整合,也正好对应这个框架里的 形成,演进,召回。
在方法总结上,该图清晰地区隔了各个工作的专门方向。
因为本文切入点在于【异构内容】的记忆工程,所以主要关注工程实现中最常使用的集中存储形态。
另外,这篇 Survey 提到了一些同类工作没有强调,但这一领域非常容易忽视的重要议题——记忆系统到底要记忆什么。不仅仅是用户相关的信息、所见的事实,还有 Agent 的经验。后者之所以重要,也在于它实际上关联了 Agent 如何演化这一重要议题。
下文将介绍一些关心的工作的具体做法。由于这些工作大部分都是 Agent 相关的,纵然现有的 Benchmark 照顾到了这个领域的很多方面,但这上面的指标和实际开发中的适用性仍然不完全是一回事。所以这些方法,都没有对比方法的效果。
MemoryBank: Enhancing Large Language Models with Long-Term Memory
这篇工作比较老了,主要是经常被提及和比较,所以说说。
方法说明
记忆的梳理入库
- 针对每日(session)对话总结两项内容:关键信息摘要和用户画像描述。
- 归总所有用户画像描述,整合成全局用户画像。
- 为每日对话和关键信息摘要打上时间戳及
callback 强度指标(初始为 1)。
记忆的索引和检索
这里无额外工作,用当前用户的话做语义表征查询。
记忆的更新和删除
本文主要讲按照记忆曲线管理记忆。
每当历史记忆被召回,其 callback 强度 +1。记忆是否被丢弃取决于两个因素:callback 强度 S 和上次召回距今的时间差 t。
是否丢弃,取决于 R 是否大于某阈值,其中 R = e^(t/S)。
但这方法的 BUG 也在此:记忆是否被遗忘主要看召回,而召回依赖相似度。一些有用但不常用的东西注定被忘;另一些需知识推理做二度关联的内容,也会因表征不相似无法查到而被忘。
ZEP: A TEMPORAL KNOWLEDGE GRAPH ARCHITECTURE FOR AGENT MEMORY
方法总结
总架构
用原始 message 构建三层记忆库,均以图的形式存储:
- 原始层(Episode)
- 知识图谱层(Semantic)
- 信息图聚类层(Community)
其中原始层、信息图聚类层只与知识图谱层有边,相当于两个二部图贴在一起(也不大准确,知识图谱层内部仍有关系边)。
记忆入库
一次性初始
- 记录进入时间后,原始 message 直接存入
原始层(Episode 图)。 - 利用 LLM 从原始 message 提取实体与关系三元组,标记
有效性和写入时间,存入知识图谱层(Semantic 图);同时将原始信息与实体的连接关系写入原始层。 - 对
知识图谱层进行 LPA 图聚类,生成的 Cluster 作为信息图聚类层的节点。将 Cluster 节点与知识图谱层的关联关系写入信息图聚类层。


