Skip to content

LoCoMo —— Hebb Mind vs MemPalace

MemPalace 在全量 1,986 个 LoCoMo 问题上公布 session 级 Recall@k。他们的指标与我们的(见 LoCoMo)计算方式相同:把 ground-truth 的 evidence 解析为一组 session_id,当任一 GT session 出现在检索结果集中时,该问题即记为正确(session 级 hit@10)。

生产环境一致性 —— 最重要的说明

Hebb Mind 的基准测试调用与发布产品相同的代码路径。 评测 harness 把每一个 LoCoMo 轮次都经由生产环境的 Claude Code hook 写入(每条用户 prompt 触发 src/hebb/integrations/claude_code/write.py,每轮往返触发 stop.py):逐条发言的记忆使用相同的最小长度过滤与 session 范围去重;逐轮配对的摘要使用相同的 [<timestamp>] [<role>] … 格式。检索走的是 Claude Code、MCP server 和 Web 控制台都命中的同一个 /api/v1/search你在这里看到的 91.4% / 94.1% R@10,就是用户在生产环境中实际得到的 R@10(发布的 bge-large 默认配置、重排关闭时为 94.1%)。

MemPalace 的基准测试并不调用他们的生产管线。 我们对其仓库的源码级审计发现三处具体偏离:

  1. 写入粒度 —— 基准测试每个 session(或每个轮次)写入一份逐字原文文档;生产环境则把每条记忆切成 800 字符的窗口。整段 session 的文档比真实用户累积的分块大得多,也在语义上更连贯。
  2. 评分管线 —— 生产环境额外加入「closet boost」(对余弦距离 < 1.5 的加权命中按排名做距离削减 [0.40, 0.25, 0.15, 0.08, 0.04])、BM25 混合加权与邻接分块富化。这些在基准测试中一概不跑。
  3. Embedding 灵活性 —— 生产环境硬编码 ChromaDB 默认值(all-MiniLM-L6-v2),不可换模型;基准测试数字则横扫 MiniLM、bge-large 等多个模型。

逐字引用我们的审计:「生产管线(closet boost、BM25 混合、邻接扩展)在基准测试中并未被测试。基准数字反映的是基准管线,而非生产检索质量。」

这对下面的表格很重要:我们是在拿 prod-mirror 的 Hebb Mind 对比仅基准测试的 MemPalace。MemPalace 的数字是其评测 harness 所能产出的上限,而非其发布系统实际表现的度量。

头条 —— 无重排(R@10)

系统R@10Embedding备注
Hebb Mind(prod-mirror)94.14%bge-large-1024全部 10 个场景,评分 1,978 题(排除 8 个对抗性)
MemPalace bge-large hybrid92.40%bge-large-1024全量 1,986 题(MemPalace 公布)
MemPalace MiniLM hybrid92.63%MiniLM-384全量 1,986 题(从其发布的逐题数据重算 hit@10)
Hebb Mind(prod-mirror)91.41%MiniLM-384全部 10 个场景,评分 1,978 题

关于 MemPalace 的 MiniLM 数字:他们的头条「88.9%」是逐题平均召回|GT ∩ retrieved| / |GT|),而非 hit@10。从其发布的数据按我们相同的方式计算,同一次运行是 92.63% hit@10(平均召回 0.889)。我们全程以 hit@10 对 hit@10 比较。

同 embedding、无重排的差值(唯一诚实的比较):

EmbeddingHebbMemPalaceΔ
bge-large-102494.1492.40+1.74 pp
MiniLM-38491.4192.63−1.22 pp

无重排时,我们在 bge-large 档位领先,但在 MiniLM 上略微落后 —— MemPalace 的 BM25 混合对较弱的 384 维 embedder 调校得很好。我们发布的默认配置用 bge-large,在那里 prod-mirror 的 3 路 RRF(日期邻近度加权、通用英文同义词扩展、前/后轮窗口)已然领先。

带重排(R@10)

Hebb Mind 现已附带可选的本地 cross-encoder 重排BAAI/bge-reranker-basesrc/hebb/retrieval/rerank/)—— 不调用 LLM API,在 CPU 上运行。

系统R@10重排备注
MemPalace bge-large + Haiku 重排96.30%LLM(Claude Haiku)全量 1,986 题(MemPalace 公布)
Hebb Mind bge-large + bge-reranker-base95.75%本地 cross-encoder全部 10 个场景
Hebb Mind MiniLM + bge-reranker-base94.69%本地 cross-encoder全部 10 个场景

同 embedding、带重排的差值:

EmbeddingHebb(+ 重排)MemPalace(无重排)Δ
bge-large-102495.7592.40+3.35 pp
MiniLM-38494.6992.63+2.06 pp

本地 cross-encoder 提升了每个 embedding 档位(bge-large +1.61、MiniLM +3.28、e5-small +2.43 pp),并扭转了 MiniLM 的劣势 —— MiniLM + 重排(94.69%)现已比 MemPalace 的 MiniLM hybrid 高 +2.06 pp,甚至略胜我们自己不带重排的 bge-large(94.14%)。

对比 MemPalace 公布的最强配置(bge-large + Claude Haiku LLM 重排,96.30%),我们差 −0.55 pp —— 而且我们用一个免费的本地 cross-encoder 而非逐查询的 LLM 调用,就几乎补齐了全部差距。(本页上一版报告为 −3.0 pp,并注明「重排尚未实现;在路线图上」;现已实现。)

为什么这个比较是公平的(以及哪里不公平)

公平之处:

  • 相同指标(经 evidence 求交的 session 级 hit@10),两侧计算方式一致
  • 相同 top_k=10
  • 相同数据集,两侧都跑全部 10/10 个 LoCoMo 场景(在排除 8 个 evidence 为空/无法解析的题目后,1,986 题中评分 1,978 题 —— 与 MemPalace 使用的排除策略相同)

不严格公平之处:

  • 我们用 prod-mirror 的逐发言 + 逐配对记忆(每场景约 875 条记忆,共 8,755 条);MemPalace 每个 session 写入一份文档(每段会话约 19–32 份文档)。在相同 top-k 下我们检索的候选池大得多,这更难 —— 但指标恰恰是在 session 粒度上评分的,所以这一点对他们的设置有利。
  • MemPalace 的 bge-large 与 Haiku 重排数字是他们自己公布的(未发布逐题数据);只有他们的 MiniLM 运行能按我们的精确指标重算。
  • Embedding 容量解释的是绝对分数水平,而非差距:同 embedding 的差值在 384 维与 1024 维档位都成立。

来源

mempalace benchmark deep-dive §4 —— 对 MemPalace hybrid v1–v5 管线、embedding 扫描、LLM 重排排程,以及催生上文生产一致性说明的「基准 vs 生产」偏离的源码级拆解。Hebb Mind 数字:eval/reports/locomo/matrix/SUMMARY.md

Released under the MIT License.