GAM: Hierarchical Graph-based Agentic Memory for LLM Agents
论文阅读:GAM——面向 LLM Agent 的层次图式记忆
论文标题:GAM: Hierarchical Graph-based Agentic Memory for LLM Agents
作者:Zhaofen Wu, Hanrong Zhang, Fulin Lin, Wujiang Xu, Xinran Xu, Yankai Chen, Henry Peng Zou, Shaowen Chen, Weizhi Zhang, Xue Liu, Philip S. Yu, Hongwei Wang
发表位置:ACL 2026,64th Annual Meeting of the Association for Computational Linguistics,Volume 1: Long Papers
arXiv:2604.12285
ACL Anthology:https://aclanthology.org/2026.acl-long.1600/
论文 PDF:https://aclanthology.org/2026.acl-long.1600.pdf
arXiv:https://arxiv.org/abs/2604.12285
主题:LLM Agent Memory、Hierarchical Graph Memory、Memory Consolidation、Long-term Interaction
核心问题:如何让 Agent 一方面快速记录不断到来的新对话,另一方面又避免这些临时、噪声性的内容不断修改长期记忆,从而导致 Memory Loss 和 Semantic Drift?
1. Introduction:长期记忆中的“快速写入”和“稳定保存”冲突
对于需要长期与用户交互的 LLM Agent 来说,Memory 不只是“把过去的对话存下来”这么简单。
一个长期记忆系统同时需要满足两个看起来相互冲突的要求:
-
快速感知新的上下文。
用户每说一句话,Agent 都希望尽快记录下来,否则可能遗漏实时信息。 -
稳定保存已经形成的长期知识。
旧的知识又不能因为一次临时对话、一句歧义表达或者短暂的话题变化而被不断修改。
论文将这一矛盾归纳为:
rapid context perception 与 stable knowledge retention 之间的冲突。
作者认为,现有 Memory 架构大体可以分成两类,但两边各自存在问题。
1.1 Unified Stream-based Memory:更新快,但容易污染
Generative Agents、MemGPT、MemoryOS、Mem0 等方法通常允许新信息持续进入 Memory。
这种设计具有很高的 plasticity(可塑性):新信息能够快速被记录下来。
但问题在于,新信息会直接进入或者影响长期 Memory。
换句话说:
新对话
↓
直接更新长期 Memory
↓
旧记忆不断受到新信息影响
如果新内容只是临时信息、噪声或者歧义表达,就可能导致作者所说的 Memory Contamination(记忆污染)。
论文重点讨论其中两种现象。
Memory Loss
随着 Memory 不断更新,一些原本重要的旧节点可能逐渐失去连接,最终在结构上被孤立,从而变得难以检索。
Semantic Drift
不同主题的内容可能因为持续更新而被错误连接或混合。
论文 Figure 1 使用 Apple 举例:
- Apple 可以表示水果;
- Apple 也可以表示科技公司。
如果 Memory 在对话流中不断直接合并信息,两种语义可能逐渐被混到一起。

【Figure 1。该图比较 Unified Stream-based Memory 与 GAM:前者让新 Memory 直接作用于统一记忆结构,可能产生 Memory Loss 和 Semantic Drift;GAM 则先进行 Episodic Buffering,随后在语义边界处进行 Consolidation。】
1.2 Discrete Structured Memory:稳定,但不够灵活
另一类方案采用更加明确的结构化 Memory,例如:
- GraphRAG
- StructRAG
- LightRAG
- G-Memory
这些方法通过知识图谱或者结构化索引保存知识。
优点是长期知识更加稳定,并且适合多跳推理。
但作者认为,这类静态或者高度结构化的 Memory 在长对话场景中又面临另一个问题:
对话不是由一个个事先定义好的离散状态组成的,而是一个持续演化的 narrative flow(叙事流)。
例如一次长对话中,一个主题可能逐渐转向另一个主题,很难提前规定:
状态 A
↓
状态 B
↓
状态 C
因此,过于刚性的结构虽然有利于知识保存,却可能无法实时表示自然对话中的细粒度变化。
2. GAM 的核心思想:不要边听边改长期记忆
GAM 的核心思路可以概括为一句话:
把 Memory Encoding 和 Memory Consolidation 分开。
也就是说:
用户正在说话
↓
先记录到局部临时 Memory
↓
继续积累当前语义完整的对话片段
↓
检测到话题 / 语义边界
↓
再进行一次 Consolidation
↓
写入长期全局 Memory
这里的关键不是“不更新长期 Memory”,而是:
不要让每一条刚出现的信息都立即修改长期 Memory。
作者将这一设计类比为记忆巩固过程。
正在发生的对话首先进入一个局部 Event Progression Graph(事件演进图,EPG)。
只有当系统发现当前这段叙事已经形成了较完整的语义单元之后,才进入 Semantic Consolidation State(语义巩固状态),把这一段内容整理后写入全局 Topic Associative Network(主题关联网络,TAN)。
因此 GAM 的整体 Memory 生命周期实际上存在两个状态:
Episodic Buffering State
↓
检测 Semantic Boundary
↓
Semantic Consolidation State
↓
写入长期 Memory
↓
重新进入 Episodic Buffering State
作者希望通过这种方式同时获得:
- Event Graph 的快速写入能力;
- Topic Graph 的长期稳定性。
3. Methodology
GAM 的完整框架由三个核心部分组成:
- Hierarchical Graph Memory
- State-Based Memory Consolidation
- Graph-Guided Multi-Factor Retrieval

【Figure 2。该图是 GAM 的整体架构图:左侧负责在 Episodic Buffering 与 Semantic Consolidation 两个状态之间切换;中间是由 Topic Associative Network、Active Event Graph 和 Archived Event Graph 组成的层次记忆;右侧负责 Graph-Guided Retrieval 与 Multi-Factor Ranking。】
整个流程可以简化为:
Dialogue
↓
Event Progression Graph
↓
Semantic Boundary Detection
↓
Semantic Consolidation
↓
Topic Associative Network
↕
Archived Event Graphs
↓
Graph-Guided Retrieval
↓
Top-K Memories
↓
LLM
下面分别展开。
3.1 Hierarchical Graph Memory:两层图 + 历史归档
GAM 的 Memory 并不是一张单独的 Graph。
作者将整个 Memory 表示为:
H_t = {
G_topic,
G_event,
S_arch,
E_cross
}
其中:
| 组件 | 含义 | 职责 |
|---|---|---|
G_topic |
Topic Associative Network | 保存长期、抽象的语义主题 |
G_event |
当前 Event Progression Graph | 保存正在进行的局部对话 |
S_arch |
Archived History Set | 保存已经结束并完成 Consolidation 的 Event Graph |
E_cross |
Cross-layer Edges | 将 Topic 节点连接到对应的历史 Event Graph |
这四个组件之间承担不同的职责。
3.1.1 Topic Associative Network:长期语义层
全局长期 Memory 是:
G_topic = (V_topic, E_topic)
其中 Topic Node 代表历史交互中形成的高层语义主题。
例如长期对话可能逐渐形成:
工作
旅行
喜欢的食物
家庭
技术
这些主题之间并不是互相独立的。
E_topic 用来描述不同 Topic 之间的语义关系。
作者没有单纯使用 embedding cosine similarity 来确定 Topic Graph 的边,而是通过 LLM 判断两个 Memory 之间的关系。
论文给出的关系类型包括:
support
contradict
coreference
causal
semantic
unrelated
同时 LLM 输出一个 0 到 1 的 confidence,作为边权重。
这一步计算相对昂贵,因此作者特意没有让它在每轮对话中执行。
它只发生在 Semantic Consolidation 阶段。
也就是说:
实时对话阶段:
追求快速写入
Consolidation 阶段:
允许使用更昂贵的 LLM Semantic Scorer
这样就把实时交互延迟与复杂结构构建分开了。
3.1.2 Event Progression Graph:局部叙事层
正在发生的对话则保存在:
G_event = (V_event, E_event)
这里每一个 Event Node 都对应一个原子交互单元,例如:
- 用户的一句话;
- Agent 的一句回复。
Event Graph 的边主要描述这些事件之间的:
- 时间顺序;
- 因果关系;
- 对话演进关系。
与 Topic Graph 不同,Event Graph 的重点并不是复杂语义组织,而是:
能够快速 append 新事件。
例如:
用户:我下周准备去东京
↓
Agent:准备待几天?
↓
用户:大概五天
↓
用户:主要想去秋叶原
这些内容首先进入当前 Event Graph。
在这个过程中,并不会因为每增加一句话就重构整个长期 Topic Graph。
3.1.3 Archived Event Graph:摘要之外,还保留原始证据
当一个 Event Graph 完成 Consolidation 后,GAM 并不会把它删除。
它会进入:
S_arch
也就是 Archived History Set。
同时,系统建立 E_cross:
Topic Node
↓ E_cross
Archived Event Graph
↓
具体历史 utterance / event
因此 Topic Graph 更像一个高层索引。
真正的历史细节仍然存在 Archived Event Graph 中。
这一点很重要,因为如果系统只保存 Topic Summary,那么 Consolidation 本身就可能造成信息损失。
GAM 的设计是:
高层主题负责定位,底层 Event Graph 保留详细证据。
3.2 State-Based Memory Consolidation:什么时候才应该写入长期记忆?
有了双层结构后,接下来的问题是:
Event Graph 应该什么时候 Consolidate 到 Topic Graph?
一个简单做法是:
每 256 tokens Consolidate 一次
或者:
每 5 轮 Consolidate 一次
又或者:
每个 Session 结束后 Consolidate
但作者认为这些都是人为设定的边界。
它们并不一定对应真正的语义边界。
因此 GAM 使用 Semantic-Event-Triggered State Switching。
3.2.1 两种 Memory State
系统是一个简单的两状态有限状态机。
状态一:Episodic Buffering State
这是默认状态。
新的 utterance 被不断加入 G_event:
new utterance
↓
event node
↓
append to G_event
高频写入只发生在局部 Event Graph 中。
因此作者把这一层称作一个 write isolation buffer(写隔离缓冲区)。
它的作用是:
在还不知道这些新内容是否值得成为长期知识之前,不让它们直接影响全局 Memory。
状态二:Semantic Consolidation State
当系统判断当前语义单元已经结束时,才进入 Semantic Consolidation State。
此时:
G_event
↓
Aggregate
↓
Summarize
↓
生成 Topic Node
↓
连接 Topic Graph
↓
Archive 原 Event Graph
Consolidation 完成后:
active G_event = empty
然后开始记录下一段 narrative。
3.2.2 Semantic Boundary Detection:用 LLM 判断话题是否发生变化
论文理论上用一个 semantic divergence threshold 描述边界:
semantic divergence > threshold
→ consolidate
但作者指出,显式计算高维语义距离不仅昂贵,而且容易受到词汇变化影响。
实际实现中,他们并没有真的计算某个固定 graph-distance threshold。
而是让一个 LLM 执行 topic boundary discrimination(主题边界判别)。
其任务本质上是:
输入:一段对话
输出:哪些位置发生了 topic change
论文附录给出的 Prompt 要求模型返回:
{
"boundaries": [...]
}
因此论文公式中的阈值,在真实实现中实际上由 Prompt 的语义判断充当 proxy。
Boundary Detector 不是每轮都调用
如果每收到一句用户消息都调用一次 LLM 判断 topic change,会产生很高的维护成本。
因此 GAM 设置一个最多 2048 tokens 的 Episodic Buffer。
Semantic Boundary Detector 只在稀疏的 maintenance event 中触发,例如:
- session end;
- 自然交互暂停;
- buffer overflow。
如果 Buffer 达到容量上限,也会强制执行一次 Consolidation Check。
因此:
每一轮:
只更新 Event Graph
少量维护时刻:
调用 LLM 检测 Semantic Boundary
作者通过这种设计避免让边界检测成为高频在线开销。
3.2.3 Consolidation:不是只生成一个摘要
当检测到 Topic Boundary 后,当前 Event Graph 会被转化成新的 Semantic Node:
v_new = {
c_sum,
c_raw
}
其中有两份内容。
c_sum
LLM 生成的结构化语义表示,包括:
- keywords;
- concise summary。
它用于高层 Topic Retrieval 和主题关联。
c_raw
当前 Event Graph 中所有原始文本内容的拼接。
它用于保留细节。
因此 GAM 并没有采用:
原始对话
↓
Summary
↓
删除原始信息
而是同时保存:
┌─ c_sum:高层语义索引
Event Graph ──┤
└─ c_raw:原始细节
这实际上是在抽象推理与细节恢复之间做平衡。
3.2.4 新 Topic 如何连接到旧 Topic?
新 Topic Node 产生以后,还需要决定它应该连接到 Topic Graph 中哪些旧节点。
如果让 LLM 将新节点与整个 Topic Graph 中所有节点逐个比较,Memory 越大,成本就越高。
因此作者使用一个 coarse-to-fine(粗到细) 流程。
第一步:
c_sum
↓
Embedding Retrieval
↓
Top-5 Topic Nodes
先通过向量相似度,只找出最相关的 5 个 Topic。
第二步,再对这 5 个候选调用 LLM Semantic Scorer:
new topic
+
candidate topic
↓
LLM
↓
relation type + confidence
只有 confidence 超过阈值的关系才真正加入 Topic Graph。
于是昂贵的 LLM 判断不需要在整个 Graph 上执行。
3.2.5 Consolidation 完成后的状态变化
整个过程结束后:
Current Event Graph
↓
生成 Semantic Node
↓
加入 Topic Graph
↓
建立 Topic Relations
↓
原 Event Graph → S_arch
↓
Topic Node --E_cross--> Archived Event Graph
↓
清空 Active Event Graph
↓
重新进入 Episodic Buffering
因此这里的“长期 Memory”实际上包含两个层级:
高层:
Topic Associative Network
负责主题组织和快速定位
低层:
Archived Event Progression Graph
负责保存具体的历史证据
3.3 Graph-Guided Multi-Factor Retrieval
Memory 存储被分成两层以后,Inference 又出现了新的问题:
Query 到来时,怎样从 Topic Graph 一直找到具体的历史 Event?
GAM 的 Retrieval 使用一个从上到下的:
expand-and-drill
流程。
一共分成三步。
3.3.1 第一步:Semantic Anchoring
首先用 Query 在 Topic Graph 中做向量检索:
Query
↓
Vector Retrieval
↓
Top-k Topic Nodes
这些节点称为 Semantic Anchors。
但作者并没有只保留直接命中的 Topic。
对于每一个命中的 Topic,还会沿着 E_topic 扩展它的一阶邻居。
因此:
直接相关 Topic
+
其一阶关联 Topic
↓
V_anchor
这样做的原因是,一些历史信息与 Query 可能没有直接 lexical match,但它们通过 Topic Graph 的语义关系仍然相关。
3.3.2 第二步:Structural Drill-Down
得到高层 Topic 后,再通过 E_cross 往下钻。
Topic
↓
E_cross
↓
Archived Event Graph
↓
Event Nodes
最终获得一批原始 episodic memory candidates。
因此 Retrieval 并不是直接在所有历史 utterance 上执行 Flat Vector Search,而是:
Query
↓
Topic-level Retrieval
↓
Graph Expansion
↓
Cross-layer Link
↓
Archived Event Graph
↓
具体 Event
Topic Graph 在这里承担了一个缩小搜索范围的作用。
3.3.3 第三步:Multi-Factor Re-ranking
取得候选 Event 后,作者首先使用 Cross-Encoder 计算语义相关性:
P_sem(v | q)
然后加入三个额外信号:
time
confidence
role
最终分数可以用普通文本表示为:
Score(v, q)
=
SemanticScore
× TimeBoost
× ConfidenceBoost
× RoleBoost
这些 Boost 并不是无条件使用,而是只有对应 indicator 被激活时才生效。
Temporal Factor
当 Query 涉及:
什么时候
之前
之后
上周
去年
等时间信息时,与时间条件一致的 Memory 会被提高优先级。
实验设置中:
beta_time = 1.4
Confidence Factor
具有更高可信度的 Memory 获得一定提升。
默认:
beta_conf = 1.2
Role Factor
这一项主要针对多人对话。
例如 Query 问:
Alice 当时说了什么?
那么来自 Alice 的 Memory 应该比其他 speaker 的内容获得更高权重。
默认:
beta_role = 1.4
论文认为,这对于 LongDialQA 这种频繁发生 speaker switching 的场景尤其重要。
为什么不是直接把这些信号相加?
论文采用的设计仍然以 Semantic Score 为基础。
简单理解就是:
语义上完全不相关的 Memory
不会仅仅因为时间或者 speaker 对得上
就突然变成最高优先级。
Time、Role、Confidence 是在 Semantic Relevance 基础上的调制信号,而不是替代语义检索。
3.4 GAM 的完整运行流程
把上述模块串起来,GAM 的 Memory 生命周期可以总结为:
1. 用户产生新的 utterance
2. 将 utterance 转换成 Event Node
3. Append 到当前 Event Progression Graph
4. 平时不修改 Topic Associative Network
5. 到达 sparse maintenance event 时:
调用 LLM Boundary Detector
6. 如果没有发生 Semantic Boundary:
继续 Buffering
7. 如果发生 Semantic Boundary:
将当前 Event Graph Consolidate
8. LLM 生成:
- keywords
- summary
- raw content representation
9. Vector Retrieval 找 Top-5 旧 Topic
10. LLM 判断 Topic Relation + Confidence
11. 更新 Topic Associative Network
12. 当前 Event Graph 进入 Archive
13. 建立 Topic ↔ Archived Event Graph 的 Cross-layer Link
14. 清空 Active Event Graph
15. 新 Query 到来时:
Topic Localization
→ Graph Expansion
→ Drill Down
→ Multi-Factor Re-ranking
→ Top-K Memories
16. 将 Retrieved Memory 加入 Prompt
17. Backbone LLM 生成答案
这篇论文的方法重点因此不在训练新的 LLM,而是在 Inference-time Memory Architecture。
GAM 本身是 training-free 的,不需要对 Backbone LLM 做额外 Fine-tuning。
4. Experiments
4.1 数据集
论文使用两个长期 Memory Benchmark。
LoCoMo
LoCoMo 是长程开放域对话数据集。
论文沿用 MemoryOS 和 Mem0 的实验方式,重点评价前四种问题:
- Multi-Hop
- Temporal
- Open-Domain
- Single-Hop
指标为:
- F1
- BLEU-1
LongDialQA
LongDialQA 来自多角色长对话,包括:
- The Big Bang Theory
- Friends
- The Office
与普通两人对话相比,这种场景中存在大量 speaker switching,因此特别适合测试 Memory 是否会把不同人物的信息混在一起。
4.2 Baselines
论文比较了三类 Memory System。
| 类型 | 方法 |
|---|---|
| Heuristic / Compression | MemoryBank、ReadAgent |
| Unified Stream / OS-style Memory | MemGPT、MemoryOS、Mem0 |
| Self-evolving Memory | A-Mem |
| Graph-based World Model | AriGraph,放在附录单独比较 |
其中 Mem0 是实验中的强 Baseline。
4.3 Backbone 与实现
作者测试了四种 Backbone:
- Llama-3.2-3B-Instruct
- Qwen2.5-7B-Instruct
- Qwen2.5-14B-Instruct
- GPT-4o-mini
所有模型直接使用 Instruct 版本。
没有额外训练 GAM。
检索实现包括:
Embedding:
all-MiniLM-L6-v2
Re-ranker:
cross-encoder/ms-marco-MiniLM-L-6-v2
Retrieval Size:
k = 10
beta_time = 1.4
beta_role = 1.4
beta_conf = 1.2
实验使用 NVIDIA RTX 4090 GPU。
5. Main Results
5.1 LoCoMo
下面保留 GAM 与实验中最强的 Mem0 的平均结果,可以更直接地观察 GAM 在不同 Backbone 下是否稳定有效。
| Backbone | Method | Avg F1 | Avg BLEU-1 |
|---|---|---|---|
| Llama 3.2-3B | Mem0 | 30.11 | 21.28 |
| Llama 3.2-3B | GAM | 36.27 | 30.02 |
| Qwen 2.5-7B | Mem0 | 35.38 | 28.67 |
| Qwen 2.5-7B | GAM | 40.00 | 32.99 |
| Qwen 2.5-14B | Mem0 | 37.29 | 30.66 |
| Qwen 2.5-14B | GAM | 40.38 | 33.55 |
| GPT-4o-mini | Mem0 | 40.37 | 31.45 |
| GPT-4o-mini | GAM | 43.14 | 36.48 |
可以看到,GAM 在四个 Backbone 上都取得了更高的平均 F1。
其中 Qwen2.5-7B 上:
Mem0: 35.38
GAM: 40.00
但并不是每一个子任务 GAM 都最好
论文也明确指出了一个例外。
在 GPT-4o-mini 的 Temporal Task 上:
Mem0: 56.42 F1
GAM: 51.96 F1
作者认为,一个可能原因是:
对于本身具有较强 temporal reasoning 和 context utilization 能力的模型,直接检索原始历史轨迹有时可以更完整地保留精确时间线索;而 GAM 在 Consolidation 中进行了一定程度的压缩。
这也是 GAM 的结构化 Consolidation 带来的一个实际权衡。
Open-Domain 同样相对困难
论文还指出 Open-Domain 是 GAM 相对困难的一类任务。
因为这种问题往往:
- 很难定位到一个明确 Topic;
- 没有明显的时间约束;
- 没有明显的 Role 约束。
而 GAM 的 Retrieval 强项恰恰是利用 Topic、Temporal 和 Role 等结构收缩搜索范围。
因此对于需要非常宽泛 thematic coverage 的问题,这种结构化 pruning 的收益会减弱。
5.2 LongDialQA
LongDialQA 的平均结果如下。
| Backbone | Method | F1 | BLEU-1 |
|---|---|---|---|
| Llama 3.2-3B | Mem0 | 6.85 | 5.75 |
| Llama 3.2-3B | GAM | 7.36 | 6.85 |
| Qwen 2.5-7B | Mem0 | 10.27 | 9.91 |
| Qwen 2.5-7B | GAM | 12.55 | 12.43 |
| Qwen 2.5-14B | Mem0 | 11.48 | 10.94 |
| Qwen 2.5-14B | GAM | 11.86 | 11.66 |
| GPT-4o-mini | Mem0 | 10.90 | 9.84 |
| GPT-4o-mini | GAM | 11.18 | 10.14 |
其中在 Qwen2.5-7B 上提升较明显:
Mem0 F1: 10.27
GAM F1: 12.55
论文进一步报告,与 MemoryOS 的 6.76 相比,GAM 的 12.55 高约 86%。
作者认为,多层结构以及 Role-Centric Retrieval 能够减少复杂多人叙事中不同 speaker 信息之间的干扰。
同时,在较小的模型上,这种外部结构化 Memory 也能够在一定程度上弥补模型自身上下文处理能力的不足。
6. Ablation Study
作者在 Qwen2.5-7B + LoCoMo 上分别移除四个组件:
- TAN:Topic Associative Network
- EPG:Event Progression Graph
- SSM:Semantic-Event-Triggered State Switching Mechanism
- MFR:Multi-Factor Retrieval
结果如下:
| Variant | Avg F1 | BLEU-1 |
|---|---|---|
| w/o TAN | 35.07 | 29.00 |
| w/o MFR | 35.94 | 29.28 |
| w/o SSM | 32.58 | 26.13 |
| w/o EPG | 25.06 | 20.76 |
| GAM | 40.00 | 32.99 |
6.1 Event Progression Graph 的影响最大
移除 EPG 后:
40.00 → 25.06
是所有 Ablation 中下降最大的。
这说明只建立高层 Topic Memory,而不显式保留事件的局部演进结构,会明显损害长程推理。
特别是涉及 chronological information 的问题,需要保留事件之间的顺序关系。
6.2 State Switching 同样很重要
去掉 SSM 后:
40.00 → 32.58
说明仅仅设计两层 Graph 还不够。
GAM 的另一个关键点在于:
什么时候把 Local Memory 写入 Global Memory。
如果没有 Semantic-Event-Triggered Switching,那么 encoding 与 consolidation 又重新混在一起,无法实现论文想要的 write isolation。
6.3 Topic Graph 和 Multi-Factor Retrieval 也有独立贡献
移除 TAN:
40.00 → 35.07
移除 MFR:
40.00 → 35.94
说明:
- 高层 Topic Organization;
- Time / Role / Confidence 等 Retrieval Signal;
都对最终结果有贡献。
但从 Ablation 幅度来看,EPG 和 State Switching 对整体框架的影响尤其明显。
7. Semantic Boundary 真的比固定切块更好吗?
因为 GAM 的核心设计依赖 Semantic Boundary,所以论文专门比较了不同 Memory Partition 策略。
包括:
- Fixed Window 256 tokens
- Fixed Window 512 tokens
- Fixed Turns k=3
- Fixed Turns k=5
- Session-based
- Semantic-Event-Triggered GAM
平均结果如下:
| Partition Strategy | Avg F1 | BLEU-1 |
|---|---|---|
| Fixed Window 256 | 34.23 | 28.38 |
| Fixed Window 512 | 36.28 | 30.20 |
| Session-based | 36.59 | 29.82 |
| Fixed Turns k=3 | 35.84 | 29.31 |
| Fixed Turns k=5 | 35.32 | 28.14 |
| Semantic Boundary(GAM) | 40.00 | 32.99 |
结果说明:
什么时候 Consolidate,本身就是 Memory System 的一个重要设计变量。
固定 Token 数存在一个明显问题:
一个完整语义单元
可能刚好在 256 tokens 中间被切开
固定 Turn 数也存在相同问题。
Session-based 虽然更加自然,但一次 Session 中仍然可能经历多个 Topic。
因此:
Session Boundary
!=
Semantic Boundary
GAM 的动态边界可以识别一个 Session 内更细粒度的话题转移。
在 Temporal Task 上,这种差异尤其明显:
最佳 heuristic baseline: 44.12
GAM: 48.97
8. Boundary Detector 出错怎么办?
既然 GAM 的 State Switching 依赖 LLM 判断 Topic Boundary,一个自然的问题是:
如果 Boundary Detection 判断错了,整个系统是否会崩?
作者在附录专门进行了 Noise Injection 实验。
模拟三类错误:
Miss
真正发生 Topic Change,但是 Detector 没发现。
Shift
检测到了边界,但是位置提前或者延后最多两轮。
Extra
本来没有边界,却额外插入了一个错误 Boundary。
作者将 Noise Ratio 从:
0.0 → 0.4
逐渐增加。
即使在 eta = 0.4 的严重噪声下:
GAM F1 = 38.60
仍然高于:
Fixed Window 256 = 34.23
Session-based = 36.59
因此论文认为,GAM 的性能并不依赖完美的 Topic Segmentation。
一个原因是即使某次切分出现误差,之后仍然存在:
Topic Graph
+
Semantic Edges
+
Cross-layer Links
可以把相关信息重新关联起来。
9. Retrieval Size:Memory 不是检索得越多越好
作者还研究了 Retrieval Size k。
实验范围:
k = 5 ~ 40
性能在:
k = 10
附近达到峰值。
之后继续增加 Retrieved Memory,性能反而停滞或者下降。
原因是过大的 Retrieval Set 会引入更多无关信息。
论文发现 Temporal Task 对这种噪声尤其敏感,因为时间推理需要一个较集中、精确的上下文。
因此最终采用:
k = 10
这也说明:
长期 Memory Retrieval 的目标不是尽量多地找回过去,而是找到尽可能相关的过去。
10. Multi-Factor Retrieval 的参数敏感性
作者将:
beta_role
beta_time
beta_conf
分别从 1.0 调整到 2.0。
整体 Average F1 曲线比较稳定。
最终选择:
beta_role = 1.4
beta_time = 1.4
beta_conf = 1.2
其中 Role Factor 在 1.4 附近表现最好。
如果 Role Weight 继续增大到 1.6 以上,性能可能略有下降。
因为过度强调 speaker identity 也可能过滤掉:
其他人物谈论目标人物时产生的重要上下文。
Temporal Factor 也表现出类似的权衡:
- 更大的 Temporal Weight 有利于时间问题;
- 但可能使 Retrieval Scope 过窄,从而影响 Open-Domain 问题。
因此 Multi-Factor Retrieval 并不是“某个信号越强越好”。
11. Efficiency Analysis
图结构 Memory 很容易让人担心计算成本。
论文因此比较了 Query Time 的:
- Token Consumption;
- Inference Latency;
- F1。
| Method | Tokens / Query | Time | F1 |
|---|---|---|---|
| A-Mem | 4221.12 | 2.21 s | 24.20 |
| MemoryOS | 3400.41 | 154.22 s | 28.86 |
| Mem0 | 1533.94 | 0.51 s | 35.38 |
| GAM | 1370.18 | 0.80 s | 40.00 |
GAM 并不是延迟最低的。
Mem0:
0.51 s
GAM:
0.80 s
但 GAM 使用的 Query Token 最少:
1370.18 tokens/query
相较 Mem0 约减少 11%。
同时 F1:
Mem0 = 35.38
GAM = 40.00
因此作者强调的是 Accuracy、Token Cost 和 Latency 之间的整体 Trade-off,而不是单纯追求最低延迟。
12. 为什么 Graph 越来越大,却不一定导致 Query Cost 同比例增加?
随着长期交互不断进行:
Event Nodes ↑
Topic Nodes ↑
Graph Edges ↑
Memory Graph 本身当然会越来越大。
但 GAM 并不会在 Query 阶段遍历整张 Graph。
其查询过程始终是:
Query
↓
Topic-level Retrieval
↓
少量 Topic
↓
邻居 Expansion
↓
Cross-layer Drill Down
↓
少量 Event Graph
也就是说,Topic Layer 本身承担了一次 Search Space Pruning。
作者在长期扩展实验中观察到,Graph Edge 数量虽然持续增长,但 Query Token Count 和 Latency 的增长相对有限。
因此 GAM 的设计重点并不是阻止 Memory 本身增长,而是:
避免每一次 Query 都对完整长期 Memory 做全量处理。
13. 从方法结构看 GAM 的核心设计
综合整篇论文,GAM 并不是单纯提出“用 Graph 存 Memory”。
Graph Memory 本身已有大量相关工作。
论文真正组合起来的关键机制是以下三层。
第一层:Storage Separation
正在发生的事件
→ Event Progression Graph
已经巩固的知识
→ Topic Associative Network
解决实时更新与稳定 Memory 之间的冲突。
第二层:Semantic Consolidation
不是每 N tokens
不是每 N turns
不是每 Session
而是在 Semantic Boundary 上 Consolidate
决定什么时候允许局部 Memory 修改全局结构。
第三层:Hierarchical Retrieval
Topic Localization
→ Graph Expansion
→ Archived Event Drill-down
→ Multi-Factor Ranking
解决两层存储被拆开后,Inference 时怎样重新找到具体证据的问题。
因此整个框架形成:
Encoding
↓
Local Event Graph
↓
Semantic Boundary
↓
Consolidation
↓
Global Topic Graph
↓
Cross-layer Index
↓
Archived Event Evidence
↓
Graph-guided Retrieval
14. Limitations
论文明确指出,目前 GAM 最大的限制是:
当前系统本质上仍然是 Text-only Memory。
现有 Topic Node 和 Event Node 都基于文本。
因此无法直接处理真实 Agent 场景中的:
- image;
- video;
- audio;
- acoustic cues;
- visual context。
例如真实长期交互中,Agent 可能需要记住:
用户之前展示过的一张图片
视频中出现的人物
某段语音中的语气变化
当前 GAM 无法原生表示这些信息。
论文虽然在附录通过 MovieChat-1K 的 dense video captions 做了一个代理实验,但这里使用的仍然是将视觉内容转化成文本 Caption 后再交给 GAM,并不是原生 Multimodal Memory。
因此作者没有宣称当前框架已经具备真正的 Multimodal Memory 能力。
15. Future Work
作者提出的主要未来方向也是 Multimodal Memory。
未来可以把当前文本节点扩展为:
Semantic Summary
+
Visual Feature
+
Audio Feature
+
其他 modality-specific representation
Semantic Boundary Detection 也可以从当前的:
lexical topic change
进一步扩展为:
visual semantic shift
audio semantic shift
multimodal semantic shift
最终形成能够同时处理:
- text;
- image;
- video;
- audio;
的 Native Multimodal Memory。
16. Ethical Considerations
论文还专门讨论了 Persistent Memory Agent 带来的安全与隐私问题。
16.1 并不是用户说的所有东西都应该进入长期 Memory
长期 Agent 可能接收到:
- 私人信息;
- 身份信息;
- 敏感对话。
这些内容不应该自动永久保存。
GAM 本身没有解决隐私过滤问题。
但作者指出,Semantic Consolidation 阶段提供了一个天然的 intervention point:
Episodic Buffer
↓
Privacy / Retention Filter
↓
Semantic Consolidation
↓
Long-term Memory
也就是说,可以在信息真正进入 Topic Graph 之前进行隐私检查。
16.2 用户应该能够控制 Memory
由于 GAM 中 Memory 以:
Topic Node
Event Graph
Cross-layer Edge
等显式结构存在,因此理论上可以进行:
- Inspection;
- Selective Deletion;
- Freezing;
- Branch-level Pruning。
作者强调,这种结构并不自动保证最终产品一定会提供这些能力,但相比完全不透明的内部表示,它为实现这些控制提供了更加明确的结构基础。
16.3 错误 Memory 仍然可能形成
LLM Summary 可能出错。
Semantic Relation 也可能连错。
因此 Agent 可能逐渐形成对用户的不准确长期认知。
Graph Memory 的一个潜在优势是:
删除错误 Topic Node
删除错误 Edge
调整 Confidence
可以在局部修复,而不一定需要重新训练整个模型。
但作者也明确表示,这些只能看作 safety primitives,而不是完整的安全解决方案。
真实部署仍然需要:
- Auditing;
- User Consent;
- Privacy Control;
- Interface Design。
17. 总结
GAM 研究的是长期 Agent Memory 中一个非常具体的矛盾:
新信息必须快速进入系统
VS
长期记忆不能被每条新信息不断扰动
传统 Unified Stream Memory 通常直接让新信息进入统一 Memory,因此虽然更新方便,却容易出现:
- Memory Loss;
- Semantic Drift;
- Memory Contamination。
而过于静态的 Structured Memory 又难以表示自然对话中不断演化的 Narrative。
GAM 的解决方式是将 Memory Lifecycle 分成两个阶段:
Episodic Buffering
↓
Semantic Boundary
↓
Semantic Consolidation
存储结构则分为:
Event Progression Graph
+
Topic Associative Network
+
Archived Event Graphs
+
Cross-layer Links
Event Graph 负责快速记录当前对话;
Topic Graph 负责稳定保存高层长期知识;
Archived Event Graph 保留原始历史证据;
Cross-layer Link 将高层 Topic 与底层 Evidence 联系起来。
当 Query 到来时,再通过:
Topic Localization
→ Neighbor Expansion
→ Event Graph Drill-down
→ Semantic + Time + Confidence + Role Re-ranking
恢复最终 Memory。
实验中,GAM 在 LoCoMo 与 LongDialQA 上,在 Llama 3.2-3B、Qwen2.5-7B、Qwen2.5-14B 和 GPT-4o-mini 等不同 Backbone 下取得了稳定的平均性能优势。
Ablation 进一步显示,Event Progression Graph 与 Semantic-Event-Triggered State Switching 对整体效果尤其重要:
Full GAM 40.00 F1
w/o TAN 35.07
w/o MFR 35.94
w/o SSM 32.58
w/o EPG 25.06
因此这篇论文最终强调的并不是单纯“把 Memory 做成 Graph”,而是:
通过局部 Event Memory、全局 Topic Memory,以及语义事件触发的 Consolidation,将实时 Encoding 与长期 Memory 更新显式解耦,再利用跨层 Graph Retrieval 将两者重新连接起来。
参考
-
Wu, Zhaofen, et al. GAM: Hierarchical Graph-based Agentic Memory for LLM Agents. Proceedings of the 64th Annual Meeting of the Association for Computational Linguistics (ACL 2026), Volume 1: Long Papers, pp. 34647–34664.
https://aclanthology.org/2026.acl-long.1600/ -
arXiv:2604.12285
https://arxiv.org/abs/2604.12285 -
Maharana et al. LoCoMo: Evaluating Very Long-Term Conversational Memory of LLM Agents.
-
Kim et al. LongDialQA.
-
Chhikara et al. Mem0: Building Production-Ready AI Agents with Scalable Long-Term Memory.
-
Kang et al. MemoryOS.
-
Xu et al. A-Mem.

浙公网安备 33010602011771号