
云端、自托管还是桌面版?先决定谁负责故障
2026年7月18日研究

从公共 benchmark 走向生产验收集:同时衡量写入策略、检索、延迟与下游答案。
一项记忆 benchmark 只能告诉你:某个冻结系统在某套运行器里回答了某个数据集。它不能告诉你,你的客服智能体是否记住了正确账户、是否尊重已经纠正的偏好、是否避开另一个租户的数据,也不能证明供应商超时后系统能安全恢复。
生产评估因此需要两层:用公共 benchmark 识别广泛失效类别,再用产品自身轨迹建立一套私有、版本化验收集。
“提高记忆准确率”不是验收标准。要写清楚记忆应该改善哪项决策,例如选择当前收货地址、保留用户的沟通限制、跨会话继续工作流、引用回答所依据的政策版本,或在没有可靠记忆时拒绝猜测。
每个案例都应包含来源轨迹、预期持久记录、检索查询、必须出现与禁止出现的证据、预期下游决策,以及这项决策为什么重要。
| 层级 | 核心问题 | 示例指标 |
|---|---|---|
| 写入 | 系统是否保存了正确的持久信息? | 必要事实召回率、禁止事实率、重复率 |
| 状态 | 纠正与有效期是否正确? | 当前值准确率、as-of 准确率 |
| 检索 | 上下文是否包含回答所需证据? | 上下文完整度、精确率、排名 |
| 答案 | 智能体是否依据证据作出正确决策? | 任务 rubric 或精确答案 |
| 运营 | 闭环能否承受真实交付条件? | 尾延迟、失败率、重试、索引可见时间 |
| 安全 | 是否暴露了禁止的作用域或来源? | 跨租户泄漏与策略违规 |
答案可能因为错误原因而正确:模型本来就知道答案,评测问题泄漏了答案,或者无关检索内容碰巧诱导出目标短语。应检查组装后的上下文是否真正包含必要证据,同时排除了相互矛盾或未经授权的材料。
反过来,一条相关检索命中也不能保证正确答案。应用可能排列证据不当、遗漏时间标记,或把本应由确定性代码完成的决策交给模型。把检索层和答案层分开评分,才能知道应该修哪一层。
先抽样真实分布,再有意识加入困难案例:
在保留决策结构的前提下删除或脱敏敏感用户数据,并为每个案例提供稳定身份,使不同发布版本可以逐项比较。
开发集用于检查失败、调整提示词、改变检索和调节阈值;holdout 集在候选版本冻结前保持不可见。边调参边反复查看发布集,会让它变成另一个开发集。
对于小改动,成对评估通常比两个独立平均值更有信息。用两个候选运行相同案例,记录哪些项目发生翻转,并检查收益是否集中在一种类型、同时让另一种类型退化。
没有运行清单的 benchmark 结果只是一张截图;有清单和原始输出,它才是一项其他工程师可以质疑和复现的实验。
LoCoMo、LongMemEval 和 BEAM 观察的是长期记忆不同方面。它们的分数不可互换,使用不同模型、提示词、检索上限或裁判协议的数字,也不应被放进同一张表假装赛跑。
FishMem 在 2026-08-24 冻结的评测组合中,对 FishMem 与 mem0 OSS 3.1.2 的每道题进行配对比较,并在每一组中使用相同且公开的配置。500 道 LongMemEval oracle 中,FishMem 为 88.2%,mem0 为 83.8%;配对差值为 +4.4 pt,95% 置信区间为 +1.0 至 +7.8。400 道 BEAM 100K 中,FishMem 为 46.7%,mem0 为 41.0%;差值为 +5.7 pt,95% 置信区间为 +1.8 至 +9.5。
LoCoMo 是败项,也完整保留在发布结果中。类别 1–5 共 1,986 道配对题里,FishMem 为 67.5%,mem0 为 71.1%;差值为 −3.7 pt,95% 置信区间为 −5.8 至 −1.5。LongMemEval oracle 不是 LongMemEval-S。中断后恢复的运行使本次成本和端到端总耗时不满足公开对比条件;FishMem 在两个胜项上也使用了明显更多的召回上下文。这些限制是结果本身,不是应该藏起来的脚注。
LLM judge 对语义答案有用,但它也带来方差和偏差。保持 rubric 狭窄,保存裁判解释,尽可能隐藏系统身份,并人工抽查同意与分歧样本。ID、作用域、删除、事件状态等确定性契约,仍应优先使用精确检查。
不要把同一道题重试到裁判通过,再只报告最好结果。运行前定义重试策略,并保留所有失败。
按被破坏的决策归类:漏写、作用域错误、旧事实、排序不佳、上下文不完整、答案推理或运营故障。修复最深层且反复出现的原因,加入回归案例,再重跑整组测试。只说分数提高、却解释不了哪些失败发生变化,很难建立信任,也难以维护。