记忆系统每轮都喊 LLM 来写小作文?这篇论文说:攒够一段再写,成本砍 86%,分数还涨了 20 个点

核心摘要

做 Agent 长期记忆的人大概都被同一个问题折磨过:Mem0、A-Mem 这类主流方案每来一轮对话就调一次 LLM 提取记忆,聊得越久,写记忆的钱烧得越多;想省钱改成粗摘要吧,细节全丢了,多跳推理和时间推理直接崩。哈工大(深圳)这篇 LycheeMemory V2(arXiv:2608.12990)给的答案意外地朴素——别按"轮"巩固记忆,按"语义段落"巩固。用 embedding 算话题边界,把平均 5.8 轮对话攒成一段,一段只调一次 LLM。结果在 LoCoMo 上拿到 89.22%,比 A-Mem 高 20.4 个点,构建 token 反而只有对方的 1/7。这不是什么底层架构革命,但"巩固粒度"这个被忽视的旋钮,确实被它拧出了真金白银。


📖 论文信息

  • 标题:LycheeMemory V2: Efficient Long-Term Memory for LLM Agents via Semantic Segment-Level Consolidation
  • 作者:Dongfang Li、Zixuan Liu(共同一作)、Junmai Wang、Jiahe Huang、Fuhao Li、Bonian Jia、Baotian Hu(通讯)、Min Zhang
  • 机构:哈尔滨工业大学(深圳)
  • 链接:https://arxiv.org/abs/2608.12990 (2026 年 8 月 13 日提交,34 页 5 图)

🎯 先聊聊这个痛点是不是真痛点

用过 Mem0 或 A-Mem 搭过 Agent 的朋友,看一眼账单就懂了:这两个系统都是 eager consolidation——每轮对话结束,LLM 就得出来干活,抽事实、写笔记、建链接。用户跟 Agent 聊 100 轮,记忆模块就调 100 次 LLM,而且每次 prompt 里还得塞上下文。对话一长,写记忆的成本会超过回答问题的成本。

那省钱的路线呢?论文把现有退路总结成三条,每条都有坑:

图2:LycheeMemory 的动机——三条已有路线的缺陷与新方案的定位

图2:四种记忆构建范式对比。(A) 逐轮急切巩固,每轮一次 LLM 调用,构建成本随对话线性膨胀;(B) 粗粒度摘要省钱但丢细节,事件、人物、事实全被压没了;(C) 查询时迭代补偿(多轮改写 query、多跳检索),把成本从写入侧挪到了查询侧;(D) LycheeMemory 按语义段落批量巩固,一次编码产出带类型的记忆记录,构建频率低、证据保真度高。

你想想看,这三条路其实是在玩"成本转移"的零和游戏:写入侧省的钱,要么变成信息丢失,要么变成查询侧的账。LycheeMemory 想破的是这个局:能不能写入侧少调 LLM,同时细节不丢、查询侧还不加码?

它的抓手是"粒度"。对话天然是有段落结构的——聊完旅行话题切到工作吐槽,中间有个明显的边界。如果按话题段落来巩固记忆,LLM 调用次数就从"轮数 T"降到"段数 |S|"。LoCoMo 上平均每段 5.8 轮,理论上调用次数直接除以 5.8。至于边界切得准不准,就是技术活了。

🏗️ 方法:一根 embedding 阈值管切割,一次编码出结构化记录

图3:LycheeMemory 整体架构

图3:左侧是记忆构建:在线语义分割把对话流切成连贯段落,记忆编码器把每个定稿段落转成带语义、时间、主题、实体信息的类型化记录;跨段靠参考上下文 ρ 和消歧反馈 d 保持连续性。右侧是记忆检索:查询规划器把问题拆成多条召回路线,直接记录召回、结构化节点召回、时间召回、原文轮次召回四路并行,最后融合成紧凑证据上下文交给回答模型。

整套系统四个部件,逐个说。

在线语义分割:纯 embedding 算账,不调 LLM

新来一轮对话 \(x_t\),系统维护三样东西:当前段落的质心向量 \(c_k\)、最近一轮的向量 \(h_k\)、以及 \(x_t\) 自己的向量 \(e_t\)。先算一个"语义惊讶度":

\[s_t = 1 - \max(\mathrm{sim}(e_t, c_k), \mathrm{sim}(e_t, h_k))\]

直觉很直白:这句话跟整段的主题不搭、跟上一句也接不上,那它大概率是新话题的开头。再算一个"凝聚度损失" \(d_t\)——把 \(x_t\) 加进当前段后,段落内部的平均相似度掉了多少。两个信号加上 token 长度压力、轮数压力,过一个 sigmoid 得到切分概率 \(p_t\),超过阈值 \(\delta = 0.50\) 就封段送编码。

有几个工程细节值得抄:惊讶度用 median/MAD 做鲁棒归一化并截断到 [-2.0, 4.0],防止早期历史太短时的噪声;段落长度有硬约束——最少 300 token、目标 600、最多 900,轮数最多 10 轮。整个切割过程零 LLM 调用,只有 embedding 和算术。这部分的便宜是实打实的。

段落级编码:一次调用干三件事

段落定稿后,LLM 出场,一次调用同时完成:抽原子信息单元、消解指代和省略、把"上周三"这类相对时间按会话时间戳归一化。输出的每条记忆记录长这样:

\[r_i = (\mathrm{id}_i, \tau_i, \mathrm{text}_i, \mathcal{E}_i, \mathcal{K}_i, \mathcal{T}_i, \mathrm{src}_i)\]

\(\tau_i\) 是记忆类型,从一个有限 schema 里选:事实、偏好、事件、约束、流程、失败模式、工具用法,共七种。\(\text{text}_i\) 要求是自包含的自然语言陈述——不看原对话也能读懂,代词、省略都在写入时解决掉,而不是留到查询时补课。这个设计我觉得是全文最值钱的地方之一:把"上下文补全"这件事从查询侧挪到了写入侧,而写入侧此时手里正好有完整段落上下文,是最便宜的解决时机。

跨段连续性靠一个轻量消歧状态 \(d_k\)(实体别名、规范名、指代关系)加最近 12 条记录摘要,打包成参考上下文 \(\rho_{k+1}\) 传给下一段的编码器。预算卡死:消歧状态 1200 字符、参考上下文 2400 字符,prompt 不会随历史膨胀。

结构化组织:五种索引,全是元数据白送的

编码器已经产出了实体、主题、时间这些元数据,组织阶段直接拿来建索引,不再调 LLM:实体节点、主题节点、实体-主题共现节点、时间节点(日/月两级)、事件框架节点(同一段落产出的记录归为一组,保留出处)。向量库用 LanceDB,结构化存储用 SQLite + FTS5。

有个细节挺反直觉:文本不同的陈述一律存成独立记录,不做语义合并、不标"已被取代"、不过期。冲突留给查询时解决(回答模型被指示优先采信最新的有证据支持的信息)。老实说我第一反应是这样会积累矛盾记忆,但作者的理由也站得住——写入侧的任何合并都要花 LLM 钱,而且"什么算取代"本身是个判断题,判错了证据就真没了。

查询规划 + 多路召回:查询侧只许 LLM 出场一次

查询侧的设计哲学是:LLM 只做一次规划,剩下全是确定性操作。规划器输出问题类型和若干条召回路线,每条路线带目标、搜索 query、结构化约束、时间约束。然后四路并行召回——直接记录向量检索、结构化节点检索后扩展、时间过滤、原始对话轮次检索(兜底那些没被巩固进记录的细枝末节)。各路候选先用 bge-reranker-v2-m3 做路内重排,再用 RRF 做路间融合:

\[\mathrm{RRF}(d) = \sum_{j=1}^{m} \frac{1}{\kappa + \mathrm{rank}_j(d)}\]

最后过一道多样性选择,保证不同路线的证据都活下来。除了规划那一发,全程没有生成式调用。这就是为什么后面实验里它的查询 token 能比 A-Mem 还低。

📊 实验:分数和账单一起看才有意思

评测在 LoCoMo(10 段多会话对话,平均约 600 轮 / 16K token,保留 1540 题)和 LongMemEval-S(500 段对话,平均约 115K token,500 题)上做,backbone 用 GPT-4.1-Mini 和 GPT-4o-Mini,judge 统一 GPT-4o-Mini,embedding 统一 text-embedding-3-small,温度全 0。

图1:主结果雷达图与巩固成本对比

图1:(a)(b) 两个基准上各类目准确率的雷达图,红色的 LycheeMemory 几乎全面外扩;(c) 记忆巩固成本对比,LycheeMemory 的红色柱子明显矮一截——注意纵轴单位是千 token,Mem0 和 A-Mem 在 LoCoMo 上要烧掉约 150 万 token 来建记忆,LycheeMemory 只要 20 万。

主实验:两个基准双榜第一

LoCoMo + GPT-4.1-Mini 的关键数字(准确率 %):

方法 单跳 多跳 时间推理 开放域 总分
Full Context 90.84 82.62 79.13 57.29 84.80
Mem0 66.23 58.16 63.86 44.79 62.92
A-Mem 73.25 59.93 72.90 42.71 68.83
MemoryOS 77.05 66.31 47.66 55.21 67.60
TiMem 87.99 78.37 84.74 59.38 83.77
LycheeMemory 93.34 87.23 86.60 67.71 89.22

LongMemEval-S + GPT-4.1-Mini(六类目:用户事实 SSU、助手事实 SSA、偏好 SSP、多会话 MS、知识更新 KU、时间推理 TR):

方法 SSU SSA SSP MS KU TR 总分
Full Context 91.43 100.00 56.67 53.38 75.64 48.12 66.20
A-Mem 95.71 100.00 63.33 61.65 82.05 52.63 71.60
MemoryOS 94.29 89.29 100.00 67.67 80.77 54.89 74.40
TiMem 92.86 78.57 73.33 66.92 79.49 72.93 75.80
LycheeMemory 100.00 98.21 90.00 87.97 97.44 87.22 92.20

几个让我多看两眼的点。第一,LongMemEval-S 上 LycheeMemory 92.20% 对最强 baseline TiMem 的 75.80%,拉开 16.4 个点,其中时间推理 87.22% 对 A-Mem 的 52.63%,差了 34.6 个点——长时间跨度的对话里,段落级巩固保留下来的时间证据确实救命。第二,Full Context 在 LoCoMo 上还能拿 84.80% 排第二,到 LongMemEval-S 直接掉到 66.20%,长上下文硬塞在 115K token 规模下露馅了,这反过来给了记忆系统存在的正当性。第三,换 GPT-4o-Mini 后优势急剧收窄:LoCoMo 78.90% 只比 Full Context 高 2.47 个点,LongMemEval-S 78.80% 只比 MemOS 高 1 个点。这套系统的增益跟 backbone 能力是强耦合的,弱模型上做规划、编码、回答全都吃力,20 个点的差距别当成普适承诺。

成本:这才是标题党该看的地方

图4:准确率-构建 token-查询 token 三维度对比

图4:(a) 总分,LycheeMemory 在两个基准上分别领先 A-Mem 20.4 和 20.6 个百分点;(b) 构建 token,LoCoMo 上 204.1K 对 A-Mem 的 1459.9K,省 86.0%,LongMemEval-S 上 304.7K 对 1264.3K,省 75.9%;(c) 查询 token 也没涨,LoCoMo 4.01K 比 A-Mem 低 27.9%,LongMemEval-S 8.88K 低 42.6%。

记忆论文常见的话术是"我们准确率更高",但对成本语焉不详,或者省了一头的钱在另一头加倍花出去。这篇把两本账都摊开了:

  • 构建侧:LoCoMo 204.1K token,是 A-Mem 的 1/7.2、Mem0 的 1/7.5、TiMem 的 1/2.4
  • 查询侧:LoCoMo 4.01K、LongMemEval-S 8.88K,比 A-Mem 和 TiMem 都低;全场最低查询成本是 Mem0,但它的准确率也是垫底水平

准确率第一 + 构建成本最低之一 + 查询成本还下降,三个目标同时成立——这才是这篇论文真正的卖点。单独看任何一个维度都有对手,放在一起没有。

消融:每个部件都在挣钱

消融在 LoCoMo + GPT-4.1-Mini 上做,三组对照信息量都不小:

变体 总分 构建 token 说明
完整系统 89.22 204.1K
逐轮急切巩固 81.88 849.9K 去掉批量:分掉 7.3 个点,成本翻 4 倍
固定窗口巩固 82.40 174.7K 去掉语义边界:成本略低但分掉 6.8 个点
摘要级记录 80.78 99.7K 类型化记录换成摘要:分掉 8.4 个点
无跨段参考上下文 81.56 189.6K 分掉 7.7 个点
仅记录向量检索 81.75 查询侧砍结构化和原文召回:分掉 7.5 个点
无查询规划器 83.38 查询 token 降到 2.26K 但分掉 5.8 个点
无融合/重排/多样性 66.62 直接崩掉 22.6 个点

说实话,最后这个数字让我愣了一下。融合+重排+多样性选择拿掉,准确率从 89.22% 跳水到 66.62%——检索后处理栈贡献了整套系统最大的单点增益,比段落分割(7.3 个点)和类型化记录(8.4 个点)加起来还多。这是把双刃剑:它说明证据选择模块极其重要,但也说明系统的相当多分数来自一个通用的检索工程栈,而非记忆构建本身的创新。如果你复现这套系统想偷懒,千万别在 RRF 和重排上省功夫。

固定窗口 vs 语义边界这组对比也干净利落:窗口批量成本甚至更低(174.7K vs 204.1K),但多跳题从 87.23% 掉到 74.82%。批量负责省钱,语义边界负责保分,两个设计的贡献被拆得很清楚。

阈值敏感性方面,\(\delta\) 从 0.30 扫到 0.70,总分在 88.18% 到 89.22% 之间浮动,全程 1.04 个点以内,默认 0.50 恰好最高。

图5:边界阈值敏感性

图5:阈值 δ 在 0.30–0.70 间扫动,总分始终维持在 88–89% 区间,峰值在默认值 0.50。说明系统不是靠精调阈值刷出来的分数。

🔬 我的判断:拧对了旋钮,但别神话它

这篇论文最值钱的地方,是把"巩固粒度"从工程实现细节提升成了一等设计变量,并且用消融把"批量省钱"和"语义边界保分"两件事干净地归因了。整套系统没有发明任何新组件——embedding 分割、类型化记录、多路召回、RRF,全是现成零件——但组装方式和成本控制的整体性做得相当漂亮,附录里连长度压力的分段函数、prompt 字符预算都给了,复现友好度很高。

但也要泼几盆冷水

  1. 段落级巩固不是它首创。SeCom 早就按主题分段压缩对话,HiMem 用事件惊讶度切分构建情节记忆,论文自己也承认这一点。它的差异化在于在线写入侧效率和完整的成本核算,定位是优秀的工程整合,不是范式发明。
  2. 跨论文数字别混着看。Mem0 原论文报的 LoCoMo 分数(Mem0 66.9%、A-Mem 48.4%,gpt-4o-mini judge)跟这篇的(62.92%、68.83%,GPT-4.1-Mini backbone + GPT-4o-Mini judge)完全对不上,judge、backbone、题目筛选都不同。LoCoMo 这个榜现在有严重的"各说各话"问题,这篇的 89.22% 只能跟它自己表内的 baseline 比。
  3. 增益高度依赖 backbone。GPT-4.1-Mini 上领先 20 个点,换 GPT-4o-Mini 只剩 1–2.5 个点。生产环境里用小模型省钱的话,这套系统的优势会大幅缩水。
  4. 偏好类问题是明显短板。LongMemEval-S 偏好跟踪 90.00%,输给 MemoryOS 的 100.00%——专门的用户画像模块在偏好密集场景仍然不可替代。论文在局限性里老实承认了,加分。
  5. 延迟和存储没测。token 账算得很细,但 SQLite + LanceDB + 五类索引的读写延迟、存储膨胀,在持续部署下是什么曲线,论文没碰。

💡 工程启发

如果你在维护一个 Agent 记忆系统,有三件事可以直接抄:逐轮调 LLM 巩固记忆是奢侈品,哪怕不搞语义分割,先换成固定窗口批量都能把写入成本砍一个数量级(虽然要准备好掉 6–7 个点);写入时把指代和相对时间解决掉,比查询时补课便宜得多,段落上下文就在手边,不用白不用;检索后处理栈(RRF + 重排 + 多样性)的 ROI 高得吓人,22.6 个点的消融差距说明这玩意比记忆表示本身还影响最终分数。

顺着这个方向再往下想,还有个更有意思的问题没解决:段落粒度是离线扫出来的超参数,但真正理想的巩固时机应该跟"未来会被怎么问"挂钩。按信息论的说法,这是一次有损压缩,压缩级别该由下游查询分布决定——不过那就是另一篇论文的故事了。


觉得有启发的话,欢迎点赞、在看、转发。跟进最新AI前沿,关注我