文章目录


前言

前面已经阅读了 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 主要关注长对话 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 长期记忆不应该只保存抽象结论,也不能只堆积原始历史,而应该同时维护知识和证据,并让抽象知识在真实使用中不断接受原始证据的修正。


参考资料

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐