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 不只是“把过去的对话存下来”这么简单。

一个长期记忆系统同时需要满足两个看起来相互冲突的要求:

  1. 快速感知新的上下文。
    用户每说一句话,Agent 都希望尽快记录下来,否则可能遗漏实时信息。

  2. 稳定保存已经形成的长期知识。
    旧的知识又不能因为一次临时对话、一句歧义表达或者短暂的话题变化而被不断修改。

论文将这一矛盾归纳为:

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 在对话流中不断直接合并信息,两种语义可能逐渐被混到一起。

image

【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 的完整框架由三个核心部分组成:

  1. Hierarchical Graph Memory
  2. State-Based Memory Consolidation
  3. Graph-Guided Multi-Factor Retrieval

image

【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 将两者重新连接起来。


参考

  1. 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/

  2. arXiv:2604.12285
    https://arxiv.org/abs/2604.12285

  3. Maharana et al. LoCoMo: Evaluating Very Long-Term Conversational Memory of LLM Agents.

  4. Kim et al. LongDialQA.

  5. Chhikara et al. Mem0: Building Production-Ready AI Agents with Scalable Long-Term Memory.

  6. Kang et al. MemoryOS.

  7. Xu et al. A-Mem.

posted @ 2026-09-15 10:18  YourF4u1t  阅读(17)  评论(0)    收藏  举报