Memorus · 公开基准报告
长期记忆公开基准报告
2026-09 · LongMemEval_S / LoCoMo · 数据、流程、失败与下一步全部公开
- LongMemEval_S · 问答准确率
- 0.837
- 同一作答模型只给证据:0.905
- held-out 147 题(含 9 道应弃答)· 只跑一次 · 2026-09-30
- LongMemEval_S · 会话检索 any@5
- 0.971
- held-out
- 138 题可评分 · 会话级 · 2026-09-30
- LoCoMo · J
- 0.746
- 类别 1–4
- 1540 题 · 判 1 次 · 2026-09-30
结论。同一个低价作答模型下,memorus 检索出的上下文让问答准确率达到 0.837,与只给证据会话时的 0.905 相差 0.068;会话级检索 any@5 为 0.971。
局限。作答用的是低价通用对话模型(关闭推理);强闭源作答模型下的分数我们没有跑,不作推断。held-out 也有轻度污染,见「局限与计划」。
一次真实检索
一道题,一次实际检索。
下图是 dev 集里一道题上的一次真实检索:52 段会话、516 轮对话的向量被投影到三维, 问题向量和 memorus 实际返回的前 10 条命中一起标了出来。
dev 集 · multi-session · 题号 b5ef892d
How many days did I spend on camping trips in the United States this year?
中文意译:今年我在美国露营一共花了多少天?
- 标准答案
- 8 days
- 判分
- 判对
作答模型的回答原文
Based on the relevant chat history, you mentioned two camping trips in the United States this year: 1. A 5-day camping trip to Yellowstone National Park last month (from Session 3). 2. A 3-day solo camping trip to Big Sur in early April (from Session 4). So, you spent a total of 8 days on camping trips in the United States this year.
52 段会话 · 516 轮 · 3 段证据会话 · 前 5 名覆盖全部证据会话(all@5 = 1)
- 证据会话(点更大、带描边)
- 其他会话(小点、按会话着色)
- 问题(二维图中为星形,三维中为深色八面体)
- 前 10 命中(连线;其中 7 条来自证据会话,画实线,其余虚线)
- 第 1 名分数 0.691● 证据会话user: I'm looking for some new hiking boots. Do you have any recommendations for waterproof boots that are good for multi-day backpacking trips? By the way, I j…
- 第 2 名分数 0.677● 证据会话assistant: Moab is strategically located near several incredible national parks, making it an ideal base for exploring the American Southwest. Here are some day…
- 第 3 名分数 0.648● 证据会话assistant: Yellowstone is an amazing destination! I'm sure you had an incredible time exploring the geysers, hot springs, and wildlife. Now, the Rocky Mountain…
- 第 4 名分数 0.646● 证据会话user: I'm planning a trip to Moab, Utah and was wondering if you could recommend some must-see attractions and trails in the area. By the way, I've been loving …
- 第 5 名分数 0.605● 证据会话assistant: The White Rim Road is a unique and adventurous experience, but it does require some planning and preparation. Here's more information on the permits …
- 第 6 名分数 0.587● 证据会话user: I'm planning a trip to the Rocky Mountains in Colorado and I was wondering if you could recommend some good hiking trails and camping spots in the area. B…
- 第 7 名分数 0.550○ 非证据会话user: How does the United States Senate hold a filibuster?
- 第 8 名分数 0.527○ 非证据会话assistant: What a great goal! Limiting social media usage can have a significant impact on productivity, mental health, and overall well-being. There are many a…
- 第 9 名分数 0.506● 证据会话assistant: Moab's climate and events can greatly impact your trip, so I'd be happy to share some insights on the best times to visit and notable events. **Best…
- 第 10 名分数 0.500○ 非证据会话assistant: Let's add that to the tracker. How many books did you buy, and what was the total cost? If you don't remember the exact titles, we can just use a ge…
怎么读这张图
- 每个点是一轮对话,颜色代表它所在的会话;证据会话(共 3 段)的点高亮显示。
- 星是问题向量;连线连到 memorus 实际返回的前 10 条命中。
- 三维坐标是 1024 维嵌入的主成分投影,前三个主成分只解释约 13% 的方差, 所以远近只是示意;检索本身在 1024 维里进行。
- 这道题来自 dev 集(不是 held-out)。选它,是因为它是一道典型的多会话计数题: 前 5 名覆盖了全部 3 个证据会话(all@5 = 1),定稿配置下作答判对。
测什么
两个公开基准,六个指标。
LongMemEval_S(cleaned 版)
- 500 题、6 个题型,其中 30 题应弃答(该说「不知道」)。
- 每题带约 48 段会话,要在其中找到证据再作答。
- 我们切成 dev 353 题与 held-out 147 题:dev 用来迭代,held-out 定稿后只跑一次。
LoCoMo
- 10 段长对话、1986 题,类别 1–5。
- 类别 5 为对抗 / 应弃答,按公开 J 分口径不计;计分题 1540 道(类别 1–4)。
- 我们对 LoCoMo 不调参:基线、定稿各跑一次。
指标
| 指标 | 含义 |
|---|---|
| any@k | 前 k 条命中覆盖至少一个证据会话的题占比(会话级检索)。 |
| all@k | 前 k 条命中覆盖全部证据会话的题占比;多会话题才真正拉开差距。 |
| ndcg@10 | 前 10 条命中的排序质量。 |
| 问答准确率 | 判分模型按官方提示判对的比例。 |
| oracle | 同一作答模型只给证据会话时的准确率,是上限参照。 |
| J | LoCoMo 的判分口径:判分模型判对的比例,只计类别 1–4。 |
题型缩写
- KU知识更新
- MS多会话
- SSA单会话(助手说过的)
- SSP单会话(偏好)
- SSU单会话(用户说过的)
- TR时间推理
怎么测
写入、检索、作答、判分,每一步用什么都写明。
嵌入模型:开源多语言嵌入模型(568M 参数,1024 维)。作答与判分分属不同厂商。
防过拟合
- 数据冻结,两份数据的 sha256:LongMemEval_S d6f21ea9d60a0d56f34a05b609c79c88a451d2ae03597821ea3d5a9678c3a442LoCoMo 79fa87e90f04081343b8c8debecb80a9a6842b76a7aa537dc9fdf651ea698ff4
- 切分固定:key 为
question_id去掉末尾_abs;h = SHA-256("memorus-lme-v1:" + key),取前 8 字节大端 u64,模 100 小于 30 的进 held-out,其余进 dev。 dev 353 题、held-out 147 题;跑前固定,不换盐。 - 每一步跑之前先写预测与停止条件;同一个假设在 dev 上最多跑 3 次。
- held-out 在定稿后只跑一次;LoCoMo 永不调参,基线与定稿各一次。
- 已知污染:切分之前,曾在全部 470 题上看过分题型检索汇总,所以 held-out 并不完全干净。
判分怎么校验
- 官方判分提示逐字节取自上游并核对(LongMemEval 按题型加应弃答;LoCoMo 用公开的 J 分提示)。
- 三道校验针对的是一个候选判分模型(与阅读同档),对照标签来自另一厂商的判分模型:与对照标签的一致率(oracle 341/353,0.966; 检索 337/353,0.955); 错答顶替的误收率 0.033(60 对,阈值 ≤ 5%); 与第二判分(免费小模型)的一致率 0.84,低于事先放宽到的 90%;按事先写定的规则该项仅记录、不据此换判分。
- 一致率与误收率达标,但这个候选判分模型偏宽:oracle 0.870 → 0.904,检索 0.618 → 0.657(+0.034 / +0.039),超出事先写定的 ±0.02。 按事先写定的规则,不用它,判分改回另一厂商的模型(即对照标签的来源);本页所有问答分数都出自这个判分模型。
口径:dev · 2026-09-29 起 · 计划文档
结果
先看 held-out,再看 dev 与 LoCoMo。
held-out:问答总分对比只给证据的 oracle
held-out:会话检索(四项)
held-out:分题型问答
dev:分题型检索,词法 + 向量对比纯词法
LoCoMo:分类别 J(类别 1–4)
LoCoMo 轮次级检索
| 配置 | any@5 | any@10 | ndcg@10 |
|---|---|---|---|
| 基线 | 0.558 | 0.663 | 0.448 |
| 定稿(+ 词法清理) | 0.559 | 0.658 | 0.454 |
口径:LoCoMo · 2026-09-30 · a629dc2
- 作答用前 50 条命中轮次(约 2k token / 题)。
- 轮次级检索比会话级难得多:每段对话约 590轮。any@10 只有 0.658,是明显的短板, 下一版计划的检索组把它列为首项。
怎么提上去的
每一步:改了什么,为什么,花了什么。
问答(dev)
Q0 · 问答(dev 353 题)
基线:纯词法检索,只给命中轮
0.618竖线刻度:oracle 0.870(只给证据会话,dev)
- 改了什么
- 纯词法检索,作答上下文为前 20 条命中轮及其前后各 1 轮。
- 为什么
- 起点。失败归因(161 题逐题)显示:多会话题部分召回 25 题、证据齐全但只拿到命中轮 13 题、聚合式问句整体漏召 11 题;时间推理题孪生会话 12 题、旁白漏召 10 题;偏好题问句与证据措辞错配 6 题。
- 代价
- 阅读输入 3.32M token。
口径:dev · 2026-09-29 起 · 计划文档
Q1 · 问答(dev 353 题)
检索换成词法 + 向量,作答改给整本会话
0.765竖线刻度:oracle 0.870(只给证据会话,dev)
- 改了什么
- 检索换成词法 + 向量混合;作答上下文改为前 5 个会话整本。
- 为什么
- 多会话题要跨会话计数、汇总,零散命中轮给不全,所以给整本会话。
- 代价
- 阅读输入 4.25M token。
口径:dev · 2026-09-29 起 · fcf6e75
Q2 · 问答(dev 353 题)
加词法清理,再补第 6–10 名会话的命中轮
0.813竖线刻度:oracle 0.870(只给证据会话,dev)
- 改了什么
- 在 Q1 上加词法通道清理,并给第 6–10 名会话的命中轮 ±1 邻轮(定稿配置)。
- 为什么
- Q1 逐题拆分显示可挽回的错题主因是前 5 个会话装不全兄弟会话;离线估算后选了中间方案(见下表)。
- 代价
- 阅读输入 3.53M token。
口径:dev · 2026-09-29 起 · fcf6e75
检索(dev)
B0 · all@5(dev;any@5 0.828)
基线:纯词法(客户默认配置)
0.630- 改了什么
- 无改动,客户默认的纯词法检索。
- 为什么
- 起点。纯词法在多会话题上 any@5 0.857,但 all@5 只有 0.416;偏好题 any@5 只有 0.333。
- 代价
- 不涉及阅读 token。
口径:dev · 2026-09-29 起 · fcf6e75
B0 + 向量 · all@5(dev;any@5 0.828 → 0.973)
词法 + 向量混合
0.837- 改了什么
- 在词法之外加向量通道(开源多语言嵌入模型)。
- 为什么
- 纯词法的缺口集中在多会话与偏好题;加向量后多会话题 all@5 0.416 → 0.701,偏好题 any@5 0.333 → 0.857。
- 代价
- 多了嵌入开销,见「成本与复现」;不涉及阅读 token。
口径:dev · 2026-09-29 起 · fcf6e75
B1 · all@5(dev;any@5 0.973 不变)
词法通道清理
0.849- 改了什么
- 查询侧去掉英文功能词,覆盖率只算内容词;两个开关默认关,只影响英文。
- 为什么
- any@5 已 0.973,剩下的缺口在 all@5:0.837 → 0.849。中文冻结回归集除一项已知用例(17/18 → 18/18)外逐字节不变。
- 代价
- 不涉及阅读 token。
口径:dev · 2026-09-29 起 · fcf6e75
为什么选「前 5 会话整本 + 第 6–10 名命中轮」
Q1 逐题拆分(oracle 答对、本次答错的可挽回题):多会话:缺证据会话 18 题;多会话:证据齐全仍错 7 题;时间推理:缺证据 13 题;偏好:证据齐全仍错 5 题;时间推理:证据齐全仍错 1 题;偏好:缺证据 1 题;知识更新:缺证据 2 题;知识更新:证据齐全仍错 2 题。主因是前 5 个会话装不全兄弟会话。 于是先做了一次不花 token 的离线估算,在 216 道多证据题里数证据全在上下文中的题:
| 方案 | 证据全在上下文的题数 | 阅读输入 |
|---|---|---|
| 前 5 会话整本(Q1) | 168 | 基准 |
| 前 5 整本 + 第 6–10 名命中轮 ±1(Q2,选用) | 182 | 阅读输入 +8% |
| 前 10 会话整本 | 183 | 阅读输入 +31% |
选中间方案。Q2 之后剩下的可挽回题:检索不全 多会话 9、时间推理 9、偏好 1、知识更新 1; 证据齐全仍答错 多会话 8、偏好 3、时间推理 1。
dev 分题型问答
| 步骤 | 总分 | KU | MS | SSA | SSP | SSU | TR | 应弃答 | 阅读输入 |
|---|---|---|---|---|---|---|---|---|---|
| oracle(只给证据会话) | 0.870 | 0.864 | 0.819 | 1.000 | 0.857 | 1.000 | 0.804 | 0.714 | 2.15M |
| Q0 纯词法检索,前 20 命中轮 ±1 | 0.618 | 0.758 | 0.349 | 0.902 | 0.333 | 0.911 | 0.557 | 0.667 | 3.32M |
| Q1 词法 + 向量,前 5 会话整本 | 0.765 | 0.833 | 0.566 | 0.976 | 0.571 | 0.978 | 0.742 | 0.714 | 4.25M |
| Q2 + 词法清理 + 第 6–10 名命中轮 ±1(定稿) | 0.813 | 0.879 | 0.675 | 1.000 | 0.714 | 1.000 | 0.742 | 0.667 | 3.53M |
口径:dev · 2026-09-29 起 · fcf6e75 / 计划文档(oracle 与 Q0)· 353 题含应弃答
dev 检索汇总
| 配置 | any@5 | all@5 | any@10 | all@10 | ndcg@10 |
|---|---|---|---|---|---|
| B0 纯词法(客户默认配置) | 0.828 | 0.630 | 0.904 | — | 0.701 |
| 纯向量(开源多语言嵌入) | 0.958 | 0.831 | 0.985 | 0.889 | 0.882 |
| 纯向量(通用小型英文嵌入,截 800 字符) | 0.964 | 0.828 | 0.979 | 0.867 | 0.882 |
| 词法 + 向量 | 0.973 | 0.837 | 0.985 | 0.892 | 0.887 |
| B1 = 词法 + 向量 + 词法清理(定稿) | 0.973 | 0.849 | 0.988 | 0.901 | 0.890 |
口径:dev · 2026-09-29 起 · fcf6e75 · 检索可评分 331–332 题 · 「—」表示该项没有记录
定稿配置
- 检索:词法 + 向量混合检索(开源多语言嵌入模型)+ 词法通道清理(查询侧英文功能词、覆盖率只算内容词)+ 嵌入输入截断 8000 字符。两个清理开关
query_stopwords/content_word_coverage默认关,只影响英文查询;中文冻结回归集除一项已知用例(17/18 → 18/18)外逐字节不变。 - 作答上下文:前 5 个检索会话整本 + 第 6–10 名会话的命中轮 ±1 邻轮(
--top-sessions 5 --tail-sessions 5 --neighbors 1)。
没采用的尝试
失败的也写在这里。
01全局词频(global_idf)
- 结果
- 英文 dev any@5 单开 0.840、叠加后 0.861;但中文冻结回归集 ndcg@10 0.865 → 0.860、abstain_auc 0.710 → 0.683,触发事先写定的「任一 bucket ndcg 降 > 0.005」停止条件。
- 理由
- 停止条件成立,不采用;另有多租户侧信道顾虑:全局词频会泄露其他租户的词分布。
02按会话多样化命中
- 结果
- 没有跑。
- 理由
- 会话级指标按会话首次出现的顺序排名,多样化保留每组首条命中的相对顺序,前 k 个会话逐位不变,结构上零收益,所以没有花筛选时间。
03会话按命中分数聚合排序(Q3)
- 结果
- 检索 any@5 0.973 → 0.982、all@5 0.849 → 0.870;问答 0.813 → 0.807(差 2 题)。系数「最佳 + 0.3 × 第 2、3 佳」的 0.3 事先写定、没有调过。
- 理由
- 检索升、问答未升(0.813 → 0.807,差 2 题),不采用。
04词法清理对偏好题的预测
- 结果
- 预测翻正 +2 ~ +5 题,实测 0 题。
- 理由
- 预测落空,如实记录。
预测 vs 实测
先写预测,再看结果:命中 17 项,落空 9 项。
从 12 组预测中摘录 26 个主指标逐项:17 项命中,9 项落空。 每一项都在跑之前写下区间,跑完不改。
| 项目 | 集合 | 预测 | 实测 | 结果 |
|---|---|---|---|---|
| 1.B0 纯词法 any@5 | dev | 0.834 ± 0.03 | 0.828 | 命中 |
| 2.词法 + 向量 any@5 | dev | [0.93, 0.97] | 0.973 | 落空超上沿 0.003,严格按区间记落空 |
| 3.纯向量比词法 + 向量低多少 | dev | 低 0.01–0.04 | 低 0.015 | 命中 |
| 4.小型英文嵌入纯向量 any@5 | dev | [0.85, 0.93](我们不信公开的 0.966 能复现) | 0.964 | 落空公开数字基本复现 |
| 5.Q0 oracle | dev | [0.85, 0.93] | 0.870 | 命中 |
| 5.Q0 检索作答总分 | dev | [0.60, 0.75] | 0.618 | 命中 |
| 5.Q0 应弃答 | dev | ≥ 0.7 | 0.667 | 落空 |
| 6.同档判分与旧标签的分数差 | dev | ≤ ±0.02 | +0.034 / +0.039 | 落空按事先规则换判分 |
| 7.词法清理 any@5 | dev | [0.84, 0.87] | 0.858 | 命中 |
| 7.词法清理 MS all@5 | dev | [0.43, 0.50] | 0.468 | 命中 |
| 7.词法清理翻正的偏好题数 | dev | +2 ~ +5 | 0 | 落空 |
| 8.Q1 总分 | dev | [0.76, 0.84] | 0.765 | 命中 |
| 8.Q1 MS | dev | [0.60, 0.75] | 0.566 | 落空 |
| 8.Q1 SSP | dev | [0.62, 0.86] | 0.571 | 落空 |
| 8.Q1 TR | dev | [0.65, 0.78] | 0.742 | 命中 |
| 9.Q2 总分 | dev | [0.78, 0.83] | 0.813 | 命中 |
| 9.Q2 MS | dev | [0.62, 0.72] | 0.675 | 命中 |
| 9.Q2 TR | dev | [0.74, 0.80] | 0.742 | 命中 |
| 10.Q3 聚合排序总分 | dev | [0.81, 0.84] | 0.807 | 落空 |
| 11.any@5 | held-out | [0.95, 0.99] | 0.971 | 命中 |
| 11.all@5 | held-out | [0.80, 0.90] | 0.855 | 命中 |
| 11.问答总分 | held-out | [0.77, 0.85] | 0.837 | 命中 |
| 11.oracle | held-out | [0.84, 0.91] | 0.905 | 命中 |
| 11.问答与 oracle 的差 | held-out | ≤ 0.08 | 0.068 | 命中 |
| 12.轮次级检索 any@10 | LoCoMo | [0.80, 0.92] | 0.658 | 落空轮次级、每段约 590 轮,远难于会话级 |
| 12.J | LoCoMo | [0.70, 0.82] | 0.746 | 命中 |
口径:dev(组 1–10)· held-out(组 11)· LoCoMo(组 12)· 明细与提交号见各结果小节
与公开数字对照
同一把尺子才能比,所以先写清楚尺子。
我们held-out 0.837,oracle 0.905;作答用低价通用对话模型(关闭推理),判分用另一厂商的通用对话模型(关闭推理)。
作答与判分模型不同,下表只作档次参照,不是排名。
LongMemEval 问答准确率
| 系统 | 数字 | 作答档次 | 来源类型 | 链接 |
|---|---|---|---|---|
| Zep(Graphiti) | 0.712 | 强闭源模型(基准官方所用档) | 论文 | arXiv 2501.13956(在新窗口打开) |
| Supermemory | 0.816 | 强闭源模型(基准官方所用档) | 他方研究页转引 | mastra.ai(在新窗口打开) |
| Emergence厂商称不可独立复现其内部 0.860 版 | 0.824 | 强闭源模型(基准官方所用档) | 厂商自报 | emergence.ai(在新窗口打开) |
| Mastra Observational Memory | 0.842 | 强闭源模型(基准官方所用档) | 厂商自报 | mastra.ai(在新窗口打开) |
| Hindsight | 0.890 | 开源权重大模型(120B 级) | 厂商论文 | arXiv 2512.12818(在新窗口打开) |
| LongMemEval 论文 oracle(只给证据) | 约 0.92 | 强闭源模型(基准官方所用档) | 论文 | arXiv 2410.10813(在新窗口打开) |
按档次看:强闭源作答模型(基准官方所用档)下的公开值为 0.712–0.842;开源权重大模型档的公开值见表; 我们用的是低价作答模型,0.837。只给证据时,我们 0.905,论文 约 0.92。 作答模型、判分模型与题目子集都不同,这些数字不构成排名。
LoCoMo J(类别 1–4)
我们:0.746,低价通用对话模型(关闭推理)作答,判 1 次。
| 系统 | 数字 | 作答档次 | 来源类型 | 链接 |
|---|---|---|---|---|
| Mem0 | 0.669 | 低价闭源小模型 | 论文(Mem0 自家) | arXiv 2504.19413(在新窗口打开) |
| Mem0 图谱版 | 0.684 | 低价闭源小模型 | 论文(Mem0 自家) | arXiv 2504.19413(在新窗口打开) |
| 同论文全文上下文基线 | 0.729 | 低价闭源小模型 | 论文 | arXiv 2504.19413(在新窗口打开) |
| Zep(Mem0 论文中测得) | 0.660 | 低价闭源小模型 | 论文(竞争方测得) | arXiv 2504.19413(在新窗口打开) |
| Zep(Zep 自己复现) | 0.751 | 未披露 | 厂商博客 | blog.getzep.com(在新窗口打开) |
| Letta(文件系统代理) | 0.740 | 低价闭源小模型 | 厂商博客 | letta.com(在新窗口打开) |
| Memobase | 0.758 | 未披露 | 第三方复现 | github.com(在新窗口打开) |
| MemOS | 0.733 | 低价闭源小模型 | 第三方复现 | arXiv 2602.15313(在新窗口打开) |
| MIRIX | 0.854 | 低价闭源小模型(新一代) | 论文 | arXiv 2507.07957(在新窗口打开) |
| MIRIX 论文同实验全文上下文基线 | 0.875 | 低价闭源小模型(新一代) | 论文 | arXiv 2507.07957(在新窗口打开) |
按档次看:低价闭源小模型作答的公开值为 0.660–0.740;标「未披露」的行不知道作答档次; 我们判分只判 1 次,公开常见做法是 3 次取均值。「全文上下文基线」行是同论文的对照基线,不算系统。
会话检索
| 来源 | any@5 | 说明 |
|---|---|---|
| 公开审计 | 0.966 | 某开源项目宣称的 Recall@5,审计后等价于「通用小型英文嵌入模型 + 原文分块」的纯稠密检索 |
| 我们复跑 | 0.964 | 在自己的写入路径上用同一小模型,dev |
| 我们定稿 | 0.973 | dev |
| 我们定稿 | 0.971 | held-out |
公开审计记录:github.com(审计记录)(在新窗口打开)
更强或未披露作答口径下的厂商数字(单列,不与上表比)
| 基准 | 系统 | 数字 | 作答档次 | 链接 |
|---|---|---|---|---|
| LongMemEval | Mastra Observational Memory | 0.949 | 更新一代低价闭源模型 | mastra.ai(在新窗口打开) |
| LongMemEval | Hindsight | 0.914 | 更新一代强闭源模型 | arXiv 2512.12818(在新窗口打开) |
| LongMemEval | Mem0 研究页 | 0.944 | 未披露 | mem0.ai(在新窗口打开) |
| LoCoMo | Mem0 研究页 | 0.925 | 未披露 | mem0.ai(在新窗口打开) |
本领域自报数字的问题
- 同一系统换作答模型,分数可以差 20pp 以上:第三方复现中 LangMem 在两种低价闭源小模型下分别为 0.513 与 0.734。 arXiv 2602.15313(在新窗口打开)
- Mem0 与 Zep 互测的结果相差约 9pp(0.660 对 0.751),双方各执一词,尚无中立裁定。
- 有开源项目宣称 LongMemEval / LoCoMo 满分,公开审计后回落到常规检索水平;有厂商公开承认其 LoCoMo 99.95% 来自在测试对话上训练。 github.com(审计记录)(在新窗口打开)
- 判分口径、子集(是否含类别 5、是否只用部分题)、作答上下文预算不同,都会造成 20–40pp 的差异。
- 我们的做法:同一作答模型下报「检索上下文」与「oracle」两档;判分模型经过校验;找不到可复现方法的数字不列(例如声称「两榜第一」却没有给出数字的)。
成本与复现
花了多少,以及复现需要什么。
- token:模型账户充值后本轮共约 14M token(阅读为主,低价档;判分每轮约 8 万 token);此前 Q0 两次约 5.5M token 不在此数内。
- 嵌入:GPU 上单条 28 ms;容器 CPU 版满载约 1.2 s。
- 长输入:默认 batch 2048 token 装不下长轮次(3,076 token 即报错),改用 8192 上下文的变体, 并设
max_input_chars = 8000(个别轮次长达 7.6 万字符)。 - 并发:逐题独立、有界并发,
--jobs 8的墙钟约为串行的 1/3。
评测命令(形态)
# 嵌入后端经 MEMORUS_EVAL_EMBED_{PROVIDER,MODEL,DIMS,MAX_CHARS} 指定(定稿 MAX_CHARS=8000);配置补丁经 MEMORUS_EVAL_CONFIG_TOML 传入
memorus-eval longmemeval --arms staging-lexical-embed --data longmemeval_s_cleaned.json \
--split heldout --dump-hits 20 --include-abstention --jobs <N> --out <arm>.jsonl
# 配置补丁:[memory.lexical] query_stopwords = true;[ace.retrieval] content_word_coverage = true
python scripts/eval/qa/lme_qa.py --context retrieval --top-sessions 5 --tail-sessions 5 --neighbors 1 --split heldout ...
# 作答 / 判分模型由 QA_READER_* / QA_JUDGE_* 环境变量提供,仓库内只出现别名数据与代码
- LongMemEval_S sha256
- d6f21ea9d60a0d56f34a05b609c79c88a451d2ae03597821ea3d5a9678c3a442
- LoCoMo sha256
- 79fa87e90f04081343b8c8debecb80a9a6842b76a7aa537dc9fdf651ea698ff4
- 代码仓
- 目前为私有仓库,未对外公开;下列提交号供内部核对,对外复现以上方命令与数据集 sha256 为准。
- 提交(内部仓库提交号)
- a629dc2结果定稿
- fcf6e75聚合排序与尾部命中轮
- 80e4720词法清理(默认关)
局限与下一版计划
没做到的,和接下来要做的。
局限
- 作答模型是低价档;强闭源作答模型下的分数我们没有跑,不作推断。
- LoCoMo 只判 1 次(公开常见做法是 3 次取均值),也没有跑全文上下文对照(约 3,000 万 token,超出预算)。
- held-out 有轻度污染:切分之前,曾在全部 470 题上看过分题型检索汇总,所以 held-out 不是完全干净的。
- LongMemEval_S 的会话级 any@5 对小模型也不难,真正拉开差距的是 all@k 与问答。
- LoCoMo 轮次级检索 any@10 0.66 是明显的短板。
- 词法清理两个开关已合入产品代码,默认关闭,可经配置开启(见上方评测命令的配置补丁);「整本会话 + 尾部命中轮」目前只在评测脚本里,尚未进入检索 API。
- LongMemEval held-out 没有跑同作答模型的全文上下文一档,只报检索与 oracle 两档。
- 延迟没有在本轮系统测量,所以不报。
下一版改造计划
分四组,每项写目标与验证方式。
检索3 项
1.LoCoMo 短轮次检索
目标写入时把相邻轮上下文并入检索文本,或命中后按会话、相邻轮扩展。目标:轮次级 any@10 0.66 → ≥ 0.80。
验证LoCoMo 永不调参,只跑一次。
2.时间感知检索
目标查询里的相对日期(「上个月」「三周前」)对 valid_from 软加权。目标:temporal 问答 +5pp。
验证dev 预测先行,held-out 换新后跑一次。
3.跨会话兄弟证据召回
目标目标:held-out all@5 0.855 → ≥ 0.90。
验证dev 预测先行,held-out 换新后跑一次。
作答上下文进产品2 项
4.「整本会话 + 尾部命中轮」进检索 API
目标做成检索 API 的分组扩展参数,REST、MCP 与下游业务同源。
验证评测改走产品 API,分数与评测链路逐题一致。
5.检索结果带新旧 / 已被取代信息
目标把新旧、已被取代的信息交给作答侧,针对知识更新题取错新旧值的问题。
验证知识更新题的可挽回错题清零。
质量与可信4 项
6.第二家厂商判分复核;LoCoMo 判 3 次
目标用第二家厂商的判分模型复核全部定稿结果;LoCoMo 判 3 次取均值,并补全文上下文对照。
验证两家判分的逐题一致率与分数差随报告公开。
7.held-out 换新
目标新盐重切或换新数据,旧 held-out 转为 dev。
验证新 held-out 同样先写预测、定稿后只跑一次。
8.CI 夜间 dev 回归
目标每次发版在 CI 夜间自动跑 dev 回归,分数随版本公开。
验证夜间任务产出分数文件,较上一版回退即告警。
9.公开检索延迟
目标公开检索延迟 p50 / p95(含嵌入)。
验证本页补延迟分布,并写明测量环境。
工程1 项
10.随包配置与部署
目标随包配置启用词法清理开关(只影响英文查询);嵌入输入上限默认值;GPU 嵌入服务纳入部署;预发环境换新镜像。
验证下游业务接入验证。