MemFail:换更强模型不加分,Hard条件全员低于四成

MemFail: Stress-Testing Failure Modes of LLM Memory Systems

Ishir Garg, Neel Kolhe, Dawn Song, Xuandong Zhao

cs.AI, cs.LG

2026-05-26

MemFail把记忆系统拆成摘要、存储、检索,对抗测四套开源方案。没有一家全面领先;Hard条件任务全员低于四成,换更强模型几乎不加分。

这篇在解决什么

Agent 要跨很多轮对话保持人设和偏好,几乎都会外挂一套记忆系统:先把对话压短,写入外部库,下次再检索塞进 prompt。现成的评测(LoCoMo、LongMemEval、MemBench)把这条链路当成黑盒,只给一个问答总分。错了之后,分不清是摘要把条件压没了、入库时把两条可并存的偏好互相覆盖了,还是检索没把该拿的条目拿回来。

这是选型时真正卡住的地方。Mem0、A-MEM、SimpleMem、StructMem 分别押注原子事实加工具调用更新、描述性笔记、原样存 turn、知识图谱,失败签名完全不同,却没有诊断能把错钉到具体操作上。UC Berkeley 的 MemFail 专门干这件事:五个对抗数据集、四个任务,分别诱发摘要失败、存储失败和检索失败。

方法

记忆系统被写成三步。Summarization 把一段对话压成值得留下的表示。Storage 把这份表示写进库,允许覆盖、合并、追加或空操作。Retrieval 按查询取 top-k,塞进 agent 的 prompt。

对应三类记忆系统自己的失败。摘要失败是关键限定被压掉或写歪,比如「对花生致命过敏」变成「对花生过敏」。存储失败是该覆盖的没覆盖,该并存的被当成矛盾删掉。检索失败是该回的没进 top-k,或回了语义近但场景不对的条目。推理失败单独记账,那是下游 LLM 的问题。

接入只要三个函数:storeconversation、retrievememories、getallmemories。前两个走评测循环,第三个只给 judge 做归因,部署时不必暴露。

四个任务对着四种坑:

数据量:Easy/Hard 条件各 100 题,共存偏好按 N 拆成 26/31/20/23 题,人设 100 篇、300 道评分题(52.3% 是误导题),长跳按 K 拆成 31/32/29 题。全是 LLM 合成后再人工核正确性。

评测分存储、提问、打分。提问不写库。Judge 固定 gpt-5-mini,对每条应召回记忆依次查:在不在库、关键细节在不在、进没进 top-k、下游用没用上。人工抽 100 条,答题正确率 98%,错误类型分类 98.4%。内部模型扫了 gpt-4.1-mini、haiku-4.5、gpt-5.4-mini、gemini-3.1,k 从 4 扫到 20。

结果

主图用内部模型 gpt-4.1-mini。三条结论,聚合成一个总分会看丢。

没有一家全面领先。图谱系 StructMem 在因果类任务上相对好看,Coexisting-Facts 几乎趴平,k 加到 20 成功率仍大约 10%。Mem0 正好反过来:短句偏好存得住,同一任务上 k=4 大约 20%、k=20 大约 75%;但 Persona-Retrieval 的非误导题卡在大约 15-20%,因为它靠 LLM tool-call 做 ADD/UPDATE/DELETE,长散文发不够次数的调用。

加大 k 只对检索瓶颈有用。Conditional-Facts Hard 是摘要瓶颈,四套系统全员压在大约 15-40%,k 从 4 加到 20 几乎不动。Easy 变体上 SimpleMem、A-MEM、StructMem 能到 80-100%,Mem0 卡在大约 60%。Long-Hop 即便 k=20 也大致停在 20%-40%,StructMem 和 SimpleMem 略高一截。Persona 误导题普遍 80-100%,「不把别人的档案乱套」这件相对容易。

换更强内部模型几乎不加分,有时更差。更强的推理模型会写出更啰嗦的记忆,把 embedding 空间和上下文一起弄脏。token 也不是越多越好:摘要瓶颈任务(Persona、Conditional-Facts Hard)多留字有收益;检索瓶颈尤其是 Coexisting-Facts,大块记忆会污染语义空间,准确率往下走。A-MEM 把对话写成描述性笔记,单条 token 比别家高一个数量级,检索类任务并没有换来匹配的提升。

除了 Mem0 在长条目上有明显存储失败,其余系统的错几乎全是摘要或检索。

为什么重要

做 agent 记忆,别再用一个 LoCoMo 式总分当选型和迭代指标。MemFail 把架构选择翻译成可复现的失败签名:图谱擅长跨实体因果,扁平向量库擅长人设与多偏好召回,tool-call 更新处理短事实时干净、碰到长文本就丢条目。换更强内部模型解决不了这些,加 k、加 token 也只在对症的任务上有效。

数据和评测代码已开源。自家系统只要暴露那三个函数就能对上同一套诊断。论文末尾给了两条后续:按经验类型路由到不同子库(mixture-of-memories),以及按任务动态决定记忆该写多长。

这是诊断工具,不是部署分数。合成数据上 Hard 条件全员低于四成,说明「压细节」是当前记忆系统的共性病,不是某一家实现的 bug。

局限与存疑

五份数据全是 LLM 合成(gpt-4.1-mini / gpt-5-mini / gpt-5),人工只核过正确性,对话分布、实体、措辞可能比真实用户窄。分数应当当成失败模式信号,不能外推成线上助手的端到端表现。

只测了四套暴露那三个 API 的开源系统。隐式记忆、写进权重的记忆、微调出来的记忆不好套这套 harness。延迟虽然管线里记了,正文故意没分析。

Judge 和答题模型都是 gpt-5-mini,归因链路对自家模型更友好,换别的 judge 错误类型会不会漂,论文没做。Hard 条件全员低,有多少是摘要真丢掉了条件、有多少是散文把条件写得很散,附录给了例子但没有按「人能不能一眼抓住条件」分层。Coexisting-Facts 总共 100 题、Long-Hop 92 题,按 N 和 K 拆开每档只有二三十条,StructMem 在共存偏好上「几乎全崩」方向对,区间会比较宽。主文数字大多要从折线图读,论文没有给出逐格表。

术语

原文与代码

社区讨论

相关论文

全部论文解读