Does Memory Need Graphs? A Unified Framework and Empirical Analysis for Long-Term Dialog Memory
论文阅读:Does Memory Need Graphs? —— 长期对话 Memory 真的需要图结构吗?
论文标题:Does Memory Need Graphs? A Unified Framework and Empirical Analysis for Long-Term Dialog Memory
作者:Sen Hu, Yuxiang Wei, Jiaxin Ran, Xueran Han, Zhiyuan Yao, Huacan Wang, Ronghao Chen, Lei Zou
发表位置:ACL 2026 Main Conference,Long Papers
会议:The 64th Annual Meeting of the Association for Computational Linguistics
arXiv:2601.01280
ACL Anthology:https://aclanthology.org/2026.acl-long.1232/
论文 PDF:https://aclanthology.org/2026.acl-long.1232.pdf
arXiv:https://arxiv.org/abs/2601.01280
代码:https://github.com/AvatarMemory/UnifiedMem
主题:Long-Term Dialog Memory、Graph Memory、Memory Retrieval、Memory Index
核心问题:Graph 是否真的能让长期对话 Memory 更好?如果能,收益究竟来自“图”本身,还是来自 Key、Value、更新策略、检索与重排序等底层实现细节?
1. 这篇论文到底在研究什么?
近几年,Graph 在 RAG 和 Agent Memory 中越来越常见。
一个很自然的直觉是:
人类记忆并不是一堆彼此孤立的信息,而是通过人物、事件、时间和语义关系彼此关联起来的,因此 Graph 看起来天然适合 Memory。
很多工作也确实沿着这个方向发展,例如把实体作为节点,把实体之间的关系作为边,然后通过图遍历寻找相关记忆。
但问题在于,已有论文对于 Graph Memory 是否真正有效,并没有得到一致结论。
有些工作发现复杂的 Graph 构建与 Graph Retrieval 能明显提高效果;另一些工作却发现,简单的 Flat Memory、向量数据库甚至轻量结构就可以获得相当甚至更好的结果。
论文认为,这种矛盾很大程度上来自一个问题:
不同论文实际上并没有在同样的系统配置下比较。
例如两个所谓的 Memory 系统可能同时在以下方面不同:
- Memory 到底存什么;
- Key 是原始 Session、Summary、Fact 还是 Entity;
- Value 是原始 Session 还是压缩后的 Memory;
- Embedding Model 不同;
- Memory 是否执行 Update;
- Query 是否 Rewrite;
- top-k 不同;
- 是否使用 Reranker;
- Graph 如何构建;
- Graph Expansion 如何执行;
- 最终回答模型不同。
如果所有变量同时变化,那么最终性能更高,并不能简单归因于“用了 Graph”。
因此,这篇论文并不是提出一个新的 Memory 架构,而是试图做一件更基础的事情:
先建立一套统一的 Memory Framework,把现有方法拆成相同组件,然后在统一设置下逐项控制变量实验。
论文最终想回答的并不是简单的:
Graph 好还是 Flat 好?
而是:
什么样的 Graph 有效?什么样的 Graph 无效?真正影响 Memory 性能的设计到底有哪些?
2. 为什么现有 Memory 方法很难公平比较?
长期对话 Memory 系统通常被论文作为一个完整 Method 提出来。
例如:
- A-Mem;
- Mem0-G;
- Zep;
- RMM;
- LongMemEval 中的 Memory Pipeline。
但这些方法之间并不只存在“Graph / Non-Graph”一个区别。
论文将部分代表性方法拆开之后,可以看到:
| 方法 | Key | Value | Index | Retrieval |
|---|---|---|---|---|
| LongMemEval | Session + Fact | Session | Flat | Query → Key → Value |
| RMM | Topic Summary | Session + Key | Flat | Query → Key → Value → Rerank |
| A-Mem | Session + Keyword + Tag + Summary | Key | Graph | Query → Key → Value |
| Mem0-G | Entity Name + Triple | Triple | Graph | Query → Key → 1-Hop → Value |
| Zep | Entity Summary + Triple + Community | Key | Hierarchical Graph | Query → Key → 1-Hop → Value → Rerank |
因此,当 Mem0-G 与某个 Flat Memory 的最终 QA 指标不同的时候,很难知道差异来自:
- Graph;
- Entity;
- Triple;
- Memory Extraction;
- Retrieval;
- Rerank;
还是这些因素共同造成的。
这正是本文建立 Unified Memory Framework 的原因。
3. Unified Memory Framework
论文把长期对话 Memory 抽象成一个六元组:
<K, V, Q, I, R, A>
分别表示:
| 符号 | 含义 | 作用 |
|---|---|---|
| K | Keys | Memory Unit,用于检索 |
| V | Values | 最终提供给 Answering Model 的证据 |
| Q | Queries | 用于检索的 Query |
| I | Index | Memory 的组织结构 |
| R | Retrieval | 如何从 Index 中检索 Memory |
| A | Answering | 如何根据检索结果生成最终回答 |
从系统流程看,又可以拆成四个阶段:
Dialog
↓
Memory Extraction
↓
Memory Indexing
↓
Memory Retrieval
↓
Question Answering

【Figure 1。该图展示 Unified Memory Framework,包括 Memory Extraction、Memory Indexing、Memory Retrieval,以及 Flat Index 与 Graph Index 两条处理路径。】
Figure 1 是整篇论文最重要的一张图。
论文后面的实验,本质上就是不断固定其中一些组件,再修改另一个组件。
4. Stage I:Memory Extraction
Memory Extraction 的任务,是从原始 Dialog 中产生:
Keys + Values
其中 Key 和 Value 并不是同一个概念。
4.1 Key 是什么?
Key 是系统真正用于检索的 Memory Unit。
论文讨论了几种常见 Key:
- Session;
- Summary;
- Fact / Statement;
- Keyword;
- Tag;
- Entity;
- Triple。
例如一段对话:
User:
我最近准备申请硕士,
同时我奶奶今年 75 岁。
可以从中得到不同形式的 Memory:
Session:
完整原始对话
Summary:
用户正在考虑申请硕士,并提到了 75 岁的奶奶。
Fact:
用户正在考虑申请硕士。
用户的奶奶今年 75 岁。
Keyword:
硕士
奶奶
75岁
Entity:
用户
奶奶
硕士
Triple:
<奶奶, 年龄, 75>
这些信息虽然来源相同,但作为检索 Key 时表现并不一样。
4.2 Value 是什么?
Value 是:
最终真正提供给 Answering Model 的信息。
Key 负责“找到哪里”,Value 负责“最后给模型看什么”。
例如系统可以使用:
Key = Fact
Value = 原始 Session
也就是说:
- 先根据 Fact 检索;
- 找到相关 Fact;
- 根据 Fact 找到对应 Session;
- 把完整 Session 提供给 LLM。
也可以:
Key = Fact
Value = Fact
直接把压缩后的 Memory 提供给 LLM。
两种设计存在明显权衡。
Value = Session
优点:
- 信息丰富;
- 保留完整语境;
- 保留叙事关系。
缺点:
- Token 多;
- 推理成本更高。
Value = Key
优点:
- Memory 更紧凑;
- Token 少;
- 推理成本低。
缺点:
- 容易损失上下文;
- 信息密度取决于 Key 的设计。
这个区别在后面的实验中非常重要。
论文甚至发现:
Graph 在
Value = Session时可能明显优于 Flat,但在Value = Key时反而可能输给 Flat。
因此不能简单地说“Graph Retrieval 更强,所以 QA 一定更强”。
5. Stage II:Memory Index
论文将 Index 主要分为:
Flat Index
Graph Index
5.1 Flat Index
最简单的 Flat Memory 做法是:
每一个 Key
↓
Embedding
↓
Vector Database
Query 到来之后直接进行向量相似度搜索。
但即使都是 Flat Index,Key 的组织方式也有区别。
论文讨论了几种方式。
Separate Organization
每种 Memory 独立存储:
Summary
Fact
Keyword
...
每个 Key 都是单独的向量。
优点是粒度细。
问题是容易产生:
- 信息碎片化;
- 大量重复;
- Key 数量非常多。
5.2 Merge-by-type
同类型的信息进行合并。
例如:
Summary → 一个表示
Facts → 一个表示
Keywords → 一个表示
论文记作:
session,S,F,K
这里:
S = Summary
F = Factual Statements
K = Keywords
5.3 Merge
另一种策略是把来自同一 Session 的派生 Memory 合并:
[S,F,K]
即一个 Session 的:
- Summary;
- Facts;
- Keywords;
共同形成一个检索表示。
论文还测试了一种折中设计:
session,[S,F,K]
也就是:
- 原始 Session 独立作为一个 Key;
- Summary + Fact + Keyword 合并为另一个 Key。
这样既保留原始信息,也获得压缩后的语义描述。
6. Graph Index
Graph Index 的核心区别是:
Key 不再彼此独立,而是通过 Edge 显式连接。
Graph 中的 Node 可以是:
- Entity;
- Sentence;
- Memory Unit;
- Summary;
- Chunk。
Edge 则可以表达:
- Semantic Similarity;
- Entity Relation;
- Part-of;
- Temporal Relation;
- Structural Association。
甚至还可以构建:
Community
↓
Entity
↓
Memory
这样的 Hierarchical Graph。
7. Memory Maintenance:Memory 不只是 Add
传统 RAG 的知识库通常是相对静态的。
但长期对话 Memory 是持续变化的。
例如:
Day 1:
我在北京工作。
Day 100:
我已经搬到上海工作了。
如果 Memory 只是不断 Add,就会同时存在:
工作地点 = 北京
工作地点 = 上海
因此 Memory 系统通常还需要 Maintenance Operations。
论文总结为:
Add
Update
Delete
Noop
Add
新增 Memory。
Update
已有 Memory 与新信息有关,对旧 Memory 进行更新。
Delete
删除旧 Memory。
Noop
当前信息不需要改变 Memory。
论文没有重点分析 Delete,因为已有工作指出,旧的信息未来仍然可能有用。
例如:
我以前在哪里工作?
这时旧 Memory 并不应该被永久删除。
因此论文主要研究:
Add
Update
Noop
对于 Graph 来说,Update 往往对应:
Entity Alignment / Node Merge
Relation Alignment / Edge Merge
8. Stage III:Memory Retrieval
8.1 Flat Retrieval
Flat Memory 的基本流程非常直接:
Query
↓
Embedding
↓
Vector Search
↓
Top-k Keys
↓
Map Key → Value
↓
Context
需要注意的是:
Key 和 Value 通常不是一一对应。
例如多个 Fact 都可能来自同一个 Session。
因此为了最终得到 top-n 个 Value,系统可能需要:
检索 top-k Keys
k > n
然后再进行 Value-Level Reranking。
这也是很多论文容易被忽略但实际非常影响结果的工程细节。
9. Graph Retrieval
Graph Retrieval 通常可以拆成两步:
Initial Activation
↓
Graph Expansion
9.1 Initial Activation
先根据 Query 找到一批 Seed Nodes。
例如:
Query
↓
Embedding
↓
Entity Similarity
↓
Top-k Entities
或者:
Query
↓
Triple Similarity
↓
Top-k Triples
9.2 Graph Expansion
找到 Seed Nodes 后,再沿着 Graph 扩展。
最典型的方法:
1-Hop Expansion
即:
Seed Entity
↓
所有一跳邻居
更复杂的方法还包括:
- BFS;
- Personalized PageRank;
- Structure-aware Expansion;
- Semantic-aware Expansion。
但论文后面的实验发现:
Graph Expansion 并不是天然有收益。
如果扩展之后没有好的 Reranker,大量邻居节点反而会带来噪声。
10. 实验设置
论文主要使用两个 Long-Term Memory Benchmark:
| Dataset | 主要测试内容 |
|---|---|
| LongMemEval | 长对话中的 Retrieval 与 Reasoning |
| HaluMem | Memory Extraction、Memory Update、一致性与 Hallucination |
LongMemEval 包括:
LongMemEval-S
LongMemEval-M
涉及:
- Single Session;
- Multi-Session;
- Preference;
- Knowledge Update;
- Temporal Reasoning;
- Assistant Information 等。
HaluMem 包含大量信息更新,因此尤其适合测试 Memory Update。
由于 HaluMem Long 计算成本较高,本文主要使用:
HaluMem-Medium
10.1 模型配置
论文主要比较两套设置。
Local Deployment
Memory Extraction: LLaMA-3.1-8B
Embedding: Contriever
Answering: LLaMA-3.1-8B
API Service
Memory Extraction: GPT-4o-mini
Embedding: text-embedding-3-small
Answering: GPT-4o / GPT-4o-mini depending on experiment
此外还补充测试了 Qwen3-8B。
LongMemEval QA 使用 GPT-4o 作为 Judge。
HaluMem 使用 GPT-4o-mini Judge,并且论文特别指出:
HaluMem 的评价指标全部基于 LLM-as-Judge。
相比之下,LongMemEval 的 Retrieval Evaluation 有明确的 Ground Truth Relevant Sessions,可以计算 Recall 和 NDCG。
因此作者在很多组件选择实验中更依赖 LongMemEval 的 Retrieval Metric。
11. 实验一:Key 到底应该怎么设计?
作者首先问:
Summary、Fact、Keyword 和原始 Session 应该怎样组合?
LongMemEval 的结果如下:
| Key Design | LME-S R@5 | LME-S R@10 | LME-M R@5 | LME-M R@10 |
|---|---|---|---|---|
| session | 0.9021 | 0.9714 | 0.7112 | 0.8043 |
| session,S,F,K | 0.9379 | 0.9690 | 0.7327 | 0.8521 |
| [session,S,F,K] | 0.9165 | 0.9666 | 0.7184 | 0.8210 |
| session,[S,F,K] | 0.9379 | 0.9833 | 0.7685 | 0.8592 |
| S,F,K | 0.9117 | 0.9618 | 0.6921 | 0.8091 |
| [S,F,K] | 0.9045 | 0.9642 | 0.7064 | 0.8138 |
这里有一个很明显的现象:
只使用原始 Session 并不是最好的。
加入:
Summary
Facts
Keywords
这些 Derived Information 后,Retrieval 通常会提高。
但也不是简单地“全部揉成一个 Embedding”最好。
LongMemEval 中表现最好的设计之一是:
session,[S,F,K]
也就是:
原始 Session 独立保留,同时把 Summary、Fact、Keyword 合并成另一个检索表示。
论文给出的经验结论是:
如果允许保留原始 Session,可以优先考虑
session,[S,F,K];如果不能使用原始 Session,则可以先尝试[S,F,K]。
不过作者也特别强调:
Key Organization 的最佳策略会随 Dataset 改变。
HaluMem 上 Separate Strategy 反而更加稳健。
所以论文并没有声称存在一个适用于所有任务的绝对最优 Key Design。
12. 实验二:Update 和 Noop 到底有没有用?
很多 Memory 系统理论上支持:
Add
Update
Noop
但一些简单的 Add-only Memory 在 Benchmark 上反而表现很好。
因此作者专门控制变量测试:
Add
和:
Add + Update + Noop
结果:
| Key | Operation | Mem-R | Mem-P | MemUpdate-C | QA-C |
|---|---|---|---|---|---|
| S,F,K | Add | 0.7332 | 0.9360 | - | 0.2815 |
| S,F,K | Add/Update/Noop | 0.8069 | 0.8829 | 0.1416 | 0.5134 |
| [S,F,K] | Add | 0.7332 | 0.9360 | - | 0.4785 |
| [S,F,K] | Add/Update/Noop | 0.8057 | 0.8846 | 0.2207 | 0.5861 |
加入 Update 和 Noop 后:
Memory Precision ↓
Memory Recall ↑
QA Accuracy ↑
作者认为 Precision 下降的原因可能是:
Update / Noop 本身也可能判断错误,从而错误修改 Memory。
但 Recall 的提升足够大,最终带来了明显更高的 QA Accuracy。
因此论文结论是:
Update 与 Noop 的确值得在实际 Memory System 中考虑。
附录还进一步去掉 Add,仅允许:
Update + Noop
结果 QA-C 从:
0.4800
下降到:
0.3754
说明 Add 依然是不可替代的基础操作。
13. 实验三:Graph 应该怎么构建?
这是整篇论文最关键的一组实验之一。
作者设计了三种 Graph。
13.1 SimGraph:相似度图
SimGraph 的思路接近 A-Mem。
对于每个:
[S_i, F_i, K_i]
先通过向量检索找到 Top-5 最相似 Memory Group,然后让 LLM 判断二者之间是否应该建立 Edge。
简单来说:
Memory
↓
Embedding Similarity
↓
Candidate Neighbor
↓
LLM 判断是否连边
这是一种非常自然的 Graph Memory 构建方式。
13.2 KnowGraph:知识图谱式 Graph
第二种是标准 Knowledge Graph:
<subject, predicate, object>
例如:
<User, likes, hiking>
<User, lives_in, Beijing>
<Grandmother, age, 75>
其中:
Entity = Node
Relation = Edge
但是作者指出这种结构存在一个天然限制。
Triple 非常适合表示:
Semantic Memory,即稳定的事实关系。
但不太适合表示:
Episodic Memory,即一次具体事件或者经历。
例如:
上周我和朋友去了海边,
本来准备游泳,但突然下雨,
最后我们去了附近一家咖啡店。
这种事件很难压缩成几个 Triple 后仍保持完整语义。
13.3 DescGraph:给 Entity 加自然语言 Description
因此作者进一步提出 DescGraph。
Graph 仍然是:
Entity
↕
Relation
但是每个 Entity Node 不再只有:
Entity Name
而是额外维护:
Natural Language Description
这个 Description 同时记录与 Entity 相关的:
- Semantic Memory;
- Episodic Memory。
随着新信息到达,Entity Description 也会动态更新。
这样 Graph 获得了更强的表达能力。
13.4 三种 Graph 的结果
| Graph Design | LME-S R@5 | LME-S R@10 | LME-M R@5 | LME-M R@10 |
|---|---|---|---|---|
| Flat [S,F,K] | 0.9045 | 0.9642 | 0.7064 | 0.8138 |
| SimGraph | 0.8424 | 0.9498 | 0.6043 | 0.7766 |
| KnowGraph | 0.9116 | 0.9665 | 0.6610 | 0.7828 |
| DescGraph | 0.9331 | 0.9713 | 0.7661 | 0.8735 |
结果非常值得注意:
SimGraph 不仅没有提升,反而下降
例如 LME-M:
Flat R@5 = 0.7064
SimGraph R@5 = 0.6043
作者的解释是:
Similarity Edge 本身带来的信息有限,而 Graph Expansion 会把更多相似但不真正相关的节点加入候选集合。如果缺少足够强的 Reranker,就会引入大量 Noise。
换句话说:
多连边
≠
更多有效信息
反而可能变成:
多连边
→
候选更多
→
Noise 更多
→
Retrieval 下降
13.5 DescGraph 表现最好
DescGraph 明显优于普通 KnowGraph。
作者的结论是:
Entity-Relation Graph 本身并不够,Entity Description 对 Graph Memory 非常重要。
它弥补了纯 Triple 对 Episodic Memory 表达能力不足的问题。
14. 实验四:Graph 应该怎么检索?
构建好 Graph 后,下一个问题是:
Query 到底应该激活什么?
论文测试了:
Entity Activation
和:
Triple Activation
14.1 Entity Activation
Query
↓
Entity Embedding
↓
Top-k Entities
14.2 Triple Activation
Query
↓
Triple Embedding
↓
Top-k Triples
结果:
| Activation | R@5 | R@10 | NDCG@5 | NDCG@10 |
|---|---|---|---|---|
| Entity | 0.9642 | 0.9905 | 0.9599 | 0.9648 |
| Triple | 0.9403 | 0.9809 | 0.9363 | 0.9460 |
直接 Entity Activation 更好。
因此后面的 Strong Graph Baseline 直接使用 Entity 作为主要检索入口。
15. 1-Hop Expansion 真的有必要吗?
直觉上 Graph 的最大优势应该来自:
Seed Node
↓
1-Hop
↓
更多相关 Node
但实验发现并没有这么简单。
Graph Expansion 后候选 Value 会迅速增加,因此系统必须进行 Rerank。
论文测试了三个分数:
Score_s
Query 与 Session 的向量相似度
Score_e
Query 与 Entity 的向量相似度
Score_g
一个辅助排序信号:
一个 Value 被多少 Candidate Entity 支持
于是可以组合:
(Score_e, Score_g)
结果:
| Rerank | No Expansion R@5 | No Expansion R@10 | 1-Hop R@5 | 1-Hop R@10 |
|---|---|---|---|---|
| Score_s | 0.9546 | 0.9904 | 0.8615 | 0.9618 |
| Score_e | 0.9642 | 0.9904 | 0.9594 | 0.9643 |
| Score_e + Score_g | 0.9642 | 0.9904 | 0.9642 | 0.9928 |
这里有两个重要现象。
第一,如果 Reranker 不够好,Graph Expansion 可能非常有害
使用 Score_s 时:
No Expansion R@5 = 0.9546
1-Hop R@5 = 0.8615
下降非常明显。
因为 Expansion 引入了更多 Candidate,而 Session Similarity 无法有效过滤这些额外噪声。
第二,如果 Rerank 足够合理,1-Hop 的收益仍然很小
使用:
Score_e + Score_g
之后:
No Expansion R@5 = 0.9642
1-Hop R@5 = 0.9642
几乎没有区别。
因此作者最终给出的 Strong Baseline 反而非常简单:
直接激活 Entity,不做 Graph Expansion,再通过
(Score_e, Score_g)对 Value 进行排序。
这个结果说明:
Graph 的价值并不一定来自“沿着图走很多步”。
甚至在这组实验中:
Graph Construction 有价值
Graph Expansion 未必有价值
16. 最终 Strong Baseline:Flat vs Graph
完成前面的逐阶段实验以后,作者分别为:
Flat Memory
Graph Memory
选择一套 Strong Baseline。
16.1 Flat Baseline
主要配置:
Key = [Summary, Facts, Keywords]
Operation = Add
在 HaluMem 中则加入:
Add + Update + Noop
16.2 Graph Baseline
主要配置:
Key = Entity Description
Index = Entity-Relation Graph
Activation = Entity
Expansion = None
Ranking = (Score_e, Score_g)
值得注意的是:
最终 Graph Baseline 并没有依赖复杂 Graph Traversal。
17. LongMemEval:Graph Retrieval 明显更强
最终结果如下。
LongMemEval-S
| Setting | Index | R@5 | R@10 | N@5 | N@10 | QA V=Session | QA V=Key |
|---|---|---|---|---|---|---|---|
| LLaMA-3.1-8B | Flat | 0.9045 | 0.9642 | 0.9100 | 0.9207 | 0.614 | 0.570 |
| LLaMA-3.1-8B | Graph | 0.9356 | 0.9761 | 0.9393 | 0.9477 | 0.620 | 0.518 |
| GPT-4o-mini / GPT-4o | Flat | 0.9284 | 0.9880 | 0.9346 | 0.9458 | 0.760 | 0.752 |
| GPT-4o-mini / GPT-4o | Graph | 0.9690 | 0.9928 | 0.9711 | 0.9742 | 0.892 | 0.690 |
LongMemEval-M
| Setting | Index | R@5 | R@10 | N@5 | N@10 | QA V=Session | QA V=Key |
|---|---|---|---|---|---|---|---|
| LLaMA-3.1-8B | Flat | 0.7064 | 0.8138 | 0.7309 | 0.7600 | 0.526 | 0.478 |
| LLaMA-3.1-8B | Graph | 0.7661 | 0.8735 | 0.8138 | 0.8377 | 0.548 | 0.428 |
| GPT-4o-mini / GPT-4o | Flat | 0.7231 | 0.8353 | 0.7292 | 0.7588 | 0.638 | 0.620 |
| GPT-4o-mini / GPT-4o | Graph | 0.8281 | 0.9307 | 0.8631 | 0.8880 | 0.754 | 0.592 |
这里得到整篇论文非常重要的结论:
Graph 在 Retrieval 上确实稳定优于 Flat。
而且随着数据从:
LongMemEval-S
↓
LongMemEval-M
规模变大,Graph 的 Retrieval 优势更加明显。
例如 API Setting 下:
LongMemEval-M R@5
Flat = 0.7231
Graph = 0.8281
差距超过 0.10。
这说明 Graph 对大规模 Memory 中的结构化检索确实有作用。
18. 但 Retrieval 更好,不代表 QA 一定更好
这可能是论文最重要的实验现象。
观察:
Value = Session
时,Graph 通常更好。
例如 LongMemEval-S API Setting:
Flat = 0.760
Graph = 0.892
Graph 优势非常明显。
但是当:
Value = Key
时结果完全反过来了:
Flat = 0.752
Graph = 0.690
LongMemEval-M 同样如此:
Flat = 0.620
Graph = 0.592
为什么?
18.1 Flat Key 的信息密度更高
Flat Baseline 的一个 Key 是:
[S,F,K]
它实际上包含同一个 Session 中的:
- Summary;
- Fact;
- Keyword。
因此一个 Key 已经是比较完整的一条 Memory Note。
18.2 Graph Key 比较原子化
Graph 中一个 Key 则主要是:
Entity Description
单个 Entity 的信息量相对有限。
如果两种方法都只返回:
Top-20 Keys
那么:
20 个 Flat Memory Notes
包含的信息,很可能显著多于:
20 个 Entity Descriptions
因此虽然 Graph 找到的 Entity 更准确,但最终喂给 LLM 的信息并不一定更充分。
这说明:
Retrieval Accuracy 和最终 Answer Accuracy 之间并不存在简单的一一对应关系。
检索到正确 Memory 只是第一步。
还要考虑:
检索结果的信息密度
上下文完整性
语义连续性
噪声
Answering Model 能否正确使用这些信息
19. Case Study:为什么 Graph Retrieval 对了,Answer 仍然可能错?
论文附录专门分析了这种现象。
其中一个案例的问题是:
What speed is my new internet plan?
正确答案:
500 Mbps
Graph 和 Flat 实际上都成功检索到了包含:
I upgraded to 500 Mbps
的目标 Session。
但 Graph 还检索出了大量:
- 时间;
- 日程;
- 历史事件;
- 无关 Session。
对于 LLaMA-3.1-8B 这类能力有限的模型,这些额外信息形成了 Distractor。
模型虽然“看到了 500 Mbps”,但被其它时间信息干扰,最终没有直接回答正确结果。
Flat Memory 提供的 Context 更紧凑,因此反而回答正确。
19.1 Value=Key 时的问题更加明显
另一个案例中 Graph 返回的是大量原子 Entity,例如:
TRIPLE THE PRICE
FLEA MARKET
...
这些 Entity 单独看都与问题有关。
但它们之间原本存在的故事关系被打散了。
模型需要自己恢复:
Entity A
↓
Event
↓
Entity B
↓
Query
之间的联系。
Flat [S,F,K] 则天然保留较完整的 Narrative Context。
所以作者将 Graph QA 下降归因于两个问题:
1. Context Organization
对能力有限的 LLM 来说:
Retrieved Context 是否语义连贯、结构清晰,非常重要。
2. Information Density
Entity 具有解释性强、结构明确的优点,但也容易:
过度原子化
→
信息稀疏
→
上下文关系丢失
20. HaluMem:Graph 不一定占优势
HaluMem 关注的重点不是 Retrieval,而是:
- Memory Extraction;
- Memory Update;
- QA;
- Hallucination。
结果如下:
| Setting | Index | Mem-R | Mem-P | MemUpdate-C | QA-C |
|---|---|---|---|---|---|
| LLaMA-3.1-8B | Flat | 0.8057 | 0.8846 | 0.2207 | 0.5861 |
| LLaMA-3.1-8B | Graph | 0.4742 | 0.9921 | - | 0.4935 |
| GPT-4o-mini | Flat | 0.7759 | 0.8809 | 0.2691 | 0.5645 |
| GPT-4o-mini | Graph | 0.6493 | 0.9936 | - | 0.6322 |
Graph 的 Precision 很高,但 Recall 较低。
论文认为,一个原因是 Benchmark Ground Truth 本身偏向:
Factual Statements
而 Graph 使用的是:
Entity-centric Description
两者粒度并不完全一致。
因此这里再次说明:
Benchmark 对“Memory”的定义也会显著影响方法表现。
21. Graph 对模型能力的要求更高
论文还观察到:
Graph Construction 对 Backbone Model 的要求比 Flat Memory 更高。
Flat Memory 主要需要提取:
Summary
Facts
Keywords
而 Graph Memory 还要完成:
Entity Extraction
Relation Extraction
Entity Alignment
Description Aggregation
Graph Update
这些操作需要更强的结构化理解能力。
因此在较弱模型下,Graph 的优势往往更小,甚至可能失败。
而使用 GPT-4o-mini 等更强模型进行 Graph Construction 后,Graph 的优势更加明显。
Qwen3-8B 的补充实验也表现出类似趋势:
换 Backbone 后绝对指标变化,但 Flat 与 Graph 的相对趋势基本保持。
22. Prejudge:先判断这段对话值不值得存
附录中还有一个比较重要的工程组件:
Prejudge Mechanism
在真正执行 Memory Extraction 之前,先让 LLM 判断当前 Chunk 是否:
Informative
如果是:
进入 Memory Extraction
→
Graph Update
如果不是:
直接丢弃
流程相当于:
Incoming Chunk
↓
LLM
↓
Is informative?
/ \
No Yes
↓ ↓
Drop Extraction
↓
Memory Update
实验结果:
| Configuration | R@5 | R@10 | N@5 | N@10 |
|---|---|---|---|---|
| w/o Prejudge | 0.9284 | 0.9689 | 0.9308 | 0.9386 |
| w/ Prejudge | 0.9355 | 0.9761 | 0.9392 | 0.9476 |
Prejudge 不仅减少了后续计算,还没有损害 Retrieval,指标甚至略有提高。
作者认为原因是它可以:
提前过滤 Noise
→
提高 Memory Signal-to-Noise Ratio
不过论文也发现它存在副作用。
例如某些问题的答案来自 Assistant Response,而 Graph Construction 为了效率主要处理 User Message。
如果 Prejudge 又进一步把某些看似“不重要”的内容过滤掉,就可能把连接 Query 与正确 Answer 的信息直接删除。
因此它实际上存在:
Efficiency
↕
Information Coverage
之间的权衡。
23. Flat 和 Graph 的效率差多少?
论文附录还比较了实际成本。
以 GPT-4o-mini 进行 Extraction、text-embedding-3-small 进行 Embedding。
23.1 Retrieval Latency
LongMemEval-S
Flat ≈ 45 ms/query
Graph ≈ 44 ms/query
规模较小时几乎没有区别。
LongMemEval-M
Flat ≈ 240 ms/query
Graph ≈ 574 ms/query
随着 Memory 规模增长,Graph Retrieval 的额外成本明显增加。
不过论文认为:
即使在超过 5 万个 Unique Sessions 的 LongMemEval-M 上,几百毫秒的检索延迟对于交互式对话系统仍属于可接受范围。
23.2 Memory Extraction
LongMemEval-M 中:
Flat ≈ 0.5 s/session
Graph ≈ 2.1 s/session
Graph 明显更贵。
原因包括:
- Entity Extraction;
- Relation Extraction;
- Entity Description;
- Graph Alignment。
不过 Memory Extraction 通常可以:
Session 结束后
异步执行
因此它并不一定直接影响用户交互延迟。
23.3 Storage
LongMemEval-M 原始对话:
> 100M tokens
Flat 和 Graph 最终都可以压缩到:
< 30M tokens
Graph 占用通常高于 Flat,但相比原始 Dialog,两者都实现了明显压缩。
因此作者认为:
Graph 的 Efficiency Cost 确实更高,但还没有高到单凭效率就应该排除 Graph Memory 的程度。
24. 所以,Memory 到底需不需要 Graph?
论文最终给出的答案不是简单的 Yes 或 No。
实验结果更接近:
Graph 可以有用
但“只要用了 Graph 就会更好”是错误的
Graph 的效果高度依赖具体设计。
24.1 Graph 真正有效的条件
论文实验表明,下列设计比较可靠:
Entity-Relation Graph
+
Entity Description
+
Entity Activation
+
Good Value Ranking
尤其是:
Entity Description
对于同时表达 Semantic Memory 与 Episodic Memory 很重要。
24.2 Graph 不一定需要复杂 Traversal
一个很有意思的结果是:
最终 Strong Graph Baseline 可以写成:
Query
↓
Entity Activation
↓
Value Ranking
↓
Context
而不是:
Query
↓
Entity
↓
1-Hop
↓
2-Hop
↓
PageRank
↓
Complex Graph Reasoning
在论文实验中:
1-Hop Expansion 的收益非常有限,Rerank 不好时甚至显著降低效果。
所以 Graph 的价值未必等价于“沿图多跳搜索”。
24.3 Graph 更好的 Retrieval 不保证更好的 Answer
Graph 在 LongMemEval 上的 Retrieval 指标几乎稳定优于 Flat。
但是:
Retrieval ↑
并不自动意味着:
QA ↑
因为最终效果还取决于:
Value 中的信息量
Context 的完整性
Memory 是否碎片化
Noise 数量
LLM 的推理能力
尤其当:
Value = Key
时,Flat [S,F,K] 这种高信息密度 Memory Note 反而可能比原子化 Entity Description 更适合 Answering Model。
25. 论文给出的 Strong Baseline
综合所有实验,论文实际上给长期对话 Memory 提供了两套较可靠的起点。
Flat Memory
Memory Extraction:
Summary + Facts + Keywords
Index:
Flat Vector Index
Memory Operation:
Add
或 Add + Update + Noop
Retrieval:
Vector Similarity
Value:
Session 或聚合后的 Memory
Graph Memory
Memory Extraction:
Entities
Relations
Entity Descriptions
Index:
Entity-Relation Graph
Initial Activation:
Entity Similarity
Graph Expansion:
可以不使用
Value Ranking:
Score_e + Score_g
Value:
优先考虑完整 Session
论文希望未来提出新 Memory 方法时,不再只和较弱或实现不透明的 Baseline 比较,而可以从这些统一配置出发。
26. 这篇论文真正说明了什么?
论文的主要结论可以概括为以下几点。
1. Memory 系统中的基础实现细节非常重要
例如:
Key
Value
Key Organization
Update
Activation
Expansion
Reranking
这些看起来像“工程细节”的因素,本身就足以造成很大的性能变化。
因此不能把端到端性能差异全部归因于某个新 Memory Architecture。
2. Graph 的确可以带来 Retrieval 优势
尤其在:
大规模 Memory
中,结构化 Entity Memory 的优势更加明显。
LongMemEval-M 中 Graph 相比 Flat 的 Retrieval 增益比 S 上更加突出。
3. Graph Construction 比 Graph Traversal 更值得关注
实验中:
Similarity Graph
表现并不好。
而:
Entity-Relation Graph
+
Entity Description
表现明显更强。
同时 1-Hop Expansion 的提升却很有限。
这意味着 Graph Memory 的性能很大一部分来自:
Memory Representation 与 Graph Construction 的质量,而不只是 Graph Search 本身。
4. Memory 的信息密度与连贯性非常重要
Graph 很容易产生高度原子化的信息:
Entity
Entity
Entity
Relation
虽然结构清晰,但可能破坏原始事件的 Narrative Context。
Flat Memory Note 则可能提供:
Summary + Facts + Keywords
这种更完整、更高信息密度的上下文。
因此 Memory Representation 需要在:
结构化
压缩
完整性
语义连贯性
之间平衡。
5. Benchmark 会影响结论
LongMemEval 更强调:
Retrieval + Reasoning
HaluMem 更强调:
Extraction + Update + Hallucination
同一个 Key Organization 在不同 Dataset 上甚至可能得到不同结论。
因此论文并不认为存在一个 universally optimal Memory Configuration。
27. 局限性
论文明确列出了几项限制。
27.1 Unified Framework 无法覆盖所有 Memory System
论文的六元组框架试图覆盖主流 Memory System,但一些高度定制化系统并不容易完全纳入。
例如 Memory OS 将 Memory 本身视作一种可调度的 System Resource,并划分为:
- Short-Term;
- Mid-Term;
- Long-Term。
这类设计比本文讨论的标准 Retrieval Memory 更复杂。
27.2 没有穷举所有设计空间
论文只测试了常见设计,并没有覆盖:
- 所有 Key 类型;
- Heterogeneous Graph;
- Hierarchical Graph;
- 更复杂 Graph Retrieval;
- Training-based Retrieval;
- 所有 Update Strategy。
例如 Update 与 Noop 本身的独立作用仍然可以进一步拆开实验。
27.3 只使用两个 Benchmark
本文主要基于:
LongMemEval
HaluMem
不同 Benchmark 对 Memory 的定义不同,因此部分结论不一定直接迁移到其它任务。
尤其:
[S,F,K]
这种设计主要针对 Dialog Memory。
普通 Long-Context RAG 通常仍可以直接保留并检索原始 Document,因此未必需要完全用 Summary、Fact 和 Keyword 替代 Raw Text。
27.4 Backbone Model 数量有限
主要实验只覆盖:
LLaMA-3.1-8B + Contriever
GPT-4o-mini + text-embedding-3-small
以及部分:
Qwen3-8B
还没有系统测试更多:
- Extraction Model;
- Embedding Model;
- Answering Model;
组合。
28. 总结
这篇论文不是再提出一个新的 Graph Memory,而是试图重新回答一个更基础的问题:
当我们说某个 Memory Method 更好时,到底是哪一个组件真正让它变好了?
作者将长期对话 Memory 统一拆为:
<K, V, Q, I, R, A>
并沿着:
Memory Extraction
→ Memory Indexing
→ Memory Retrieval
→ Question Answering
逐阶段控制变量实验。
最终得到的核心经验是:
Graph ≠ 自动更好
真正重要的是:
Graph 怎么构建
Node 存什么
Key 怎么设计
Value 给什么
Memory 是否更新
如何激活 Node
是否 Expansion
如何 Rerank
最终 Context 是否完整且高信息密度
在论文测试范围内,Graph Memory 在 LongMemEval 的 Retrieval 上表现出稳定优势,尤其在规模更大的 LongMemEval-M 中优势更加明显。
但 Graph Retrieval 的提升并不必然转化成 QA 提升:
Graph Retrieval 更准
↓
不代表
↓
最终给 LLM 的 Context 更好
当 Graph Memory 被压缩成过于原子化的 Entity 时,信息密度与叙事连续性不足,反而可能让 QA 下降。
另一方面,论文也发现复杂 Graph Traversal 并不是获得 Graph 优势的必要条件。在合理构建 Entity Description 并进行 Entity Activation 和 Value Ranking 后,不执行 1-Hop Expansion 已经可以形成非常强的 Graph Baseline。
因此论文最终给出的结论不是:
Memory 需要 Graph
或者:
Memory 不需要 Graph
而更接近:
Graph 是一种有潜力的 Memory Organization,
但其收益高度依赖底层 Memory Representation、
Construction、Retrieval 和 Answering Pipeline 的具体实现。
这也是论文标题 Does Memory Need Graphs? 最终对应的答案。
参考
- Sen Hu, Yuxiang Wei, Jiaxin Ran, Xueran Han, Zhiyuan Yao, Huacan Wang, Ronghao Chen, Lei Zou. Does Memory Need Graphs? A Unified Framework and Empirical Analysis for Long-Term Dialog Memory. ACL 2026.
- ACL Anthology:https://aclanthology.org/2026.acl-long.1232/
- Paper PDF:https://aclanthology.org/2026.acl-long.1232.pdf
- arXiv:https://arxiv.org/abs/2601.01280
- UnifiedMem:https://github.com/AvatarMemory/UnifiedMem

浙公网安备 33010602011771号