LongMemEval:从零理解聊天助手的长期记忆评测、系统设计与完整实验(ICLR 2025)
论文:LongMemEval: Benchmarking Chat Assistants on Long-Term Interactive Memory
论文链接:arXiv 摘要 · 本文阅读版本 PDF:2410.10813v2
作者:Di Wu、Hongwei Wang、Wenhao Yu、Yuwei Zhang、Kai-Wei Chang、Dong Yu
机构:UCLA、Tencent AI Lab Seattle、UC San Diego
发表:ICLR 2025
版本:2024 年 10 月首发;本文依据 2025 年 3 月 4 日的 v2,共 28 页
官方项目:xiaowu0162/LongMemEval
笔记时间:2026 年 10 月 16 日
本文覆盖论文正文、附录 A–E、实验表格、提示词设计、错误分析及伦理声明。它是一份面向初学者的解释性阅读笔记,不是逐句翻译。文中的“作者解释/假设”表示论文提出但未必独立验证的机制解释;“本文解读/延伸”表示为理解和开展工作补充的分析。实验数字属于论文当时的模型与设置,不能用来判断 2026 年产品的当前能力。文末专门记录原文内部不一致和复现时仍需确认的事项。
1. 先理解:这篇论文到底在解决什么问题
1.1 能聊天、支持长上下文和有长期记忆,是三件不同的事
一个助手可能在当前对话里回答得很好,却不知道你上个月换了工作;也可能记得你喜欢摄影,却忘记自己曾向你推荐过什么镜头。长期记忆要解决的是:在持续发生、不断变长的交互中,保存有用信息,在未来问题出现时找回相关证据,并结合时间、更新和多条证据给出正确回答。
这里的“记忆”主要指系统可读写的外部记忆,不等于模型预训练参数中学到的世界知识。知道某个相机品牌是什么,是世界知识;知道“这个用户上周买了该品牌的某款相机”,才是交互中形成的个人知识。
长上下文窗口只说明一次可以输入多少 token,不保证模型能准确利用每处信息。token 是模型处理文本的基本单位,不能直接等同于汉字、英文单词或对话轮数。即使能塞入全部历史,也可能出现遗漏、干扰、时间混淆,以及读取成本随历史增长的问题。
1.2 作者认为既有评测漏掉了什么
论文引言提出两组不足。
第一,历史对话不够贴近真实助手使用:不少数据是人与人闲聊,或者集中在个人背景交谈,缺少写简历、安排旅行、选购产品等任务型互动。实际任务里,用户常常只顺带透露一句个人信息,助手却会产生很长的回复。这种信息密度和角色分布,与短小的人设对话不同。
第二,评测能力不完整:找回一句话只是起点。系统还要汇总不同会话、记住助手说过的话、判断哪个信息已被更新、理解相对时间,以及面对错误前提时承认不知道。原有历史长度通常固定,也不便于随着模型进步继续提高难度。
因此,这篇论文同时做了两件事:
- 构造一个有人工证据标注、历史长度可扩展的长期记忆评测集。
- 用它拆解记忆系统的设计因素,而非只公布一个排行榜或提出一个复杂的新模型。
1.3 先记住整篇论文的逻辑链
1
2
3
4
5
6
7
8
9
10
11
12
13
未来问题尚未出现
↓
用户与助手持续产生会话
↓
索引阶段:保存什么?用什么表示让它容易被找到?
↓
未来问题出现
↓
检索阶段:如何理解问题,找回相关历史,处理时间约束?
↓
阅读阶段:如何从取回的材料中提取证据、推理并回答?
↓
分别检查:证据有没有找全?答案是否正确?
作者最终推荐的经验组合是:以一轮用户—助手交互作为存储粒度,保留对话内容;在检索键中加入提取出的用户事实;对确实可以解析出时间区间的问题使用时间约束;把检索结果按时间排序,以 JSON 呈现,并要求模型先提取相关证据再作答。后文会解释为什么这些建议都有适用条件。
2. 入门概念与相关研究位置
2.1 session、round、fact、key、value 分别是什么
| 概念 | 中文解释 | 对长期记忆的影响 |
|---|---|---|
| Session | 一次多轮会话 | 语境完整,但可能很长且混合多个主题 |
| Round | 一条用户消息和紧接着的一条助手回复 | 比整段会话更聚焦,仍保留局部交互上下文 |
| Fact | 从对话抽取的一条事实 | 简短、易聚合,但可能遗漏限定条件或细节 |
| Value | 找到以后交给阅读模型的记忆内容 | 决定最终有没有足够证据回答 |
| Key | 用于定位这份内容的检索表示 | 决定相关记忆能否进入候选集 |
| Query | 从当前问题形成的检索请求 | 可以包含文本含义,也可以包含时间约束 |
| Reader | 阅读检索材料并回答问题的语言模型 | 即使检索正确,也可能读错或推理错 |
| Oracle retrieval | 人为只提供已标注的证据材料 | 隔离阅读困难;不是可直接部署的真实检索器 |
最重要的区别:key 可以比原文更突出某些信息,value 则仍然保留原文。 把抽出的事实拼进 key,不意味着要把原始对话压缩掉。
2.2 与一般 RAG 的关系
RAG,即检索增强生成,通常先从外部文档中找材料,再让模型回答。本文把这个过程用在用户与助手的交互历史上。
它多出几种困难:历史不断增加;同一人的状态会改变;“上周”“上次”需要时间定位;用户和助手分别承担不同的信息来源角色;信息的重要性在写入时未必显而易见;未来查询可能要求将多段不相邻对话拼在一起。
本文解读:普通文档检索常问“哪个文档包含答案”,长期记忆还会问“这条陈述发生在何时、当时是否成立、后来是否失效、说的是用户真实经历还是助手的建议”。论文覆盖了其中一部分,但没有完整解决所有状态管理问题。
2.3 论文归纳的三条记忆技术路线(原文 §2)
- 延长上下文:直接读全部历史。系统简单,但成本高,也可能受到无关内容干扰及“中间信息不容易被利用”的影响。
- 可微记忆模块:修改模型结构或训练方法,将外部记忆访问融入模型计算,例如 Memory Networks、Memorizing Transformers 等方向。
- 上下文压缩与检索:把历史变成内部压缩表示、离散 token,或者可检索文本块。本文主要采用逐会话处理的外部记忆视角,便于接入既有助手。
基准本身并不要求必须用 RAG;作者研究的优化方案才主要属于第三条路线。
2.4 既有基准比较(原文 Table 1)
下表保留原论文的比较口径,数字中的 k、M 分别约为千、百万;它们不是本文重新统计的当前版本规模。
| 基准 | 场景 | 会话数 | 问题数 | 上下文深度 | 论文标记的能力覆盖 |
|---|---|---|---|---|---|
| MSC | 开放域 | 5k | — | 1k | 没有按本文五种问答能力设置 |
| DuLeMon | 开放域 | 30k | — | 1k | 同上 |
| MemoryBank | 个人信息 | 300 | 194 | 5k | 信息提取、时间推理 |
| PerLTQA | 个人信息 | 4k | 8,593 | 约 1M | 信息提取、拒答 |
| LoCoMo | 个人信息 | 1k | 7,512 | 10k | 信息提取、跨会话、时间推理、拒答 |
| DialSim | 电视剧角色 | 1k–2k | 约 1M | 350k | 信息提取、跨会话、时间推理、拒答 |
| LongMemEval | 个人信息 | 50k | 500 | 115k / 1.5M | 五种能力全部覆盖 |
PerLTQA 的上下文深度是作者估计值;DialSim 的跨会话能力在表下注释中限制为最多两次会话。正文还提到 MemoryBank 的 15 位用户、LoCoMo 的 50 条长期历史,以及 PerLTQA 的 3,409 段对话,表格中部分数量作了取整或使用不同统计单位。长期历史条数、其中的 session 总数、最终问题数不能混为一谈。
这张表证明的是作者设定下的覆盖范围差异,不代表其他基准没有价值,也不代表问答题数越少反而越好。
3. LongMemEval 的任务定义与七类问题
3.1 每个评测样本是一个四元组(原文 §3.1)
\[(S,q,t_q,a),\qquad S=[(t_1,S_1),(t_2,S_2),\ldots,(t_N,S_N)],\qquad t_q>t_N.\]这里,$S$ 是按时间从早到晚排列的完整历史;$N$ 是会话数;$S_i$ 是第 $i$ 个会话;$t_i$ 是该会话时间;$q$ 是未来问题;$t_q$ 是问题提出时间;$a$ 是参考答案。
$a$ 不一定是一个字符串。有些题是开放的个性化建议,因此它可以是一段评价标准,规定答案应该如何利用用户信息。
评测在线记忆系统时,应依次提供历史会话,最后才提出问题。不能在建立记忆时把未来问题或答案交给系统,否则就变成针对已知问题筛选证据,偏离长期记忆任务。
3.2 五种核心能力与七类问题的对应关系
| 能力 | 问题类型 | 实际在测什么 |
|---|---|---|
| 信息提取 IE | single-session-user | 找回用户在某次会话中说过的信息 |
| 信息提取 IE | single-session-assistant | 找回助手在某次会话中提供的信息 |
| 信息提取/个性化使用 | single-session-preference | 利用用户信息形成符合偏好的回答 |
| 跨会话推理 MR | multi-session | 跨两次以上会话聚合、比较、计数 |
| 知识更新 KU | knowledge-update | 识别个人信息变化,使用适合问题的新状态 |
| 时间推理 TR | temporal-reasoning | 同时利用时间戳和对话里的时间表达 |
| 拒答 ABS | abstention | 识别历史并不支持的问题,避免补造答案 |
3.3 把 Figure 1 的七个例子逐一读懂
用户事实提取:用户谈有声书时顺带说通勤单程 45 分钟。未来问通勤多久,答案是单程 45 分钟。难点是事实隐藏在别的任务里,没有被显式标记成“请记住”。
助手事实提取:助手曾推荐罗马适合浪漫晚餐的餐厅 Roscioli。之后用户问“你推荐的是哪家”。只保存用户画像无法完成这个任务,必须保留助手说过什么。
偏好使用:用户询问 Sony A7R IV 闪光灯、Sony 24–70mm f/2.8 镜头维护、相机包升级。未来让助手推荐配件,应体现与 Sony 摄影设备的兼容性。这里不是复述一句“你喜欢 Sony”就够了,信息必须影响实际建议。
跨会话汇总:用户在不同会话提到 Korg B1 钢琴、Fender Stratocaster 电吉他、Yamaha FG800 木吉他,以及考虑出售的 Pearl Export 鼓。问目前有多少乐器,原例答案为 4。尤其“考虑卖掉”不等于“已经卖掉”,需要保留状态限定。
知识更新:先提到一家人去夏威夷,后来提到刚去过巴黎。问最近一次家庭旅行,要答巴黎。找回一个语义相关地点还不够,还要判断时间和更新关系。
时间推理:不同日期谈到与朋友、父亲一起参观不同博物馆。问距离上次“与朋友”参观过去几个月,需要同时筛选同行对象、定位事件时间、计算与提问时间的间隔。不能简单选最近一条“博物馆”记录。
拒答:历史涉及 10 加仑和 20 加仑鱼缸,用户却问 30 加仑鱼缸里有多少鱼。正确行为是指出缺少这项信息,而不是挪用相似鱼缸的数字。
这些例子说明:一个关键词命中不等于找对证据,一段看起来相关的回答也不等于完成记忆任务。
3.4 拒答不是单独采集完全陌生的问题
作者从其他类型中选 30 个问题,改成带错误前提的问题。这样,历史中存在很像答案的内容,模型更容易被诱导去填补空缺。
本文解读:这是在测试“证据边界”。但 30 个拒答问题仍然很少,也不足以覆盖现实中所有缺失、矛盾、歧义和不确定性情况。
4. 数据构造:真正昂贵的是人工控制证据
本节整合正文 §3.2、Figure 2、附录 A.1–A.3 及 Figure 7–9。
4.1 先定义 164 个属性,再生成用户背景
作者人工建立属性体系,包含五大类。它并不是简单给每个用户分配“爱旅行、爱音乐”几个标签,而是为生成有细节、跨时间的个人经历提供主题空间。
| 大类 | 子类和覆盖内容 |
|---|---|
| 人口统计信息 | 年龄、性别、族裔、国籍、语言、教育水平、职业 |
| 生活方式 | 购物、媒体消费、社交媒体参与、日常作息、旅行、休闲娱乐、饮食烹饪、活动参与 |
| 情境 | 家居环境、社交环境、时间环境 |
| 人生事件 | 教育与职业变化、家庭变化、健康经历、迁居等 |
| 拥有的物品 | 交通工具、电子设备、宠物、房产、收藏、服饰、运动和兴趣设备等 |
Table 5 中生活方式的展开很具体:
- 购物:网购频率、常去商店、会员计划、促销、优惠券、送礼习惯、环保倾向、奢侈或预算型购物、电子产品、服装、食品杂货、替他人购物。
- 媒体消费:书、电影、电视剧、音乐、播客、电子游戏、流媒体、剧院、报刊、YouTube、教育内容、有声书和电子书。
- 社交媒体:发帖、评论、关注者、群组、标签、活动、私信、直播、暂停使用社交媒体。
- 作息:起床、睡眠、上班上学、用餐、运动、茶歇、通勤、晚间和周末活动、清洁安排、与亲友相处。
- 旅行:频率、目的地、自驾、旅行社、户外探险、航空公司、酒店、家庭或独自旅行、打包习惯。
- 休闲:阅读、绘画、乐器、舞蹈、看体育和参加运动、园艺、观鸟、钓鱼或狩猎、桌游、电子游戏、健身课、瑜伽、雕塑、摄影、单口喜剧、写作、收藏、模型、水族饲养。
- 饮食烹饪:家常菜、外卖、素食、菜系偏好、零食、烧烤、烘焙、调酒、烹饪课程。
- 活动参与:演唱会、剧院、美术馆和博物馆、体育比赛、电影节、宗教活动、读书活动、慈善、展会、讲座或工作坊、主题公园、集市、社交活动、赛车、博物馆导览等。
情境进一步区分家中房间、装修风格、照明、家具、技术设备和植物;独处、家人、朋友、陌生人互动;一天中的时间、星期和季节。
人生事件涉及毕业、学术成就、留学、重要项目、升职、创业、出生或收养、婚姻、家庭团聚、疾病或手术、心理健康经历、购房、旅行、搬家、海外生活、难民或移民经历、失去亲人、改名、信仰和里程碑。物品类别包括汽车、自行车及其他车辆、电脑、手机、宠物及农场动物、动物护理用品、住房土地、艺术古董与收藏、稀有物品、衣服首饰鞋包、运动装备、乐器、健康设备、手工和摄影用品。
这些类别的意义是让问题来源具有足够广度;它们本身不是最终系统必须采用的记忆 schema。
4.2 背景生成提示词想要什么(Figure 7)
默认用 Llama 3 70B Instruct。输入一个属性主题,让模型想象用户近期在该方面的个人事实,生成较长、信息充分的文本,包含横跨数天、数周或数月的事实或事件,不要求写成故事。
作者发现这个零样本提示已足以产生后续出题所需的细节,因此没有在这一步使用更复杂的方法。
4.3 模型提议题目,人工决定题目的质量
Llama 3 70B Instruct 根据背景提出候选问答;时间推理、跨会话推理和偏好题还使用 GPT-4o 提供候选。每个问题类型约生成 1,000 个候选,最终保留率约 5%。这个比例是论文报告的粗略数,不宜与总计 500 题机械相乘还原精确流程。
作者认为自动候选往往深度和多样性不足,所以经过大量人工过滤、编辑和改写。随后人工把答案拆成一条或多条证据陈述,必要时先给问题和证据分配日期。
这一步将问题的逻辑结构显式化。例如“旺季每周工作多少小时”,可以被拆成“平常每周 40 小时”和“旺季多 10 小时”。最终答案 50 需要两份证据合成,而不是直接把 50 放进一个容易检索的句子。
4.4 将每条证据分别藏进任务型会话
两份 LLM 分别扮演用户和助手进行 self-chat。用户侧掌握背景与目标证据,以自然任务间接透露信息。例如通过咨询车险透露刚买车,而不是直接宣告“你要记住我买车了”。
Figure 8 的关键约束是:用户消息短,通常 1–2 个简单句;语气中性,不要过分热情、正式、客气或冗长;不反复回复感谢,而是直接问后续问题;不能泄漏该题其他证据。助手侧直接响应用户消息,没有额外的专门提示工程。
每段模拟最多 10 轮;任一侧生成空序列可以提前结束。这一步使用的 Llama 3 70B,与后面系统索引实验使用的 Llama 3.1 8B 是不同用途的模型,不能混淆。
4.5 人工审核既检查答案,也控制难度
专家逐段检查:
- 指定证据是否真的出现在对话中。
- 是否不小心透露了其他证据,导致跨会话题在一段内就能回答。
- 表述是否自然,尤其时间表达是否像用户日常说话。
- 证据在会话中的位置是否有变化。
- 会话是否自然结束,角色有没有混乱。
约 70% 的模拟会话经过人工修改。少数模拟用户变成了助手角色,无法修复的样本会被丢弃。作者还标注证据的具体位置,因此可以独立评估检索过程。
4.6 加入干扰历史:不是简单重复随机文本
附录 A.2 将过程拆成三个阶段。
会话池:ShareGPT、UltraChat、与当前问题属性不冲突的模拟会话。模拟干扰内容与证据有类似的风格和主题,但应避免引入让答案失效的矛盾。
抽样与排序:标准混合比例为 25% ShareGPT、25% UltraChat、50% 模拟会话。将干扰会话与证据会话混排;如果证据之间有必要的先后关系,再调整它们的顺序。
时间戳处理:若证据预先有日期,以其作为锚点,给前后干扰会话分配合理日期;若没有预设日期,则在 2023 年 5 月内随机赋值。
这样,同一个问题可以配置不同长度的“干草堆”。不过历史长度可扩展,主要表示干扰量可以增加,不意味着随着历史增加,真实人物经历的复杂性也等比例增加。
4.7 S、M、Oracle 三种设置
| 设置 | 给系统的历史 | 用途 |
|---|---|---|
| LongMemEval S | 每题约 115k token,正文描述约 50 个 session | 评估较长但仍能尝试整段输入的历史 |
| LongMemEval M | 每题 500 个 session,约 1.5M token | 评估大规模记忆与检索方案 |
| Oracle sessions | 只提供该题证据会话 | 去掉检索困难,诊断阅读与推理能力 |
M 的 500 是每题历史中的会话数;全基准的 500 是问题数。两者数字相同但含义不同。
4.8 Figure 9 的统计信息不能略过
六类基础题在图中约占:用户信息 14%、助手信息 11%、偏好 6%、跨会话 27%、知识更新 16%、时间推理 27%。这是图上取整后的比例,总和可能不是 100%。图中没有将 30 个拒答题作为独立扇区展示,不宜据此反推七类题的精确数量。
证据会话数最多 6 个,其中两会话最多,单会话也占较大部分。需要多会话证据的不仅是名称叫 multi-session 的题,知识更新和时间推理也可能需要多段历史。
证据在会话中位置不完全相同,但显著集中在第一轮。因而“位置具有多样性”不能理解成“均匀分布”。这是判断基准代表性时应保留的细节。
5. 如何评分:答案正确率与证据召回必须分开
5.1 用语言模型判断答案,而不是逐字匹配
原文 §3.3 使用 gpt-4o-2024-08-06 作为自动评判器,输入问题、标准答案或 rubric,以及模型回答,输出 yes/no。原因是同一个答案可以有多种表达,开放式个性化建议更无法用字符串完全匹配。
这不是让评判模型独立重新查全部历史。 它主要依据标准答案或 rubric 判断候选回答是否满足要求。
5.2 Figure 10 的四套评判规则
| 题型 | 规则的实质 |
|---|---|
| 一般题型 | 包含正确答案、语义等价,或包含足以得到答案的全部中间步骤,可以判对;只回答所需信息的一部分判错 |
| 时间推理 | 在上述规则上,允许天数、周数、月数等出现相差 1 的计数误差 |
| 知识更新 | 同时说到旧信息不自动判错,只要更新后的正确答案也被提供 |
| 偏好题 | 不必覆盖 rubric 的每一条,只要正确回忆并使用了用户个人信息即可 |
这几个细节会实际改变分数含义。时间题的正确率不是严格日历计算精度;偏好题的正确率不是“完全符合所有偏好”;知识更新得分也不保证答案只给当前状态而完全不提旧状态。
5.3 人工元评测(附录 A.4、Table 6)
每种问题类型取 30 题,分别收集 GPT-4o 和 Llama 3.1 8B 的长上下文回答,用人工判断核对自动评判器。
| 题型 | 对 GPT-4o 回答的判分一致率 | 对 Llama 3.1 8B 回答的判分一致率 |
|---|---|---|
| 用户信息 | 30/30 | 29/30 |
| 助手信息 | 30/30 | 30/30 |
| 用户偏好 | 27/30 | 29/30 |
| 跨会话 | 30/30 | 30/30 |
| 知识更新 | 30/30 | 30/30 |
| 时间推理 | 30/30 | 29/30 |
| 拒答 | 29/30 | 27/30 |
| 表中平均值 | 0.98 | 0.97 |
共涉及两组各 210 个判分。作者将偏好和拒答的部分偏差归因于答案开放性。高一致率支持使用该评判器,但不能证明每个边界案例都会判断正确,也不能直接外推到不同语言、不同输出风格或后续所有模型。
5.4 Recall@k 和 NDCG@k 的直观含义
Recall@k 关注前 $k$ 条检索结果覆盖了多少标注证据;NDCG@k 进一步考虑相关内容是否排在靠前位置。以下是帮助理解的标准检索指标写法,不是论文逐字给出的实现公式:
\[\mathrm{Recall@k}=\frac{|E\cap R_k|}{|E|}, \qquad \mathrm{DCG@k}=\sum_{j=1}^{k}\frac{2^{\mathrm{rel}_j}-1}{\log_2(j+1)}, \qquad \mathrm{NDCG@k}=\frac{\mathrm{DCG@k}}{\mathrm{IDCG@k}}.\]$E$ 是相关证据集合,$R_k$ 是取回的前 $k$ 条,$\mathrm{rel}_j$ 是第 $j$ 条的相关性,IDCG 是理想排序的 DCG。实际复现还要核对项目代码对 round/session 标注映射、拒答题以及聚合方式的处理。
特别注意:附录 E.5 把检索是否“正确”做成了二元事件,并说明严格标准下漏掉旧状态也会判检索失败。不能直接把这一二元事件与表格里的平均 Recall@k 当成同一个量。
例如一题需要三条证据,只找回两条,部分覆盖率仍然不错,但缺失的第三条可能使计数答案必然错误。反过来,更新题只找到最新状态时,尽管缺少旧证据,仍可能正确回答当前状态。
6. 先导实验:为什么需要专门的长期记忆设计
6.1 商业系统人工实验的设置比标准 S 小很多
正文 §3.4 和附录 B 选了 97 题,每题只有 3–6 个 session,约比 S 短一个数量级。人工通过网页逐会话、逐轮与系统交互,再开新会话提问;每道题结束后手动清空记忆。问题分给五位标注者,存在争议时讨论。
这里干扰会话使用 50% ShareGPT + 50% 模拟会话,不是标准基准的 25/25/50 混合。评测在 2024 年 8 月前两周完成。
实验还排除了:需要跨数月真实交互的部分时间推理题、助手发言记忆题,以及拒答题。拒答未测,是因为当时使用的早期数据版本尚无这类题。不能把此实验描述成在完整七类标准评测上的产品排名。
6.2 总体结果(Figure 3a)
| 系统 | 所用模型 | 正确率 |
|---|---|---|
| 离线直接阅读同一短历史 | GPT-4o | 0.9184 |
| ChatGPT | GPT-4o | 0.5773 |
| ChatGPT | GPT-4o-mini | 0.7113 |
| Coze | GPT-4o | 0.3299 |
| Coze | GPT-3.5-turbo | 0.2474 |
GPT-4o 下,ChatGPT 相对离线阅读约下降 37%,Coze 约下降 64%。例如:
\[\frac{0.9184-0.5773}{0.9184}\approx37.1\%.\]它不是下降 37 个百分点,实际绝对差是 34.11 个百分点。文章里“百分比”和“百分点”要始终区分。
mini 的系统结果高于 GPT-4o,并不能证明 mini 的底层推理更强:比较对象是包括写入、压缩、读取等机制的完整产品配置,而不是同样上下文下的纯模型能力。
6.3 分能力结果与故障原因(Table 7)
| 系统/模型 | IE 用户信息 | MR 跨会话 | KU 更新 | TR 时间 |
|---|---|---|---|---|
| ChatGPT / GPT-4o-mini | 1.000 | 0.647 | 0.667 | 0.652 |
| ChatGPT / GPT-4o | 0.688 | 0.441 | 0.833 | 0.435 |
| Coze / GPT-3.5-turbo | 0.625 | 0.118 | 0.375 | 0.043 |
| Coze / GPT-4o | 0.813 | 0.147 | 0.208 | 0.391 |
这组 TR 仅包含不依赖会话元数据的时间题。论文观察到,Coze 常常根本没有记下间接透露的信息;ChatGPT 通常一开始记录了证据,随后在压缩或改写记忆时损失信息。
作者想强调的权衡:以简短用户画像支持“看起来懂你”的个性化,与长期准确保留可供复杂问答使用的证据,并不是同样难度的目标。这里的故障原因来自人工观察,论文没有公开产品内部机制来验证更细的因果链。
6.4 长上下文直接阅读实验(Figure 3b)
下面完整保留 Oracle 与 S 对照。CoN 表示先提取笔记再回答,后文详解。
| 模型 | Oracle 无 CoN | S 无 CoN | 相对下降 | Oracle 有 CoN | S 有 CoN | 相对下降 |
|---|---|---|---|---|---|---|
| GPT-4o | 0.870 | 0.606 | 30.3% | 0.924 | 0.640 | 30.7% |
| Llama 3.1 70B | 0.744 | 0.334 | 55.1% | 0.848 | 0.286 | 66.3% |
| Llama 3.1 8B | 0.710 | 0.454 | 36.1% | 0.710 | 0.420 | 40.8% |
| Phi-3 128k 14B | 0.702 | 0.380 | 45.9% | 0.722 | 0.344 | 52.4% |
| Phi-3.5 Mini 4B | 0.660 | 0.342 | 48.1% | 0.652 | 0.324 | 50.3% |
三个不能略去的现象:
- 更大的模型未必在这项长上下文任务上更好。例如 Llama 70B 在 S 上低于 8B,不能只凭参数量预测长历史利用能力。
- CoN 不保证帮助整段 115k 历史阅读。它在 GPT-4o 上提高分数,在几个其他模型上却下降。
- 论文正文概括“下降 30%–60%”,但表中有 66.3%。更严谨的说法是“常见大幅下降,个别配置超过 60%”。
作者推测:历史继续增长时可能更差。本文没有把这个推测写成对任意模型、任意历史长度都已验证的规律。
7. 统一框架:三阶段、四个控制点
7.1 三阶段与四函数(原文 §4、附录 C.1)
记忆库可写成:
\[D=[(k_1,v_1),(k_2,v_2),\ldots].\]key 可以是离散文本、实体,也可以是连续向量;同一个 value 可以对应多个 key。附录用四个函数解释系统:
- $I$:索引函数,把会话转成键值记录。
- $Q$:查询构造函数,把自然语言问题变成检索器使用的表示。
- $S$:相关性评分函数,为记忆排序;可以是向量相似度,也可以是图上的排序。
- $R$:阅读函数,结合语言模型和取回的记忆生成答案。
为避免与前面的历史 $S$ 混淆,下面仅在教学性公式中把评分函数写成 $S_{\mathrm{score}}$:
\[D_i=I_{\mathrm{online}}(S_i,D_{i-1}),\qquad q'=Q(q),\qquad D'=\mathrm{TopK}\bigl(S_{\mathrm{score}}(q',D_N)\bigr),\qquad \hat a=R(M,D').\]实际阅读输入还包括问题和当前日期,附录符号把这些上下文省略了。在线索引函数可以修改或删除既有记录,不是只能追加;但论文的实证优化没有完整研究删除策略或生命周期管理。
7.2 四个控制点分别控制什么
| 控制点 | 决策 | 常见失败 |
|---|---|---|
| CP1 Value | 保存整会话、一轮,还是提取后的摘要/事实 | 太粗则噪声多,太压缩则证据消失 |
| CP2 Key | 用什么表示记忆以便匹配查询 | 重要事实被长文本埋没;抽象键又可能丢细节 |
| CP3 Query | 问题如何改写,是否加入时间范围 | 相似文本不等于同一时间;错误过滤排除证据 |
| CP4 Reading | 如何组织材料,如何指导提取和推理 | 找全后仍误读、漏数、混淆新旧状态 |
7.3 九类系统在框架中的位置(Table 2、附录 C.2)
| 系统 | Value / Key | 查询与检索 | 阅读方式 |
|---|---|---|---|
| In-context RAG | round/session;key=value | 原问题;平面相似度检索 | 直接回答 |
| MemoryBank | 摘要+round;key=value | 原问题;平面检索;表中标记有时间意识 | 直接回答 |
| LD-Agent | 摘要+事实;key=value | 关键词;平面检索;有时间意识 | 直接回答 |
| CoN | round/session;key=value | 原问题;平面检索 | 先笔记后回答 |
| ChatGPT | 事实型记忆;其他内部细节未知 | 原表保留未知项 | 未披露 |
| Coze | 事实型记忆;其他内部细节未知 | 原表保留未知项 | 未披露 |
| RAPTOR | round/session;节点摘要作 key | 原问题;平面或交互式检索 | 原表未指定 |
| MemWalker | round/session;节点摘要作 key | 原问题;交互式树导航 | 交互式阅读 |
| HippoRAG | round/session;实体作 key | 实体查询;Personalized PageRank | 直接回答 |
| 本文推荐组合 | round;原始键+事实 | 问题+时间;平面检索 | CoN |
“平面检索”可以理解为直接比较查询与候选 key,而不是让模型逐层走树。Personalized PageRank 则从查询相关实体出发,利用图连接传播相关性。
作者保留了复杂索引的潜在价值:图、树可能适合某些查询;交互式阅读可以在材料不足时回退再找。但动态加入新会话时,它们需要不同程度的重建或更新,交互式导航还增加模型调用延迟。这张表是设计映射,不是作者把九套完整系统统一跑过一遍后的性能排行榜。
8. 实验公共设置:复现前先固定这些变量
正文 §5.1 与附录 D 给出了以下设置:
| 项目 | 配置 |
|---|---|
| 主阅读模型 | GPT-4o、Llama 3.1 70B Instruct、Llama 3.1 8B Instruct |
| 默认检索器 | Stella V5 1.5B 稠密检索模型 |
| 索引信息提取器 | Llama 3.1 8B Instruct |
| 摘要/关键词/事实提取输入 | 只使用用户侧消息,跳过助手回复 |
| 原始 session/round 检索 key | 只保留用户侧发言 |
| 阅读顺序 | 按会话时间戳排序检索到的内容 |
| §5.2–§5.4 默认阅读 | CoN + JSON |
| 阅读解码 | 贪心解码 |
| 最大生成长度 | 800 token |
| 主要设计实验 | LongMemEval M |
“只用用户侧”是索引文本与提取实验的设置,不能扩写成所有原始 value 都删除了助手消息。round 的定义仍是用户消息加助手回复。也正因如此,索引只关注用户侧但评测包含助手信息,是值得单独研究的设计张力。
作者选 Stella 的依据是其在 MTEB 上的高表现;附录也比较 BM25 和 Contriever。论文没有提供完整的端到端延迟、显存、索引构建成本和生产吞吐量曲线,不应把准确率实验解释成全面的生产成本优势。
9. CP1:Value 粒度为什么重要(Figure 5)
9.1 实验比较了什么
作者比较五种存储表示:完整 session、拆分后的 round、session summary、session facts、round facts。横轴是送入阅读模型的 token 数,而不是只比较同一个 top-k;纵轴是答案正确率。GPT-4o 与 Llama 3.1 8B 分别报告全体问题和 multi-session 子集。
这是合理的比较方式:10 个完整会话与 10 轮对话的长度差距很大。如果只固定条数,会把“读取更多信息的收益”和“粒度本身的收益”混在一起。
9.2 完整会话保留语境,但会带入大量无关内容
一次会话可能从买相机转到旅游、预算、配件。检索到它虽然可能包含所需证据,但 reader 需要从大量文本中再找一次答案。在固定 token 预算下,大块会话也会挤掉其他必要证据。
拆成 round 后,每条通常更聚焦,因此 GPT-4o 的整体 QA 改善。对于 Llama 3.1 8B,round 与 session 表现更接近,不能将“round 更好”写成每个 reader 都显著获益。
9.3 为什么压缩为事实整体反而不好
事实提取会选择哪些细节值得保存。在未来问题尚未出现时,提取器不知道某个数字、型号、否定条件或助手建议以后会被问到。压缩错过的细节无法靠后续检索恢复。
本文教学例子:把“我想卖掉旧鼓,但还没卖”压成“用户卖掉了鼓”,不仅丢字数,还改变了资产状态。即使抽取没有凭空增加内容,若只记成“用户有音乐爱好”,未来也无法正确数乐器。
图中 session summary 整体很弱。round facts 在较短预算下可有不错表现,但不能据此断言所有原文都可以替换成事实。
9.4 跨会话推理是一个重要例外
在 multi-session 子集,事实分解有帮助。作者的解释是:不同会话中同一种信息被变成统一、简单的形式,更利于检索和聚合。比如各次活动都被整理成“用户参加了事件 X”,更方便跨会话计数。
这是作者的机制假设,不是实验直接证明“规范化”是唯一原因。事实抽取还会改变长度、噪声和信息密度,几个因素未被完全分离。
9.5 最佳阅读预算依赖模型
正文报告 Llama 3.1 8B 在检索内容超过约 3k token 后明显下滑;GPT-4o 在超过 20k token 时仍可以继续改善。图中是有限预算点的曲线,不能把 3k 或 20k 当成模型永久的硬阈值。
本文解读:应该联合调节召回数量、记忆粒度和 reader 能力。多找一些材料会提高证据覆盖率,同时也会增加噪声和阅读负担;最优点来自两种效应的平衡。
10. CP2:事实应该增强 Key,而不是简单替代原文
10.1 三种操作必须分清
令 $v$ 为原始记忆内容,$u(v)$ 为提取出的用户事实:
\[\begin{aligned} \text{原始键:}&\quad k=v,\\ \text{仅事实键:}&\quad k=u(v),\\ \text{事实增强键:}&\quad k=[u(v);v]. \end{aligned}\]上式是解释性的记法;实际原始键使用用户侧文本。附录 D 说把提取内容放在原始 key 前面。第三种方式既突出事实,又保留原文的词语和上下文;阅读时仍可以取回对应的 value。
不要把本文的“多 key/多路径”自动理解成多个独立向量索引再融合。主实验推荐的是索引时把信息拼接进一个检索键。 真正的检索后排序融合在附录 E.3 单独测过,效果较差。
10.2 Table 3:Round 粒度完整结果
R5/N5 分别为 Recall@5/NDCG@5,R10/N10 同理;QA 列按 top-5 / top-10 排列。
| Key | R5 | N5 | R10 | N10 | GPT-4o QA 5/10 | Llama 70B QA 5/10 | Llama 8B QA 5/10 |
|---|---|---|---|---|---|---|---|
| V | .582 | .481 | .692 | .512 | .615 / .670 | .600 / .624 | .518 / .534 |
| fact | .530 | .411 | .654 | .449 | .588 / .664 | .564 / .610 | .510 / .534 |
| keyphrase | .282 | .159 | .392 | .303 | .425 / .489 | .404 / .450 | .378 / .432 |
| V + fact | .644 | .498 | .784 | .536 | .657 / .720 | .638 / .682 | .566 / .572 |
| V + keyphrase | .478 | .359 | .636 | .410 | .541 / .652 | .538 / .620 | .472 / .524 |
只用 fact 并不优于原始键;只用关键词下降更大。V + fact 则同时改善检索和三个 reader 的 QA。GPT-4o top-10 从 67.0% 到 72.0%,是增加 5.0 个百分点,相对增加约 7.46%。Recall@10 从 0.692 到 0.784,是增加 9.2 个百分点,相对增加约 13.29%。
作者推测,强检索器已经能处理较长文本语义,所以用压缩表示替代原文不一定有收益;保留原文再突出用户事实才更合适。这仍是机制解释,不是严格的检索器内部分析。
10.3 Table 3:Session 粒度完整结果
| Key | R5 | N5 | R10 | N10 | GPT-4o QA 5/10 | Llama 70B QA 5/10 | Llama 8B QA 5/10 |
|---|---|---|---|---|---|---|---|
| V | .706 | .617 | .783 | .638 | .670 / .676 | .592 / .570 | .524 / .464 |
| summary | .572 | .448 | .648 | .468 | .554 / .252 | .498 / .512 | .444 / .216 |
| fact | .642 | .524 | .814 | .571 | .644 / .512 | .544 / .550 | .470 / .404 |
| keyphrase | .482 | .375 | .576 | .401 | .618 / .498 | .440 / .450 | .388 / .414 |
| V + summary | .689 | .608 | .749 | .624 | .658 / .666 | .568 / .560 | .518 / .494 |
| V + fact | .732 | .620 | .862 | .652 | .714 / .700 | .588 / .584 | .530 / .490 |
| V + keyphrase | .710 | .587 | .768 | .602 | .665 / .672 | .590 / .566 | .526 / .508 |
这里有几项不应被平均结论掩盖:
- session 的 R10 通常高于 round,不代表最终 QA 更好。同样取 10 条,session 给 reader 的文本更多、干扰也更多。
- V + fact 下,GPT-4o 的 top-5 为 .714,top-10 反而 .700;Llama 8B 也从 .530 降至 .490。
- Llama 70B 在 session top-5 的 .588,略低于基线 .592。因此事实增强不是每个单元格都提升。
- summary-only 下 GPT-4o 从 top-5 的 .554 降到 top-10 的 .252,是很大的退化。原文没有针对这一异常提供可验证的逐例原因,不能自行归因于截断或某个具体实现 bug。
10.4 “平均召回提升 9.4%、准确率提升 5.4%”怎么理解
正文给出这两个汇总百分比。按 Table 3 中 V 与 V+fact 的数值计算,跨两种粒度、两个 k 的 Recall 相对提升平均约 9.4%;跨模型、粒度、k 的 QA 相对提升平均约 5.4%。因此适合将其读作相对提升的平均量,不是所有实验都增加 9.4 或 5.4 个百分点。
10.5 为什么关键词可能不如完整事实(本文解读)
“Sony;镜头;摄影”只表达主题;“用户使用 Sony A7R IV”表达主体—关系—对象。未来的问题往往问个人经历和具体状态,因此完整事实可能更贴近查询所需的语义结构。另一方面,这个解释不能外推为关键词在所有检索器上都无效,附录恰好报告了一些反例。
11. CP3:时间推理要把事件时间和会话时间分开
11.1 时间信息存在两个来源
会话时间戳告诉我们“什么时候说了这句话”;话语中的“昨天”“上个月”“去年夏天”告诉我们“事件什么时候发生”。二者不一定相同。
本文教学例子:6 月 10 日的会话里,用户说“我上周买了新自行车”。若未来问 6 月初买过什么,按会话日过滤可能漏掉它。需要根据会话日期解释相对时间,再把事件关联到可能发生的日期。
11.2 论文的两个步骤(§5.4、附录 D、Figure 12)
写入时:让 Llama 3.1 8B 从用户消息和会话时间中提取可确定日期的事件,返回包含 date 和 event 的 JSON 列表,日期格式为 YYYY/MM/DD。无法推断日期的事件不提取;没有可提取事件就输出空列表。
查询时:输入问题和提问日期,让模型推断有助于检索的开始和结束日期,返回 start、end。没有可确定的时间引用时应返回 N/A,不要猜。
索引端与查询端分别补充 10 个人工编写的上下文示例。实验比较 GPT-4o 与 Llama 3.1 8B 作为查询时间推断模型。时间区间用来限制检索范围,减少无关候选。
原文没有把模糊区间、不完整日期、无日期记忆的全部边界处理写成完整算法;不能根据这两个提示词补造实现细节。
11.3 Table 4:时间推理子集完整结果
每格依次是 Recall / NDCG。这里是 M 的时间推理子集检索结果,不是全题平均 QA。
| Key / 查询时间模型 | Session @5 | Session @10 | Round @5 | Round @10 |
|---|---|---|---|---|
| V / 不扩展 | .639 / .630 | .651 / .707 | .421 / .462 | .499 / .511 |
| V / GPT-4o | .654 / .660 | .707 / .679 | .451 / .565 | .495 / .538 |
| V / Llama 8B | .624 / .627 | .647 / .692 | .384 / .448 | .489 / .488 |
| V+fact / 不扩展 | .684 / .688 | .721 / .782 | .489 / .500 | .550 / .598 |
| V+fact / GPT-4o | .722 / .732 | .797 / .758 | .526 / .548 | .722 / .669 |
| V+fact / Llama 8B | .677 / .688 | .711 / .744 | .481 / .532 | .570 / .647 |
作者报告强模型时间扩展平均使 round 召回相对提高约 11.3%,session 约 6.8%。但局部结果并不单调:V 的 round R10 从 .499 变成 .495;session 的 NDCG@10 在两种 key 下也下降。总体覆盖改善不等于每个 k、每个排序指标都改善。
效果最明显的一格是 V+fact、round 的 R10:.550 → .722,增加 17.2 个百分点,相对增加约 31.3%。这个数字不能冒充所有时间题或整个基准的平均提升。
11.4 时间推理问题不一定允许事先生成时间窗口(Table 11)
| 问题与提问日期 | GPT-4o | Llama 3.1 8B | 关键判断 |
|---|---|---|---|
| 2023/05/28:买新吉他音箱时,已经学吉他多久? | 不提取日期 | 05/01–05/28 | 音箱购买时间未知,不能凭提问日期限定本月 |
| 2023/04/27:三月和四月最常乘哪家航空公司? | 03/01–04/30 | 同左 | 问题明确给出月份,两者都正确 |
| 2023/06/28:Turbocharged Tuesdays 在 Rack Fest 之前多少天? | 不提取日期 | 06/21–06/28 | 比较两个事件,不等于它们发生在最近一周 |
| 2023/03/10:番茄与万寿菊,哪种种子先开始育苗? | 不提取日期 | 03/01–03/10 | 有先后关系,不代表发生在当月 |
最值得保留的思想是:时间关系可以需要推理,却无法仅凭问题得出绝对检索区间。 要先找到事件,再解析时间;如果过早硬过滤,正确证据甚至没有机会被 reader 看见。
附录 E.4 将无时间引用的例子写为“1、2、4”,与 Table 11 的例子 2 矛盾;依据表中内容,应关注 1、3、4。这是原文交叉引用疑似笔误。
12. CP4:找到了,还要会读
12.1 CoN 与“泛泛地一步一步想”有什么区别
Chain-of-Note 的要求是先从历史材料中提取与问题有关的信息,再依据提取内容推理。其作用是把长材料阅读拆成两件事:从原文中定位、复制相关细节;在较短的证据集合上完成比较、计算、更新判断。
Figure 13 的 CoN 提示输入历史、当前日期、问题,并明确要求先抽取相关信息再推理。非 CoN 提示使用同样的输入,但不提出这一步骤要求。
论文不是要求模型产出任意长的推理过程,也没有在这里实现独立的多智能体系统。实际最大输出为 800 token。
12.2 为什么使用 JSON
作者希望结构化格式让模型更明确地把历史条目看成阅读数据,识别各条记忆的边界。读入前按时间戳排序,帮助维持时间一致性。
本文解读:JSON 的潜在价值是显式边界和元信息,而不是花括号本身带来能力。论文没有证明 JSON 优于所有其他结构化格式;也没有验证它能单独解决提示注入等安全问题。
12.3 Figure 6:Oracle 阅读实验完整数值
| Reader | 自然语言+直接回答 | JSON+直接回答 | 自然语言+CoN | JSON+CoN |
|---|---|---|---|---|
| GPT-4o | .862 | .822 | .910 | .924 |
| Llama 3.1 70B | .762 | .744 | .800 | .848 |
| Llama 3.1 8B | .710 | .746 | .710 | .756 |
在这张图里,检索没有失败,因为系统只收到证据会话。GPT-4o 最好与最差设置差 .102,即 10.2 个百分点。这直接说明仅仅优化召回仍然不够。
JSON 单独使用并不稳定:GPT-4o 与 Llama 70B 的直接回答都因 JSON 下降,而 8B 上升。CoN+JSON 在三个模型中都是本图最好组合,但提升幅度不同,不能概括为每个模型都提高 10 个百分点。
Figure 6 部分 Oracle 数值与 Figure 3b 不同。两处作为各自实验报告保留,原文没有完整解释差异,不应挑选较好值拼成一张“统一基线”。
12.4 把检索改进和阅读改进分开验证
一个有效的诊断矩阵是:固定 reader 看召回;固定证据看阅读;最后再测端到端。如果只看最终准确率,无法分辨提升来自证据更多、材料更短、排序更好,还是 reader 更擅长推理。
这也是本文框架比单一分数更有用的地方:它提供了可以分别替换和检验的接口。
13. 附录 D:提示词与实现细节的完整意图
本节是功能性中文归纳,不是可声称与原提示逐字等价的复现模板。若要求严格复现,应使用论文 Figure 11–13 和固定版本官方代码中的原始提示。
13.1 摘要抽取
输入 session 或 round,让模型用一个简短段落概括主要主题和关键信息,并更多关注用户说了什么、提出了什么要求。这里强调简洁,因此它天然带有取舍,不承诺保存所有未来可能需要的细节。
13.2 关键词抽取
生成关键词短语列表,用分号分隔。它偏向主题覆盖,并不强制保存主体、关系、数字和日期,也不保证各关键词之间的逻辑关系可恢复。
13.3 用户事实抽取
抽取个人信息、人生事件、经历和偏好;尽量保留数字、地点、日期等具体细节;每条用简单句表达;返回 JSON 字符串列表;尽量减少跨事实指代,用实体名替代代词;没有相关事实时输出空列表。
用户事实抽取使用 10 个上下文示例:5 个来自模拟用户会话,5 个来自 ShareGPT。期望输出由 GPT-4o 生成,再经人工修改。摘要和关键词提取不使用这套 few-shot,作者认为没有必要。
这些约束说明作者不只是写“总结一下用户”。尤其去指代化有助于单条事实脱离上下文后仍可读;但对话里隐含的实体如果解析错了,也可能引入事实错误。
13.4 两类时间提示
事件提取:会话日期和用户消息 → 可确定日期的事件列表。查询扩展:问题日期和问题 → 明确时间区间或 N/A。两者均配 10 个人工示例。
注意事件提取器是小模型,时间查询模型则比较过强弱模型。论文不是所有步骤都用 GPT-4o,也不是所有步骤都用同一套示例。
13.5 阅读提示
共同部分:说明提供的是与用户的历史聊天,要求基于相关历史回答;提供历史、当前日期和当前问题。CoN 版本多出“先提取所有相关信息,再基于这些信息推理”的步骤要求。全部阅读实验用贪心解码和 800 token 最大生成长度。
复现提示:在比较 CoN 和直接回答时,要保持历史材料、排序、模型版本和输出上限一致。否则提示效果可能混入上下文格式或截断差异。原文尚不足以解释所有跨表差异,见第 17 节。
14. 附录 E:补充实验与没有奏效的方案
14.1 五个额外模型(Table 8)
LC 指不做记忆操作、直接阅读全部输入;后四列的记忆检索实验都以 round 为 value。这里按原表保留数字。
| 模型 | Oracle 直接 | Oracle CoN | S 全历史直接 | S 全历史 CoN | S K=V | S K=V+fact | M K=V | M K=V+fact |
|---|---|---|---|---|---|---|---|---|
| Mistral-Nemo-Instruct-2407 | .688 | .686 | .162 | .286 | .640 | .666 | .554 | .598 |
| Qwen2.5-7B | .282 | .504 | .128 | .144 | .452 | .462 | .390 | .424 |
| Phi-3.5-mini-instruct | .488 | .490 | .312 | .352 | .550 | .570 | .462 | .468 |
| Llama-3.2-3B-Instruct | .522 | .636 | .008 | .010 | .466 | .508 | .466 | .470 |
| Llama-3.2-1B-Instruct | .386 | .398 | .010 | .016 | .312 | .336 | .286 | .312 |
证据支持的结论是:事实增强 key 在这张表的记忆实验中均有提升;直接读 S 常远低于只读证据;极小模型在长历史读取上接近失效,而经过检索后能够回答明显更多题。
需要保留的例外:Mistral 的 Oracle CoN .686 略低于直接回答 .688;因此正文“CoN 一致改善”的概括并不逐格成立。Phi-3.5 的 S 检索结果还超过表中的 Oracle sessions,提示 Oracle session 不是所有检索表示下不可超越的严格上界:短 round 可能比完整证据 session 更容易读。当然,跨设置的其他差异也需代码确认。
Table 8 的 Phi-3.5 Oracle 和 S 分数与 Figure 3b 不同,不能不加说明地合并。
14.2 检索器比较:BM25、Contriever、Stella(Table 9)
BM25 主要依赖词项匹配;Contriever 与 Stella 是向量语义检索。表中每格仍为 Recall / NDCG。
| Key | 检索器 | Session @5 | Session @10 | Round @5 | Round @10 |
|---|---|---|---|---|---|
| V | BM25 | .634/.516 | .710/.540 | .472/.352 | .538/.372 |
| V | Contriever | .723/.634 | .823/.663 | .589/.454 | .747/.495 |
| V | Stella | .720/.594 | .794/.615 | .660/.498 | .784/.528 |
| V+summary | BM25 | .626/.544 | .694/.565 | — | — |
| V+summary | Contriever | .732/.632 | .823/.657 | — | — |
| V+summary | Stella | .689/.608 | .749/.624 | — | — |
| V+fact | BM25 | .683/.560 | .757/.582 | .554/.454 | .608/.473 |
| V+fact | Contriever | .762/.632 | .862/.658 | .612/.489 | .756/.530 |
| V+fact | Stella | .732/.520 | .862/.552 | .644/.498 | .784/.536 |
| V+keyphrases | BM25 | .632/.546 | .711/.569 | .453/.391 | .538/.416 |
| V+keyphrases | Contriever | .740/.638 | .849/.668 | .546/.450 | .672/.489 |
| V+keyphrases | Stella | .710/.587 | .768/.602 | .478/.359 | .636/.410 |
作者强调三点:稠密检索整体优于 BM25;事实增强是推荐做法;摘要和关键词在部分检索器、部分粒度上也有用。例如 Contriever 的 session R5,从 .723 到摘要增强 .732、关键词增强 .740、事实增强 .762。
但原表与作者概括之间存在例外:Stella 的 round R5 按此表是 .660 → .644,并非改善;此外部分 Stella 基线和 NDCG 与 Table 3 不一致。这里保留 Table 9 原值,不擅自修正,也不以不一致的行支持更强结论。
作者未比较更大的 embedding 模型,理由是其延迟通常不现实。这是实验范围的取舍,并非本论文完成了所有大检索模型的统一延迟实测。
14.3 多路结果融合为什么不如索引时拼接(Table 10)
Key Merging,KM:先将事实或摘要拼入原始 key,再做检索。
Rank Merging,RM:为原文和抽出的信息分别建 key,从不同路径检索,再按排名合并 value。
Table 10 的 KM 行与 Table 3 对应行相同。为避免重复大表,以下完整保留新增的 RM 行;与 KM 的数值对照使用第 10 节。
| Value / RM 扩展类型 | R5 | N5 | R10 | N10 | GPT-4o QA 5/10 | Llama 70B QA 5/10 | Llama 8B QA 5/10 |
|---|---|---|---|---|---|---|---|
| Round / fact | .478 | .372 | .568 | .403 | .558/.596 | .536/.586 | .458/.482 |
| Round / keyphrase | .386 | .376 | .536 | .329 | .485/.590 | .460/.558 | .426/.466 |
| Session / summary | .608 | .488 | .684 | .511 | .600/.620 | .510/.544 | .468/.466 |
| Session / fact | .618 | .511 | .754 | .548 | .622/.688 | .574/.574 | .468/.466 |
| Session / keyphrase | .550 | .435 | .650 | .466 | .560/.620 | .454/.506 | .492/.482 |
例如 round+fact 的 GPT-4o top-10,KM 为 .720,RM 为 .596;R10 分别 .784 与 .568。这个差距说明增加检索入口并不自动提高最终证据质量。
作者假设:每条原始记录抽出 $m$ 个信息片段后,RM 可能将索引规模放大到原来的 $m+1$ 倍;KM 突出信息而不以同样方式增加条目数,因此更有效。
本文解读:还可能涉及重复候选、不同路径排名可比性和融合规则,但论文没有独立验证这些因素,也没有证明所有先进融合方法都不如简单拼接。特别不能把本文 RM 直接等同于某一种未经说明的标准 RRF 实现。
14.4 错误分解:读错仍然很严重(Figure 14)
附录 E.5 使用:round value、事实增强 key、Stella 1.5B、top-10、JSON、CoN。R 表示按其标准判定检索正确,G 表示回答正确。
以下按图中标签抄录:
| Reader | R对/G对 | R对/G错 | R错/G错 | R错/G对 |
|---|---|---|---|---|
| GPT-4o | 64.0% | 13.2% | 14.8% | 8.0% |
| Llama 3.1 70B | 62.6% | 14.6% | 17.2% | 5.6% |
| Llama 3.1 8B | 52.6% | 24.6% | 18.8% | 4.0% |
图中 Llama 8B 的正确回答两项合计 56.6%,与 Table 3 对应配置的 57.2% 也有差异;前两种模型的合计则分别为 72.0% 和 68.2%,与 Table 3 对应值一致。原文未解释 8B 这一差异,因此不将两处统计强行统一。
对 GPT-4o 来说,总回答错误率为 28.0%,其中检索正确但回答错误占 13.2/28.0 ≈ 47.1%。Llama 70B 对应约 45.9%,8B 对应约 56.7%。这说明 reader 是独立瓶颈,小模型更明显。
这里原文正文存在需要指出的冲突:E.5 文字称“正确检索但错误生成”约为全部样本的 15%–19%、错误样本的 40%–50%;但图中橙色标签是 13.2%、14.6%、24.6%。15%–19% 更接近红色“R错/G错”的数值。本文采用图示的类别和数值,保留文字存在不一致这一事实。
14.5 为什么检索不全仍可答对
按图计算,在所有回答正确的例子里,检索也正确的比例约为 88.9%、91.8%、92.9%,与作者“约九成正确回答需要正确检索”的判断相符。
其余多为知识更新题:找到了最新信息,漏掉旧信息,按严格证据覆盖标准检索失败,但当前状态仍可答对。这说明“R错/G对”不必然是模型记住了答案或走了捷径;也可能是检索标注集合比当前回答所需的最小证据集更大。
作者将此结果视为基准难以绕过证据的支持。更谨慎地说,它说明这些实验里回答正确高度依赖相关记忆,尚不能排除所有可能的数据捷径。
15. 作者的原始思考、假设与开放方向
论文没有单独列一大章 future work,许多想法散落在讨论、脚注和附录。下面保留它们,同时区分证据强弱。
| 思考或判断 | 依据 | 性质与边界 |
|---|---|---|
| 长上下文不能自动替代有效记忆系统 | Figure 3、Table 8 | 对所测模型和历史成立;不是对所有未来模型的定理 |
| 历史继续增长可能让直接阅读更差 | §3.4 | 作者推测,不是无限长度实测 |
| 事实规范化有利于跨会话推理 | Figure 5、§5.2 | 观察到收益;“格式统一”是机制假设 |
| 只用精简 key 不更好,可能因为强检索器已能理解长文本 | §5.3 | 作者解释,没有单独的因果验证 |
| 原文与事实结合能兼顾信息完整和语义突出 | Table 3 | 有较强经验支持,但有个别负收益设置 |
| 时间过滤是另一条有用的检索约束 | Table 4 | 强模型整体有益;错误约束会降低召回 |
| 复杂树/图可改善某类查询,但在线维护更贵 | 附录 C.2 | 设计分析;未给全面成本实测 |
| 交互式阅读可以回退重新检索 | 附录 C.2 | 潜在优势,并有额外模型调用延迟 |
| 排名融合差,可能与索引膨胀有关 | 附录 E.3 | 作者假设;没有证明条目数是唯一原因 |
| 阅读策略仍有很大改进空间 | Figure 6、14 | 即使证据齐全仍有明显错误,直接支持 |
| 可靠个性化与压缩效率之间存在权衡 | 商业系统人工观察 | 保存少而简洁与未来细节问答可能冲突 |
| 缺少删除操作会损害信任 | 伦理声明 | 指出了系统治理需求,但未提供删除算法 |
15.1 本文延伸:对实际研究最有价值的几个问题
以下是由上述证据推导的研究方向,不是作者已实现或已验证的方法。
第一,双层记忆是否比二选一更合理? 原始对话保存可追溯证据,抽取事实作为检索、聚合和状态表示。实验支持“事实帮助找原文”这一局部设计,但仍需研究存储成本、事实更新、回溯与删除的一致性。
第二,时间约束能否从硬过滤改为可回退的软约束? 小模型误造时间窗口会直接丢失证据。可以研究区间置信度、候选时间扩张、先不限时间找事件再缩小范围,以及过滤失败后的回退。论文未比较这些方案。
第三,检索目标应是逐条相关,还是证据集合充分? 多条近义结果可能都指向同一事件,却漏掉另一个必要事件。跨会话任务提示我们优化集合覆盖、去重和证据多样性,而不只是单条相似度。
第四,用户记忆和助手承诺是否需要不同索引? 论文评测助手推荐的内容,但默认 key 和事实抽取只用用户消息。可分别研究用户事实、助手推荐、计划、承诺和最终执行结果的表示;不能把建议当成已发生事实。
第五,知识更新应该保留历史版本还是覆盖旧值? 问“现在住哪”需要当前状态,问“去年住哪”需要过去状态。简单覆盖可能帮助前者却破坏后者。可以用带生效时间的状态和来源证据研究这一问题,但论文没有给出完整的版本化状态系统。
第六,阅读预算是否应动态分配? 小模型的预算曲线表明,不应全题统一扩大 top-k。可以按题型、证据数量和 reader 能力选择材料长度,进一步测 accuracy–latency–cost 权衡。
16. 从这篇论文走向自己的工作:建议怎样复现和诊断
本节是基于论文的实验建议,不是本次已经运行过的模型实验。
16.1 先做一个可诊断的最小基线
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
写入阶段(不知道未来问题)
1. 保存会话日期、角色和原始文本
2. 按用户消息 + 助手回复拆 round,保留原会话关联
3. 用用户侧文本构造基础 key
4. 提取用户事实,前置到基础 key,生成向量索引
问答阶段
5. 将问题变成检索 query
6. 首先跑无时间约束基线
7. 取回 top-k 对应 value,按时间排序
8. 用 JSON + CoN 读取,输出回答
诊断阶段
9. 对齐证据标注计算检索指标
10. 独立评估最终回答
11. 保存“检索失败 / 阅读失败 / 证据不全仍答对”的案例
这里保留角色、原会话关联是便于排查的工程建议,不表示论文规定了一模一样的数据表字段。
16.2 建议的消融顺序
| 步骤 | 只改变的因素 | 解决的疑问 |
|---|---|---|
| Oracle 直接 vs Oracle CoN+JSON | 阅读策略 | reader 本身能不能完成题目? |
| Session vs Round | value 粒度,控制 token 预算 | 大块历史是否使阅读困难? |
| K=V vs K=V+fact | 检索 key | 事实提取是否帮助找到原文? |
| 原文 value vs 事实 value | 保存内容 | 是否因压缩丢失答案? |
| 无时间过滤 vs 时间过滤 | 查询约束 | 是否提升时间题召回,是否误伤其他题? |
| 不同 k / token 预算 | 材料规模 | 召回收益什么时候被阅读噪声抵消? |
| 不同 reader | 阅读能力 | 瓶颈是否已从检索转向阅读? |
16.3 不要只记录总准确率
至少分开看七类问题、召回、答案正确率、输入 token、生成 token、写入和查询成本,以及误拒答和错误作答的案例。增加成本指标属于本文建议;论文主要报告检索和 QA 指标。
每个失败例子可以问:原文里是否确有答案?抽取时是否丢失?检索是否命中所有必要事件?日期是否解释正确?同一事件有没有重复计数?建议是否被误当成经历?新旧状态是否错用?reader 有没有读到证据却没有利用?
16.4 复现需要固定版本,不能只记模型系列名
应记录数据版本、文件校验值、模型确切 checkpoint/API 版本、提示词、向量模型、截断策略、top-k、排序、输出上限和评判器。尤其本文已经发现跨表数字存在不一致,复现应以固定配置产生的结果为准,而不是为凑到论文某个数字反复修改设置。
官方仓库链接用于定位实现入口;本文未运行官方评测,也未审核仓库当前代码与论文 v2 的全部对应关系。
17. 原文疑点、结论边界与应保留的限制
17.1 核对 PDF 后确认的内部不一致
| 位置 | 不一致 | 本文处理 |
|---|---|---|
| Figure 3b 与 Figure 6 | 部分相同名称的 Oracle 配置数字不同,例如 GPT-4o 无 CoN 在前者为 .870,后者直接阅读为 .862/.822 | 按各自实验保留,不假定完全同设置 |
| Figure 3b 与 Table 8 | Phi-3.5 的 Oracle 和 S 数字不同 | 不合并;需要代码或作者说明差异 |
| Table 3 与 Table 9 | Stella 的 K=V 以及部分 fact 行数值不同 | 分别保留原表数值 |
| Table 3 与 Table 9 | Session V+fact 的 N5/N10 为 .620/.652 vs .520/.552 | 不擅自把附录“纠正”为正文 |
| Table 9 与 E.2 文字 | 声称事实增强一致改善,但 Stella round R5 按表从 .660 降到 .644 | 对概括加上例外 |
| Table 11 与 E.4 文字 | 文字把例子 2 列入无明确时间范围,表中却有三四月 | 依据具体问题解释,标注疑似编号笔误 |
| Figure 14 与 E.5 文字 | “检索对、生成错”的比例和图中类别不符 | 用图中颜色/图例/数字计算,并指出冲突 |
| Figure 9 | 只画六类基础题,没有单列拒答 | 不反推七类精确分布 |
这些不是单靠 PDF 文本抽取产生的错位:关键数值和图例已对照页面图像核查。但它们的原因并未由原文充分交代,所以本文不猜测哪个实验一定“写错了”。
17.2 基准构造的边界(本文分析)
合成与真实使用之间仍有距离。 证据由人工设计、LLM 嵌入对话,再混入其他来源会话。它比直接插一句答案复杂,但不等于一位真实用户长期自然形成的完整生活轨迹。
长度扩展主要增加干扰,不增加证据链深度。 最多六个证据会话与 500 个历史会话是不同维度;百万 token 并不自动代表百万 token 都参与复杂推理。
证据偏向会话开头。 Figure 9 的位置分布提示,真实用户在长对话中后段补充或修正信息的难度可能需要额外测试。
问答是代理目标。 基准测的是能否依历史回答问题,不直接测长期用户满意度、主动帮助、任务执行成功、情绪支持质量等。
指标存在容忍规则。 时间 off-by-one 和偏好 rubric 的宽松条件有合理性,但不同产品可能需要更严格的评判。
一些重要能力没有专门隔离。 例如删除后的不可恢复性、细粒度访问控制、来源真实性、主动澄清、跨模态记忆、反复矛盾的状态管理,都不是该论文已充分验证的结论。
17.3 实验结论的边界(本文分析)
主实验围绕有限模型和固定检索器展开;部分结果依赖 reader、粒度和 top-k。论文没有给出完整的随机种子方差、置信区间或所有设置的显著性检验,像 .588 与 .592 的细小差距不宜过度解释。
成本方面,token 预算曲线有价值,但不能代替端到端计算成本。事实抽取、向量编码、时间查询、索引维护都需要资源。论文的推荐组合应看作有效且可分析的经验基线,而不是经过全面生产约束优化的唯一最优方案。
18. 可复现性、伦理与安全讨论
18.1 可复现性声明(第 11 页)
作者承诺提供固定的 S/M 数据、历史构造算法及来源混合、属性和提示词、记忆优化实现,使后续研究能重建评测并改变历史长度。本文链接了官方项目,但不把论文中的发布承诺自动视为对当前仓库每个文件的核验。
18.2 数据和人工成本
伦理声明称 ShareGPT 使用 Apache 2.0 许可、UltraChat 使用 MIT 许可,计划以 MIT 发布数据;这是论文对其使用版本的陈述,不是对其他镜像或后续版本的法律判断。
新建问题与证据会话经过人工筛查,以避免个人可识别信息和冒犯内容。工作主要由三位有三年以上 NLP 研究经验的内部专家完成,数据构造约 400 人时,商业系统研究约 150 人时。附录 B 又具体说明商业系统题目分给五位标注者;“主要三位专家”和该环节五位参与者应分别保留,不简化成全流程始终只有三人。
标注者接受目标说明,不确定案例通过讨论解决;相关时间计入正常工资。机构 IRB 判定数据收集流程可豁免。
18.3 作者明确提出的三类风险
- 个人信息泄漏:记忆的价值就是保存个体信息,这也构成泄漏风险。
- 缺少删除能力损害可信度:用户应能让系统忘记某些信息;仅仅在回答时暂时不显示,不等于真正删除。
- 恶意记忆内容影响未来输出:攻击者可能把有害内容写进记忆库,诱导后续越狱行为。
作者建议监控记忆读写的数据流并做充分测试。论文指出了问题,并没有实现完整的删除机制、隐私保护框架或抗记忆注入方案。
本文延伸:若原文、抽取事实、向量、摘要和缓存同时存在,删除需要处理这些派生副本;这是双层记忆方案的工程责任,不能因准确率改善而忽略。但其具体实现超出本文实验范围。
19. 阅读路线与全篇覆盖索引
19.1 初学者回读顺序
第一次读先掌握第 1–3 节,能区分 session、round、key、value 与七类题。第二次读第 4–6 节,理解数据为何困难,以及评分到底奖励什么。第三次读第 7–14 节,把每个实验放回索引、检索、阅读的具体控制点。真正动手前再读第 16–18 节,固定复现口径和结论边界。
19.2 论文各部分与笔记对应
| 原文部分 | 内容 | 笔记对应 |
|---|---|---|
| Abstract、§1,第 1–2 页 | 问题、贡献和核心观察 | 第 1 节 |
| §2、Table 1,第 2–4 页 | 基准和方法背景 | 第 2 节 |
| §3.1–3.2、Figure 1–2,第 3–5 页 | 任务、能力与数据构造 | 第 3–4 节 |
| §3.3、A.4、Figure 10、Table 6 | 判分规则和人工元评测 | 第 5 节 |
| §3.4、Figure 3、附录 B、Table 7 | 商业产品和长上下文先导实验 | 第 6 节 |
| §4、Figure 4、Table 2、附录 C | 统一框架与九类系统 | 第 7 节 |
| §5.1 | 公共设置 | 第 8 节 |
| §5.2、Figure 5 | Value 粒度与预算 | 第 9 节 |
| §5.3、Table 3 | Key 设计 | 第 10 节 |
| §5.4、Table 4 | 时间查询扩展 | 第 11 节 |
| §5.5、Figure 6 | 阅读消融 | 第 12 节 |
| §6 | 结论 | 第 1、15 节,结合各实验解释 |
| Reproducibility / Ethics,第 11 页 | 复现承诺与伦理 | 第 18 节 |
| References,第 11–16 页 | 背景方法来源 | 第 2、7 节及下方阅读入口 |
| A.1–A.3、Table 5、Figure 7–9,第 17–19 页 | 属性、模拟、混合和分布 | 第 4 节 |
| 附录 D、Figure 11–13,第 23–25 页 | 索引和阅读提示词 | 第 8、11、13 节 |
| E.1–E.3、Table 8–10,第 26–27 页 | 更多模型、检索器、融合失败 | 第 14 节 |
| E.4、Table 11,第 27–28 页 | 时间区间错误例子 | 第 11 节 |
| E.5、Figure 14,第 27–28 页 | 检索/生成错误拆解 | 第 14 节 |
参考文献页包含被引用论文的书目信息,不是 LongMemEval 自己新增的实验。本文解释与方法选择直接相关的研究脉络,不将这些外部论文未在本文展开的细节冒充为已通读结论。
19.3 原文引用的后续阅读入口
下面按“希望补什么背景”归类,均来自原文参考文献;它们是阅读入口,不代表本笔记已逐篇核查全文。
- 想理解跨会话记忆基准:MemoryBank、LoCoMo、PerLTQA、DialSim。
- 想理解长文本为什么容易读漏:Lost in the Middle;Large Language Models Can Be Easily Distracted by Irrelevant Context。
- 想理解粒度选择:Dense X Retrieval。
- 想理解提取证据再作答:Chain-of-Note。
- 想理解树索引:RAPTOR 与 MemWalker。
- 想理解实体图检索:HippoRAG。
- 想理解压缩路线:Gist Tokens、AutoCompressor 相关工作、LLMLingua、RECOMP。
- 想理解模型内部记忆:Memory Networks、Memorizing Transformers,以及训练记忆增强语言模型的相关工作。
这篇论文留下的核心工作方式是:把“记忆不好”拆成可定位的问题。先确认信息是否写入且保真,再确认是否检索到充分证据,最后确认 reader 是否正确利用证据;只有这样,实验提升才能对应到明确的系统改进。