记忆系统每轮都喊 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:四种记忆构建范式对比。(A) 逐轮急切巩固,每轮一次 LLM 调用,构建成本随对话线性膨胀;(B) 粗粒度摘要省钱但丢细节,事件、人物、事实全被压没了;(C) 查询时迭代补偿(多轮改写 query、多跳检索),把成本从写入侧挪到了查询侧;(D) LycheeMemory 按语义段落批量巩固,一次编码产出带类型的记忆记录,构建频率低、证据保真度高。
你想想看,这三条路其实是在玩"成本转移"的零和游戏:写入侧省的钱,要么变成信息丢失,要么变成查询侧的账。LycheeMemory 想破的是这个局:能不能写入侧少调 LLM,同时细节不丢、查询侧还不加码?
它的抓手是"粒度"。对话天然是有段落结构的——聊完旅行话题切到工作吐槽,中间有个明显的边界。如果按话题段落来巩固记忆,LLM 调用次数就从"轮数 T"降到"段数 |S|"。LoCoMo 上平均每段 5.8 轮,理论上调用次数直接除以 5.8。至于边界切得准不准,就是技术活了。
🏗️ 方法:一根 embedding 阈值管切割,一次编码出结构化记录

图3:左侧是记忆构建:在线语义分割把对话流切成连贯段落,记忆编码器把每个定稿段落转成带语义、时间、主题、实体信息的类型化记录;跨段靠参考上下文 ρ 和消歧反馈 d 保持连续性。右侧是记忆检索:查询规划器把问题拆成多条召回路线,直接记录召回、结构化节点召回、时间召回、原文轮次召回四路并行,最后融合成紧凑证据上下文交给回答模型。
整套系统四个部件,逐个说。
在线语义分割:纯 embedding 算账,不调 LLM
新来一轮对话 \(x_t\),系统维护三样东西:当前段落的质心向量 \(c_k\)、最近一轮的向量 \(h_k\)、以及 \(x_t\) 自己的向量 \(e_t\)。先算一个"语义惊讶度":
直觉很直白:这句话跟整段的主题不搭、跟上一句也接不上,那它大概率是新话题的开头。再算一个"凝聚度损失" \(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 出场,一次调用同时完成:抽原子信息单元、消解指代和省略、把"上周三"这类相对时间按会话时间戳归一化。输出的每条记忆记录长这样:
\(\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 做路间融合:
最后过一道多样性选择,保证不同路线的证据都活下来。除了规划那一发,全程没有生成式调用。这就是为什么后面实验里它的查询 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:(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:(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:阈值 δ 在 0.30–0.70 间扫动,总分始终维持在 88–89% 区间,峰值在默认值 0.50。说明系统不是靠精调阈值刷出来的分数。
🔬 我的判断:拧对了旋钮,但别神话它
这篇论文最值钱的地方,是把"巩固粒度"从工程实现细节提升成了一等设计变量,并且用消融把"批量省钱"和"语义边界保分"两件事干净地归因了。整套系统没有发明任何新组件——embedding 分割、类型化记录、多路召回、RRF,全是现成零件——但组装方式和成本控制的整体性做得相当漂亮,附录里连长度压力的分段函数、prompt 字符预算都给了,复现友好度很高。
但也要泼几盆冷水:
- 段落级巩固不是它首创。SeCom 早就按主题分段压缩对话,HiMem 用事件惊讶度切分构建情节记忆,论文自己也承认这一点。它的差异化在于在线写入侧效率和完整的成本核算,定位是优秀的工程整合,不是范式发明。
- 跨论文数字别混着看。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 比。
- 增益高度依赖 backbone。GPT-4.1-Mini 上领先 20 个点,换 GPT-4o-Mini 只剩 1–2.5 个点。生产环境里用小模型省钱的话,这套系统的优势会大幅缩水。
- 偏好类问题是明显短板。LongMemEval-S 偏好跟踪 90.00%,输给 MemoryOS 的 100.00%——专门的用户画像模块在偏好密集场景仍然不可替代。论文在局限性里老实承认了,加分。
- 延迟和存储没测。token 账算得很细,但 SQLite + LanceDB + 五类索引的读写延迟、存储膨胀,在持续部署下是什么曲线,论文没碰。
💡 工程启发
如果你在维护一个 Agent 记忆系统,有三件事可以直接抄:逐轮调 LLM 巩固记忆是奢侈品,哪怕不搞语义分割,先换成固定窗口批量都能把写入成本砍一个数量级(虽然要准备好掉 6–7 个点);写入时把指代和相对时间解决掉,比查询时补课便宜得多,段落上下文就在手边,不用白不用;检索后处理栈(RRF + 重排 + 多样性)的 ROI 高得吓人,22.6 个点的消融差距说明这玩意比记忆表示本身还影响最终分数。
顺着这个方向再往下想,还有个更有意思的问题没解决:段落粒度是离线扫出来的超参数,但真正理想的巩固时机应该跟"未来会被怎么问"挂钩。按信息论的说法,这是一次有损压缩,压缩级别该由下游查询分布决定——不过那就是另一篇论文的故事了。
觉得有启发的话,欢迎点赞、在看、转发。跟进最新AI前沿,关注我