【论文阅读】Agent 记忆机制(16):HiMem——从情节证据到抽象知识的自进化层级记忆
文章目录
- 前言
- 零、论文基本信息
- 一、现有长期记忆系统的三个问题
- 二、相关工作
- 三、HiMem 框架总览
- 四、两层记忆分别保存什么?
- 五、Episode Memory 如何创建?
- 六、Note Memory 如何创建?
- 七、Knowledge Alignment:知识对齐
- 八、两种记忆检索策略
- 九、记忆更新和自进化
- 十、HiMem 的记忆自进化闭环
- 十一、自适应遗忘
- 十二、实验设置
- 十三、主要实验结果
- 十四、为什么 GPT-Score 和 F1 差异很大?
- 十五、消融实验:两类记忆分别有什么作用?
- 十六、消融实验:Knowledge Alignment
- 十七、记忆自进化实验
- 十八、混合检索和按需下钻如何选择?
- 十九、Top-K 与效率分析
- 二十、HiMem 的局限性
- 二十一、我的理解和启发
- 二十二、总结
- 参考资料
前言
前面已经阅读了 A-MEM、Mem0、RMM、TrustMem、GAM、HORMA、Proactive Memory Agent 等不同类型的 Agent 记忆方法。
这些方法分别从不同角度改进 Agent 的长期记忆:
A-MEM:
将记忆组织成能够动态建立链接的记忆卡片。
Mem0:
从交互中提取事实,并执行新增、更新、删除和忽略。
RMM:
按照主题组织长期对话,并根据记忆是否被回答引用优化排序。
TrustMem:
逐步验证记忆更新,减少遗漏、破坏和幻觉。
GAM:
保存轻量 Memo 和完整 Page,
在请求到来后动态构造任务需要的上下文。
HORMA:
将历史组织成可导航、可追溯的层级工作空间,
再训练召回 Agent 寻找最小但充分的上下文。
Proactive Memory Agent:
判断记忆是否需要在当前时刻进入行动循环,
并向行动 Agent 插入针对性提醒。
这些方法说明,Agent 长期记忆并不是简单地把历史消息保存到向量数据库。
一个完整的长期记忆系统至少需要解决:
记忆如何创建?
记忆如何组织?
如何找到相关记忆?
新信息到来后如何更新旧记忆?
记忆不断增长后如何控制成本?
目前很多方法会在两个方向之间做选择。
第一种方法保存原始对话或较细粒度的事件:
优点:
保留的信息完整,能够追溯原始证据。
问题:
记忆数量多,检索成本高,
真正重要的信息容易被细节淹没。
第二种方法从对话中提取事实、偏好和用户画像:
优点:
记忆更加紧凑,定位信息更快。
问题:
抽象过程中可能丢失时间、指代、语境和因果关系。
例如,用户在一次对话中说:
“我上周本来想去上海,
但最后拒绝了那份实习,
因为工资太低,而且会影响秋招准备。”
如果只保存原始对话,未来检索“用户的城市偏好”时,系统可能需要读取大量历史消息。
如果只抽取成:
用户不想去上海。
又会丢失重要信息:
用户拒绝的是某一份具体实习;
拒绝原因是工资和秋招安排;
用户并没有永久排除上海。
因此,一个更合理的长期记忆系统应该同时保留:
具体、可追溯的原始情节;
稳定、紧凑的抽象知识;
二者之间的语义联系。
除此之外,长期记忆还不能只增不改。
随着交互持续进行,新信息可能:
与已有记忆互相独立;
补充已有记忆;
扩展已有记忆;
与已有记忆发生冲突;
使某条旧记忆失效。
如果系统只是不断追加,记忆库中就会同时出现多个互相冲突的用户状态。
本文提出了 HiMem:Hierarchical Long-Term Memory for LLM Long-Horizon Agents。
HiMem 将长期记忆组织成两个相互关联的层次:
Episode Memory:
保存细粒度、带有时间和原始上下文的情节记忆。
Note Memory:
保存从对话中抽取出的事实、偏好和用户画像。
在此基础上,HiMem 进一步加入:
双通道情节分割;
多阶段知识提取;
选择性的知识对齐;
层级记忆检索;
冲突感知的记忆再巩固;
基于使用频率的自适应遗忘。
可以用一句话概括 HiMem:
用 Episode Memory 保留原始证据,用 Note Memory压缩稳定知识,再通过检索反馈不断修正和补充知识记忆。
零、论文基本信息
- 论文名称:HiMem: Hierarchical Long-Term Memory for LLM Long-Horizon Agents
- 发表平台:arXiv preprint,2026
- 代码仓库:jojopdq/HiMem
- 作者信息:Ningning Zhang、Xingxing Yang、Zhizhong Tan、Weiping Deng、Wenyong Wang,Macau University of Science and Technology
一、现有长期记忆系统的三个问题
HiMem 主要关注长对话 Agent 中的三个问题。
1. 记忆与原始语境发生语义错位
很多记忆系统会从对话中抽取独立事实。
例如:
原始对话:
用户说“我下个月可能搬过去”。
抽取结果:
用户下个月会搬家。
这里至少存在两个问题:
“下个月”对应哪个绝对时间?
“那里”或者“过去”指向哪个地点?
如果抽取后的记忆脱离原始会话,系统可能无法正确处理:
- 相对时间;
- 人称和实体指代;
- 隐含语义;
- 事件之间的因果关系。
论文将这种问题称为:
Semantic Misalignment,语义错位。
2. 记忆保真度与检索效率难以兼顾
细粒度对话记录能够保留完整信息,但会带来较高检索成本。
高度抽象的事实记忆更加紧凑,却可能丢失推理需要的细节。
两种方案的差异可以表示为:
原始对话或细粒度事件:
优点:
信息完整;
能够追溯上下文;
适合复杂推理。
问题:
数据量大;
检索成本高;
容易返回无关细节。
抽象知识或事实记忆:
优点:
信息密度高;
检索速度快;
适合直接回答常见问题。
问题:
可能丢失时间和语境;
难以恢复原始证据;
抽取错误会被长期保存。
HiMem 认为,长期记忆系统不应该在二者之间二选一,而应该建立从具体情节到抽象知识的层级结构。
3. 记忆更新缺少冲突感知
很多系统主要根据相似度决定:
新增一条记忆;
覆盖一条记忆;
删除一条记忆。
但语义相似并不能说明两条记忆之间的真实关系。
例如:
旧记忆:
用户喜欢喝咖啡。
新信息:
用户最近因为睡眠问题减少喝咖啡。
新信息不是简单重复旧记忆,也不一定表示用户已经彻底不喜欢咖啡。
它可能是:
对旧记忆的条件性扩展;
短期行为变化;
新的时间状态;
对原偏好的局部修正。
因此,系统需要先判断新旧知识之间是:
独立;
可扩展;
互相矛盾。
然后再选择合适的更新操作。
二、相关工作
论文在附录中使用三个维度组织长期记忆研究:
Memory Form:
记忆以什么形式表示?
Memory Organization:
记忆之间如何组织?
Memory Operation:
记忆如何写入、更新、删除和演化?
1. 记忆形式
记忆形式决定单条记忆的内容和粒度。
常见形式包括:
固定长度的对话片段;
按照轮次或 Session 划分的记录;
事件级记忆;
事实级记忆;
带有实体和关系的结构化记忆;
对历史轨迹生成的摘要。
SeCom 使用事件分割和语义压缩,提高记忆片段的完整性。
Mem0 从对话中提取原子事实。
A-MEM 则在事件记忆上增加实体、关系和时间等属性。
HiMem 的区别在于同时保留两种不同抽象层次:
Episode Memory:
具体事件。
Note Memory:
抽象知识。
2. 记忆组织
现有方法可能采用:
扁平向量库;
图结构;
时间序列;
层级存储;
操作系统式分层管理。
扁平检索实现简单,但难以同时表达:
原始事件;
稳定知识;
抽象层次;
知识来源。
HiMem 按照信息密度和抽象程度,将记忆组织成:
具体情节
↓
抽象知识
两种记忆之间通过语义关联建立层级联系。
3. 记忆操作
长期记忆不能只进行静态存储。
系统还需要支持:
新增;
更新;
删除;
合并;
遗忘;
冲突检测;
知识重构。
Mem0、A-MEM 等方法已经支持动态记忆操作。
MemoryBank 使用遗忘曲线减少低频记忆。
MemGPT 则让模型在不同存储层之间进行读写和调度。
HiMem 的主要区别是:
通过检索失败发现 Note Memory 中缺少的知识,再返回 Episode Memory 查找证据,并对知识记忆执行冲突感知的再巩固。
三、HiMem 框架总览
为了理解 HiMem 如何组织、检索和更新长期记忆,可以先看论文 Figure 1。

图源:Zhang et al., 2026,Figure 1:Overview of HiMem。
该图展示了 HiMem 的记忆组织、记忆构建、Best-Effort Retrieval 和记忆自进化流程。
HiMem 包含三个核心模块:
1. Hierarchical Memory Construction:
从原始对话构建 Episode Memory 和 Note Memory。
2. Hierarchical Memory Retrieval:
使用混合检索或按需下钻检索寻找证据。
3. Conflict-Aware Memory Updating:
根据检索反馈修正和补充 Note Memory。
完整流程可以表示为:
原始长对话
↓
双通道分割
↓
Episode Memory
↓
多阶段知识提取和知识对齐
↓
Note Memory
↓
建立 Episode 与 Note 之间的语义联系
↓
用户提出问题
↓
检索 Note Memory
↓
证据是否充分?
├── 是:生成回答
│
└── 否:继续检索 Episode Memory
↓
Episode 是否提供充分证据?
├── 否:标记为无法回答
│
└── 是:回答问题
+
触发记忆再巩固
↓
更新 Note Memory
这里最关键的不是简单地建立两套记忆库,而是形成一个闭环:
记忆构建
↓
记忆检索
↓
发现知识缺口
↓
返回原始情节寻找证据
↓
修正抽象知识
↓
改善未来检索
四、两层记忆分别保存什么?
HiMem 将长期记忆分为 Episode Memory 和 Note Memory。
1. Episode Memory:保存具体情节
Episode Memory 保存与原始对话过程对齐的细粒度事件。
每条 Episode 包含:
ID;
时间戳;
主题;
主题摘要;
元数据;
对应的原始对话片段。
例如:
Episode ID:
episode_2026_07_01_03
时间:
2026-07-01
主题:
用户讨论上海实习机会。
主题摘要:
用户认为当前实习工资较低,
并担心长期实习影响秋招准备。
原始对话:
用户和助手关于岗位工资、时间和地点的完整讨论。
Episode Memory 的主要目标是:
保留能够支持复杂推理和事实追溯的原始证据。
2. Note Memory:保存抽象知识
Note Memory 保存经过提取和规范化的稳定知识。
论文将知识分为三类:
K = { K f a c t , K p r e f , K p r o f i l e } K=\{K_{\mathrm{fact}},K_{\mathrm{pref}},K_{\mathrm{profile}}\} K={Kfact,Kpref,Kprofile}
其中:
- K f a c t K_{\mathrm{fact}} Kfact 表示客观事实和事件;
- K p r e f K_{\mathrm{pref}} Kpref 表示用户偏好;
- K p r o f i l e K_{\mathrm{profile}} Kprofile 表示相对稳定的用户特征。
例如:
Fact:
用户于 2026 年 7 月拒绝了一份上海实习。
Preference:
用户目前更偏好不影响秋招准备的短期实习。
Profile:
用户正在准备秋招。
每条 Note 包含:
标识符;
知识内容;
语义类别;
相关元数据。
Note Memory 的主要目标是:
将高频、稳定和可复用的信息压缩为易于检索的知识单元。
3. 两种记忆为什么缺一不可?
两种记忆承担不同职责:
| 记忆类型 | 主要作用 | 优点 | 局限 |
|---|---|---|---|
| Episode Memory | 保存具体经历和原始证据 | 信息完整、可追溯 | 数量多、检索成本高 |
| Note Memory | 保存抽象事实、偏好和画像 | 信息紧凑、定位快速 | 可能丢失语境或抽取错误 |
| 二者结合 | 在效率和保真度之间取得平衡 | 可快速定位,也可回溯证据 | 系统实现更加复杂 |
可以将二者理解为:
Note Memory:
告诉 Agent“目前知道什么”。
Episode Memory:
告诉 Agent“这些知识是怎么得到的”。
五、Episode Memory 如何创建?
1. 为什么不能固定长度切分?
传统系统可能按照固定轮数切分对话:
第 1~10 轮;
第 11~20 轮;
第 21~30 轮。
这种方式实现简单,但切分边界可能与真实事件不一致。
例如:
第 8 轮:
用户开始讨论一次旅行。
第 10 轮:
用户说明旅行目的。
第 11 轮:
用户说明同行人员。
第 12 轮:
话题才真正结束。
如果在第 10 轮强制切分,同一个事件会被拆成两个记忆片段。
只按照主题切分也不够。
对话主题可能没有改变,但用户的意图、态度或情绪发生了明显变化。
例如:
前半段:
用户计划接受某个工作机会。
后半段:
用户得知薪资后突然决定拒绝。
主题仍然是同一个工作机会,但认知状态已经发生显著变化。
2. Topic-Aware Event-Surprise 双通道分割
HiMem 同时使用两种信号判断事件边界:
通道一:Topic Shift
检测:
对话目标变化;
子话题变化;
讨论对象变化。
通道二:Surprise Signal
检测:
意图突然改变;
情绪状态突然变化;
对话功能发生变化;
出现与前文预期不一致的新信息。
两种信号通过 OR 规则融合:
主题发生变化
或
出现显著认知中断
↓
建立新的 Episode 边界
这种设计既关注语义连续性,也关注认知显著性。
3. 单次分割
HiMem 使用 LLM 在一次处理中同时判断主题和 Surprise 信号,并直接输出最终分割结果。
过程为:
完整对话
↓
LLM 同时判断主题变化和显著中断
↓
一次性生成事件边界
↓
形成互不重叠的 Episode
优点是:
流程简单;
调用次数较少;
分割结果可控;
减少跨片段干扰。
但它也存在限制:
当对话极长、多个话题交叉进行时,一次性分割可能无法表达递归或多层级的事件结构。
六、Note Memory 如何创建?
HiMem 使用多阶段知识提取流程创建 Note Memory。
如果让模型一次完成所有工作:
发现事实;
推断偏好;
生成用户画像;
处理时间;
解决指代;
去除重复;
模型容易把不同任务混在一起,产生语义坍缩或过度推断。
因此,HiMem 将知识提取拆成三个阶段。
1. 第一阶段:提取显式事实和情境单元
第一阶段提取能够独立解释的事实和情境信息。
例如:
原始对话:
“我昨天拒绝了上海那份实习,
因为日薪只有 100 元。”
显式事实:
用户拒绝了一份上海实习。
情境信息:
该实习日薪为 100 元。
这一阶段应尽量保留对话中明确出现的信息,而不是自由推测。
2. 第二阶段:提取高置信度隐式信息
第二阶段从显式事实中识别用户偏好和画像。
要求是:
可以提取对已有信息的高置信度概括,但不能引入原对话中不存在的新事实。
例如:
可以提取:
用户在选择实习时关注薪资水平。
不应该直接提取:
用户以后永远不会去上海工作。
后者超出了原始对话能够支持的范围。
3. 第三阶段:非破坏性规范化
第三阶段执行:
去重;
指代消解;
时间规范化;
知识表达统一。
例如:
原始表达:
“上周我拒绝了那份工作。”
规范化后:
用户于 2026 年 7 月 15 日所在周的前一周,
拒绝了此前提到的上海实习岗位。
“非破坏性”意味着:
可以让表达更加明确,
但不能改变原始知识的含义。
4. 为什么需要多阶段提取?
多阶段设计将不同任务拆开:
先确定对话明确说了什么;
再判断可以推断什么;
最后统一时间、指代和表达。
相比一次性摘要,它更容易控制:
事实与推断的边界;
用户偏好的置信度;
时间表达的一致性;
实体指代的准确性。
七、Knowledge Alignment:知识对齐
当一条记忆脱离原始对话后,很多表达会失去意义。
例如:
“明天去那里。”
“她后来拒绝了。”
“那个项目已经结束了。”
如果直接保存为独立 Note,系统无法确定:
明天是哪一天?
那里是哪个地点?
她指的是谁?
那个项目指的是哪个项目?
因此,HiMem 使用 Knowledge Alignment 处理:
相对时间对齐;
实体指代消解;
隐含语义关系提取。
例如:
对齐前:
她下个月会搬过去。
对齐后:
用户的朋友 Alice 计划于 2026 年 8 月搬到上海。
不过,知识对齐并不是对两类记忆统一执行同样的重写。
HiMem 对不同记忆采用不同策略:
Note Memory:
强调抽象、规范化和语义对齐。
Episode Memory:
强调保留原始对话和细粒度线索。
这一点非常重要。
后面的消融实验表明:
Knowledge Alignment 对 Note Memory 明显有益,但对已经完成良好事件分割的 Episode Memory 可能产生负面影响。
八、两种记忆检索策略
HiMem 支持两种检索方式:
Hybrid Retrieval;
Best-Effort Retrieval。
1. Hybrid Retrieval:混合检索
混合检索会同时查询两层记忆:
用户问题
├── 检索 Note Memory
└── 检索 Episode Memory
↓
合并两层结果
↓
生成回答
优点是:
覆盖率较高;
能够同时获得抽象知识和原始证据;
减少漏掉细节的概率。
问题是:
两层结果都会进入上下文;
Token 消耗相对较高。
2. Best-Effort Retrieval:按需下钻检索
Best-Effort Retrieval 优先查询 Note Memory。
只有 Note Memory 证据不足时,才继续检索 Episode Memory:
查询 Note Memory
↓
LLM 判断证据是否充分
├── 充分:直接回答
│
└── 不充分:查询 Episode Memory
↓
再次判断证据
├── 充分:回答
└── 不充分:标记为无法回答
这里体现了一个重要设计:
先使用低成本的抽象知识,只有必要时才返回高成本的原始情节。
论文将这种策略描述为:
Abstraction First;
Descend When Necessary。
也就是:
抽象优先;
必要时下钻。
3. 如何判断证据是否充分?
HiMem 使用固定的 LLM 自评 Prompt 进行二元判断:
Sufficient;
Insufficient。
该判断使用确定性解码:
temperature = 0
它只作为路由控制信号,不会直接修改记忆内容。
如果两层记忆都无法提供充分证据,系统会明确将查询标记为无法回答,而不是强行生成答案。
九、记忆更新和自进化
HiMem 不把检索和记忆更新看成两个互相独立的模块。
它将检索失败视为一种反馈:
如果 Note Memory 无法回答,但 Episode Memory 中存在充分证据,说明抽象知识层遗漏了重要信息。
1. 触发记忆再巩固的两个条件
Memory Reconsolidation 只有在两个条件同时满足时才会触发:
条件一:
Note Memory 检索结果不足以回答问题。
条件二:
Episode Memory 找到了能够支持回答的证据。
即:
Note 失败
并且
Episode 成功
↓
触发 Memory Reconsolidation
这种保守触发方式可以避免:
仅仅因为检索失败就随意改写记忆;
在没有原始证据时补充知识;
将模型猜测写入长期记忆。
2. 基于查询重新提取知识
触发再巩固后,HiMem 会根据当前查询,从支持回答的 Episode 中重新提取知识。
例如:
Note Memory:
只记录“用户拒绝了一份上海实习”。
当前问题:
用户为什么拒绝这份实习?
Episode Memory:
包含关于工资、实习时长和秋招安排的原始对话。
系统会从 Episode 中补充:
用户拒绝实习的原因包括:
工资较低;
要求至少实习三个月;
可能影响秋招准备。
这条新知识随后会进入 Note Memory,改善以后相似问题的检索。
3. 冲突关系分类
新提取的信息会与已有 Note 比较,并被分为三类:
Independent:
与已有知识相互独立。
Extendable:
可以补充或扩展已有知识。
Contradictory:
与已有知识存在矛盾。
系统再根据关系执行:
ADD;
UPDATE;
DELETE。
通常可以理解为:
独立知识:
新增一条 Note。
可扩展知识:
补充或更新已有 Note。
矛盾知识:
根据证据更新或删除已经失效的 Note。
4. 为什么只更新 Note Memory?
HiMem 将 Episode Memory 视为不可变的历史记录。
新的 Episode 会按照时间顺序追加,但不会修改已有 Episode。
原因是:
Episode Memory 保存的是发生过的交互事件;
旧事件不应该因为新知识到来而被重写。
Note Memory 则是系统当前对历史的知识抽象,因此可以随着新证据不断修正。
可以将两者理解为:
Episode Memory:
历史证据层。
Note Memory:
当前知识状态层。
十、HiMem 的记忆自进化闭环
HiMem 的完整自进化过程可以表示为:
第一次查询
↓
Note Memory 缺少相关知识
↓
检索 Episode Memory
↓
找到充分证据
↓
回答当前问题
↓
从 Episode 中重新提取知识
↓
进行冲突检测
↓
更新 Note Memory
↓
下一次相似查询可以直接从 Note Memory 回答
这里的“自进化”不是:
重新训练模型参数;
让模型自由反思;
对全部记忆重新生成摘要。
而是:
根据真实检索缺口,对抽象知识层执行有证据约束的局部更新。
十一、自适应遗忘
随着长期交互不断进行,Episode 和 Note 的数量都会持续增长。
为了控制存储规模和检索效率,HiMem 可选地使用基于使用频率的自适应遗忘机制。
其基本思想是:
经常被访问的记忆:
保留较高优先级。
长期未使用的记忆:
逐渐降低优先级或被清理。
不过,论文明确说明:
自适应遗忘主要用于控制记忆规模和检索效率,并不直接贡献论文实验中报告的性能提升。
因此,不能把它写成 HiMem 获得主要实验提升的核心模块。
论文也没有提供完整的遗忘消融实验。
从工程角度看,这意味着自适应遗忘更接近一个可扩展性设计,而不是已经充分验证的性能机制。
十二、实验设置
1. 数据集
论文使用 LoCoMo 评估长对话记忆能力。
LoCoMo 包含多 Session 长对话,平均长度约为:
600 轮对话;
约 16K Token;
最多 32 个交互阶段。
论文评估四类问题:
| 问题类型 | 需要的能力 |
|---|---|
| Single-Hop | 从单个会话或局部信息中回答 |
| Multi-Hop | 聚合分散在多处的证据 |
| Temporal Reasoning | 处理显式或隐式时间关系 |
| Open-Domain | 结合对话内容与外部或常识知识 |
论文没有将 Adversarial 类别纳入定量评测,因为该类别主要测试无法回答检测,而不是答案正确性。
2. 评价指标
论文使用四类指标:
GPT-Score;
F1;
Latency;
Token Consumption。
GPT-Score
使用 GPT-4o-mini 作为 LLM Judge,评估答案的:
语义正确性;
语义一致性。
它是论文的主要准确率指标。
F1
F1 衡量生成答案与参考答案之间的词汇重合。
不同记忆方法可能生成语义正确但表达不同的答案,因此 F1 与 GPT-Score 可能出现较大差异。
Latency
Latency 只计算记忆检索耗时,不包含:
LLM 推理;
最终回答生成。
Token Consumption
统计检索结果进入后续流程后产生的 Token 消耗,用于衡量上下文成本。
3. 对比方法
论文比较了三种代表性长期记忆系统。
| 方法 | 主要特点 |
|---|---|
| A-MEM | 事件级记忆,并加入实体、关系和时间属性 |
| SeCom | 事件分割与语义压缩 |
| Mem0 | 原子事实提取与结构化记忆管理 |
| HiMem | Episode 与 Note 构成的层级长期记忆 |
4. 实验配置
所有方法统一使用:
基础模型:
GPT-4o-mini。
向量模型:
all-mpnet-base-v2。
temperature:
0.0。
max_tokens:
8192。
Top-K:
10。
每种设置进行三次独立实验。
主实验报告:
均值 ± 标准差。
辅助分析和部分消融实验只报告均值。
HiMem 的存储后端为:
Episode Memory:
OpenSearch。
Note Memory:
Qdrant。
实验运行硬件为:
MacBook Pro;
Apple M4 Max;
128GB 统一内存。
需要注意的是:
GPT-4o-mini 同时被用作基础模型和 GPT-Score 的评审模型,这可能带来同模型偏好,后续仍需要其他 Judge 或人工评测进一步验证。
十三、主要实验结果
论文 Table 1 的 GPT-Score 结果如下:
| 任务 | A-MEM | SeCom | Mem0 | HiMem |
|---|---|---|---|---|
| Single-Hop | 59.33 | 87.02 | 75.90 | 89.22 |
| Multi-Hop | 40.78 | 59.10 | 56.62 | 70.92 |
| Temporal | 50.26 | 33.54 | 68.54 | 74.77 |
| Open-Domain | 24.65 | 60.07 | 42.36 | 54.86 |
| Overall | 51.88 | 69.03 | 68.74 | 80.71 |
HiMem 的总体 GPT-Score 为:
80.71
相比第二名 SeCom 的:
69.03
提高了:
11.68 个 GPT-Score 点。
1. Single-Hop
HiMem 达到:
89.22
略高于 SeCom 的 87.02。
这说明双层记忆不仅适合复杂跨会话推理,也不会明显损害简单事实定位。
2. Multi-Hop
HiMem 达到:
70.92
第二名 SeCom 为:
59.10
Multi-Hop 需要从多个相距较远的对话位置聚合证据。
HiMem 的优势可能来自:
Note Memory 提供知识入口;
Episode Memory 保留细节;
语义联系允许系统从抽象知识返回原始事件。
3. Temporal Reasoning
HiMem 达到:
74.77
Mem0 为 68.54。
时间推理依赖:
相对时间规范化;
事件时间戳;
指代消解;
原始情节中的事件顺序。
HiMem 同时保存时间对齐后的 Note 和带时间信息的 Episode,因此更适合处理跨会话时间关系。
4. Open-Domain
HiMem 的 GPT-Score 为:
54.86
低于 SeCom 的:
60.07
因此,不能简单地说 HiMem 在所有任务上都是最好。
Open-Domain 问题还需要结合外部知识或常识。
HiMem 主要优化的是对话内部长期记忆,对外部知识融合并不是其最突出的优势。
十四、为什么 GPT-Score 和 F1 差异很大?
HiMem 的总体结果为:
GPT-Score:
80.71。
F1:
34.95。
Mem0 的总体结果为:
GPT-Score:
68.74。
F1:
48.16。
尤其在 Temporal 任务上:
HiMem:
GPT-Score 74.77,F1 22.05。
Mem0:
GPT-Score 68.54,F1 56.37。
这说明 HiMem 的回答在 LLM Judge 看来语义更正确,但与参考答案的字面表达重合较少。
可能原因包括:
回答更加完整;
使用了不同的时间表达;
加入了额外上下文;
答案格式与参考答案不同。
因此,主实验更准确的结论是:
HiMem 在论文选定的主要语义评测指标 GPT-Score 上表现最好,但并没有在词汇重合指标 F1 上全面领先。
这也是阅读 LLM-as-a-Judge 实验时需要注意的地方。
十五、消融实验:两类记忆分别有什么作用?
论文 Table 2 的总体结果如下:
| 设置 | Overall GPT-Score | Overall F1 |
|---|---|---|
| HiMem | 80.71 | 34.95 |
| 移除 Episode Memory | 69.29 | 33.59 |
| 移除 Note Memory | 79.63 | 36.60 |
1. 移除 Episode Memory
移除 Episode Memory 后,系统只保留 Note Memory。
总体 GPT-Score 从:
80.71
下降到:
69.29
下降 11.42 个点。
Multi-Hop 从:
70.92 → 56.26
Single-Hop 从:
89.22 → 76.50
这说明只保存抽象知识会丢失大量复杂推理需要的上下文证据。
Note Memory 即使检索效率较高,也无法完全替代原始事件。
2. 移除 Note Memory
移除 Note Memory 后,系统只保留 Episode Memory。
总体 GPT-Score 从:
80.71
下降到:
79.63
只下降 1.08 个点。
这说明 Episode Memory 承担了更主要的答案覆盖和证据保真作用。
Note Memory 的价值更多体现在:
快速定位稳定知识;
提供语义锚点;
减少检索成本;
支持记忆自进化。
3. 我的理解
两类记忆的作用并不对称:
Episode Memory:
决定系统是否还保留足够证据。
Note Memory:
决定系统能否更快、更稳定地找到知识。
因此,HiMem 的核心不是简单地增加一个摘要层,而是:
在不删除原始证据的前提下,用抽象知识层提高检索效率。
十六、消融实验:Knowledge Alignment
论文 Table 3 的总体 GPT-Score 如下:
| 设置 | Average GPT-Score |
|---|---|
| HiMem | 80.71 |
| HiMem 不使用 KA | 79.50 |
| Note Memory 使用 KA | 63.44 |
| Note Memory 不使用 KA | 57.51 |
| Episode Memory 使用 KA | 78.12 |
| Episode Memory 不使用 KA | 79.63 |
1. Knowledge Alignment 对 Note Memory 有益
Note Memory 使用知识对齐后:
57.51 → 63.44
提高 5.93 个 GPT-Score 点。
原因是 Note Memory 已经离开原始对话。
如果不处理:
相对时间;
实体指代;
隐含语义;
重复表达;
抽取出的知识就很难独立解释和检索。
2. Knowledge Alignment 对 Episode Memory 可能有害
Episode Memory 使用知识对齐后:
79.63 → 78.12
反而下降 1.51 个点。
原因可能是 Episode 已经通过双通道分割形成了较完整的事件单元。
进一步改写可能会:
丢失隐含线索;
弱化原始措辞;
破坏细粒度语境;
引入新的抽象误差。
3. 关键结论
Knowledge Alignment 不是一个应该应用到全部记忆的统一预处理步骤。
更合理的策略是:
抽象知识:
需要更强的时间、指代和语义对齐。
原始事件:
优先保留原始上下文,只进行必要处理。
这说明:
不同类型的记忆需要不同的处理策略。
十七、记忆自进化实验
为了理解 Memory Self-Evolution 的作用,可以看论文 Figure 2。

图源:Zhang et al., 2026,Figure 2。
该图比较了 Note Memory 和完整 HiMem 在启用记忆自进化前后的 GPT-Score。
论文 Table 4 中,Note Memory 的结果如下:
| 设置 | Average GPT-Score | Average F1 |
|---|---|---|
| 不使用 KA | 57.51 | 28.25 |
| 使用 KA | 63.44 | 29.79 |
| 使用 KA 和 Memory Evolution | 69.29 | 33.59 |
加入 Memory Self-Evolution 后,Note Memory 的 GPT-Score 从:
63.44 → 69.29
提高了 5.85 个点。
论文将其描述为约 5.85% 的提升。
但对完整 HiMem 而言,自进化只带来约:
0.28%
的整体提升。
1. 为什么 Note 提升明显,完整系统提升较小?
在没有自进化时:
Note Memory 缺失某条知识
↓
系统仍然可以检索 Episode Memory
↓
通过原始情节回答问题
因此,完整 HiMem 已经具有 Episode Memory 作为兜底。
自进化的主要作用是:
将 Episode 中经常需要的知识补回 Note;
让未来查询更快地从 Note 层得到答案。
所以它对 Note Memory 单独使用时提升明显,对完整系统的即时准确率提升较小。
2. 自进化的价值不只体现在当前分数
从长期运行角度看,自进化可能带来:
Note Memory 知识覆盖率逐渐提高;
相似问题不再反复下钻 Episode;
平均检索成本逐渐降低;
知识记忆能够根据真实使用进行修正。
不过,论文主要展示了准确率变化,没有给出长时间运行后调用成本如何变化。
十八、混合检索和按需下钻如何选择?
论文 Table 5 比较了两种检索模式。
| 检索策略 | Average GPT-Score | Average F1 |
|---|---|---|
| Hybrid Retrieval | 80.71 | 34.95 |
| Best-Effort Retrieval | 75.24 | 35.54 |
效率结果如下:
| 检索策略 | 平均检索延迟 | 平均 Token |
|---|---|---|
| Hybrid Retrieval | 1.53 秒 | 1271.69 |
| Best-Effort Retrieval | 1.82 秒 | 1134.24 |
1. Hybrid Retrieval
混合检索的特点是:
准确率更高;
平均检索延迟更低;
Token 消耗更高。
它可以并行定位两层记忆,不需要等待自评后再决定是否下钻。
2. Best-Effort Retrieval
按需下钻的特点是:
平均 Token 更少;
GPT-Score 较低;
延迟反而更高。
延迟增加的原因是:
先检索 Note;
再调用 LLM 判断证据;
必要时继续检索 Episode。
需要注意的是,Best-Effort 并非在所有任务类型中都更节省 Token。
例如 Open-Domain 任务中:
Hybrid:
1343.25 Token。
Best-Effort:
1583.06 Token。
这可能是因为 Note 经常无法独立回答 Open-Domain 问题,系统需要执行完整下钻流程。
因此:
追求更高准确率:
优先选择 Hybrid Retrieval。
更关注平均上下文成本:
可以选择 Best-Effort Retrieval。
Note 命中率较低的任务:
Best-Effort 未必更省。
十九、Top-K 与效率分析
论文测试了:
K ∈ {5,10,15,20,25}
结果显示,随着 K 增加:
检索覆盖率上升;
GPT-Score 上升;
检索延迟增加;
Token 消耗增加。
部分结果如下:
| Top-K | GPT-Score | 延迟 | Token |
|---|---|---|---|
| 5 | 77.55 | 0.79 秒 | 760 |
| 10 | 80.71 | 1.53 秒 | 1272 |
| 15 | 81.26 | 2.35 秒 | 1769 |
| 20 | 82.60 | 3.22 秒 | 2273 |
| 25 | 83.51 | 4.20 秒 | 2781 |
论文认为,当 K 达到 10 后,性能增益开始趋缓,但成本继续近似增长。
因此,主实验选择:
Top-K = 10
它不是准确率最高的配置,而是性能和成本之间的折中。
1. 与其他方法的效率对比
总体效率结果如下:
| 方法 | 平均检索延迟 | 平均 Token |
|---|---|---|
| A-MEM | 0.93 秒 | 2699.85 |
| SeCom | 不直接可比 | 2712.56 |
| Mem0 | 4.53 秒 | 1582.51 |
| HiMem | 1.53 秒 | 1271.69 |
HiMem 的检索延迟不是最低,但 Token 消耗最低。
相比 Mem0:
延迟:
4.53 秒 → 1.53 秒。
Token:
1582.51 → 1271.69。
相比 A-MEM,HiMem 延迟更高,但 Token 消耗不到其一半。
SeCom 会在推理前将单个样本的数据预加载到内存,因此论文认为其延迟与其他方法不能直接比较。
二十、HiMem 的局限性
1. 依赖底层 LLM 的判断能力
HiMem 在多个环节依赖 LLM:
事件分割;
隐式知识提取;
指代消解;
冲突检测;
证据充分性判断。
如果底层模型错误理解对话,错误可能进入多个记忆模块。
特别是在以下场景中:
噪声输入;
隐喻表达;
跨文化语用;
复杂情绪;
模糊指代;
反讽或否定表达。
模型可能错误切分事件或生成不准确的用户画像。
2. 单次事件分割能力有限
HiMem 使用一次性分割。
它适合相对线性的长对话,但对于:
多个话题交叉;
同一事件反复出现;
递归讨论;
跨 Session 延续的复杂项目;
一次分割可能无法建立多粒度事件结构。
未来可以尝试:
粗粒度事件;
细粒度子事件;
递归事件结构;
事件之间的显式关系。
3. 自进化触发较为保守
Memory Reconsolidation 主要在以下情况下触发:
Note 检索失败;
Episode 提供充分证据。
如果一条 Note 已经过期,但始终没有被相关查询命中,它可能长期保留在记忆库中。
未来可以加入:
用户显式纠正;
定期一致性检查;
跨任务冲突检测;
时间衰减信号;
统计行为变化。
4. 评测范围有限
实验主要使用:
单用户;
纯文本;
长对话问答。
尚未充分验证:
多 Agent 记忆;
多用户共享记忆;
图像和语音记忆;
代码和工具轨迹;
长期任务执行;
实时环境变化。
5. LLM Judge 可能存在偏好
GPT-4o-mini 同时担任:
系统基础模型;
答案评审模型。
这可能使评测更偏好同一模型生成的表达方式。
此外,HiMem 的 GPT-Score 明显高于部分方法,但 F1 并没有全面领先。
因此,后续还需要:
不同模型担任 Judge;
人工评测;
事实级正确性验证;
时间推理专用指标;
记忆来源一致性检查。
6. 隐私和错误知识固化风险
HiMem 会长期保存:
用户事实;
个人偏好;
用户画像;
原始对话情节。
实际使用时必须允许用户:
查看记忆;
修改记忆;
删除记忆;
知道系统保存了什么。
Memory Reconsolidation 还可能将模型幻觉写入 Note Memory。
在医疗、法律等高风险场景中,不应仅依赖模型自动更新,需要人工验证或更严格的证据机制。
二十一、我的理解和启发
1. 长期记忆需要同时保留知识和证据
很多记忆系统只保存最终抽取结果:
用户喜欢北京;
用户不喜欢乳制品;
用户正在准备秋招。
但如果没有原始证据,系统很难判断:
这条记忆什么时候产生?
它来自用户明确表达还是模型推断?
它是否带有条件?
它是否已经过期?
HiMem 的启发是:
长期记忆不仅要保存“结论”,还要保存支持结论的“证据”。
可以将工程系统设计成:
Knowledge Memory:
面向快速检索。
Evidence Memory:
面向事实追溯和复杂推理。
2. 不同类型记忆不能使用同一处理流程
Knowledge Alignment 的实验很有启发。
对 Note Memory 来说:
规范化和指代消解非常重要。
对 Episode Memory 来说:
过度改写反而可能破坏原始信息。
因此,在实际 Agent 项目中,不应该对所有内容统一执行:
摘要;
改写;
向量化;
去重;
覆盖。
而应该先判断记忆类型,再选择处理方式。
例如:
| 记忆类型 | 推荐操作 |
|---|---|
| 用户明确事实 | 规范化、去重、更新 |
| 用户偏好 | 保存条件、时间和置信度 |
| 原始工具结果 | 尽量保留原文 |
| 调试过程 | 保存尝试、结果和证据 |
| 用户画像 | 保守推断、允许撤销 |
| 历史事件 | 追加而不是覆盖 |
3. 检索失败可以成为记忆学习信号
传统系统面对检索失败时通常只会:
增加 Top-K;
换一个 Embedding;
扩大搜索范围;
直接交给大模型猜测。
HiMem 提供了另一种思路:
检索失败
↓
检查原始情节
↓
如果原始情节能够回答
↓
说明知识层存在缺口
↓
补充知识层
这让记忆系统能够根据真实使用情况逐渐优化。
未来可以记录:
哪些查询经常需要下钻?
哪些 Note 经常无法回答?
哪些 Episode 经常被引用?
哪些知识应该提前抽象?
这些数据可以进一步优化记忆创建策略。
4. 自进化不一定马上提高整体准确率
论文中,Memory Self-Evolution 对 Note Memory 提高了 5.85 个点,但对完整系统只带来约 0.28% 的提升。
这并不说明自进化没有价值。
它更可能改善:
未来相似查询的检索路径;
Note Memory 的知识覆盖;
长期平均 Token 成本;
Episode 层的下钻次数。
因此,评估自进化记忆时不能只看当前问答准确率。
还应该评估:
经过 N 轮交互后,
检索成本是否降低?
同类问题是否更快回答?
知识冲突是否减少?
记忆覆盖率是否逐渐提高?
5. 可以如何应用到自己的 Agent?
如果在自己的 Agent 项目中实现一个简化版 HiMem,我会使用三层结构:
第一层:Raw Trace
保存原始对话、工具结果、文件变化和环境反馈。
第二层:Episode Memory
按照任务、事件、错误和状态变化切分原始轨迹。
第三层:Knowledge Memory
提取稳定事实、用户偏好、任务约束和可复用经验。
每条知识记忆增加:
来源 Episode;
创建时间;
最后更新时间;
置信度;
是否为用户明确表达;
是否经过工具验证;
有效时间范围。
检索时采用:
先检索 Knowledge;
证据不足时检索 Episode;
仍然不足时回到 Raw Trace。
更新时采用:
新知识
↓
与旧知识比较
↓
ADD / UPDATE / DELETE / NOOP
↓
保留更新原因和证据来源
6. 与其他论文的联系
| 方法 | 核心关注点 |
|---|---|
| Mem0 | 事实记忆的生命周期管理 |
| A-MEM | 记忆之间的动态关联 |
| TrustMem | 记忆更新的可靠性验证 |
| GAM | 轻量索引与完整信息分离 |
| HORMA | 层级工作空间与主动导航 |
| Proactive Memory Agent | 记忆何时介入行动循环 |
| HiMem | 情节证据与抽象知识的层级组织和再巩固 |
HiMem 与 GAM、HORMA 都体现了类似趋势:
不再试图用一种记忆表示解决所有问题,而是为不同信息密度和不同使用目的建立多个层次。
HiMem 更独特的地方是:
通过检索失败发现知识缺口;
再从情节证据中补充 Note Memory;
形成使用驱动的记忆再巩固闭环。
二十二、总结
HiMem 提出了一种面向长对话 Agent 的层级长期记忆框架。
它将记忆分为:
Episode Memory:
保存带有时间和原始上下文的具体情节。
Note Memory:
保存事实、用户偏好和用户画像等抽象知识。
在记忆创建阶段,HiMem 使用:
Topic-Aware Event-Surprise 双通道分割;
多阶段知识提取;
选择性的 Knowledge Alignment。
在记忆检索阶段,HiMem 支持:
Hybrid Retrieval:
同时检索两层记忆,提高覆盖率。
Best-Effort Retrieval:
先检索 Note,必要时再下钻 Episode。
在记忆更新阶段,HiMem 使用:
检索失败;
Episode 证据补充;
冲突关系判断;
ADD、UPDATE、DELETE;
构成 Memory Reconsolidation 闭环。
实验表明,HiMem 在 LoCoMo 上取得 80.71 的总体 GPT-Score,高于 A-MEM、SeCom 和 Mem0。
消融实验进一步说明:
Episode Memory 是复杂推理和证据保真的基础;
Note Memory 主要提高知识定位和检索效率;
Knowledge Alignment 对 Note 有益,但可能损害 Episode;
记忆自进化能够明显改善 Note 的知识覆盖;
混合检索和按需下钻分别适合准确率与成本优先场景。
不过,HiMem 仍然依赖 LLM 进行事件分割、知识提取、冲突判断和证据自评。
它的主要实验也集中在单用户文本长对话,并使用与基础模型相同的 GPT-4o-mini 作为 Judge。
因此,更准确的结论是:
HiMem 验证了“具体情节 + 抽象知识 + 使用驱动更新”这一层级记忆范式的有效性,但其自进化可靠性、真实长期成本以及在复杂 Agent 任务中的泛化能力仍需继续验证。
这篇论文给我的最大启发是:
Agent 长期记忆不应该只保存抽象结论,也不能只堆积原始历史,而应该同时维护知识和证据,并让抽象知识在真实使用中不断接受原始证据的修正。
参考资料
- Ningning Zhang, Xingxing Yang, Zhizhong Tan, Weiping Deng, Wenyong Wang. HiMem: Hierarchical Long-Term Memory for LLM Long-Horizon Agents. arXiv, 2026.
- HiMem 代码仓库
更多推荐

所有评论(0)