news 2026/9/13 17:30:17

如何运行 MemPalace 的 MemBench(ACL 2025)检索基准并解读各难度类别得分?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何运行 MemPalace 的 MemBench(ACL 2025)检索基准并解读各难度类别得分?

如何运行 MemPalace 的 MemBench(ACL 2025)检索基准并解读各难度类别得分?

【免费下载链接】mempalaceThe best-benchmarked open-source AI memory system. And it's free.项目地址: https://gitcode.com/GitHub_Trending/me/mempalace

MemPalace 仓库的benchmarks/目录内置了多个记忆检索基准脚本,其中 membench_bench.py 对应 MemBench(ACL 2025)数据集:8,500 个多轮对话 QA 条目,覆盖 10 个难度类别。这篇文章说明如何在本机运行这个基准,复现仓库公布的 80.3% R@5(hybrid 模式、top-5),并逐类别解读得分含义。整个过程不需要 API key、不需要 LLM、不需要 GPU,只需要提前把数据集下载到本地。

先确认指标口径:检索召回率,不是问答准确率

MemBench 每个条目包含一段多轮对话(message_list)和一道选择题(question、choices、ground_truth、target_step_id)。脚本的评分方式是:

  • 把该条目的所有对话轮次建入临时 ChromaDB 集合(EphemeralClient,跑完即弃);
  • 用问题做检索,取 top-K 候选;
  • R@K = 答案相关轮次(target_step_id)是否出现在 top-K 检索结果中

这一点在 BENCHMARKS.md 的 "Notes on Reproducibility" 中有明确界定:这些分数衡量的是"正确会话/轮次是否在 top-K 里",即 retrieval recall,不是端到端 QA 准确率(由 LLM 用检索结果生成答案是否正确)。两者不能直接比较,解读得分时先记住这个口径。

准备:安装依赖与获取数据集

安装环境

在 mempalace 仓库根目录执行(来自 benchmarks/README.md 的 Setup 一节):

uv sync --extra dev # or: pip install -e ".[dev]"

benchmarks/README.md 列出的要求是:

  • Python 3.9+
  • chromadb(唯一依赖)
  • 基准运行期间不需要联网(数据下载完成后)、不需要 API key、不需要 GPU

下载 MemBench 数据

membench_bench.py 的文档头写明数据来源于import-myself/Membench仓库,用法示例把数据目录放在/tmp/membench/MemData/FirstAgent。克隆到该位置即可对上示例路径:

git clone https://github.com/import-myself/Membench.git /tmp/membench

克隆后,MemData/FirstAgent目录下应包含各类别的 JSON 文件(simple.jsonhighlevel.jsonknowledge_update.jsoncomparative.jsonconditional.jsonnoisy.jsonaggregative.jsonhighlevel_rec.jsonlowlevel_rec.jsonRecMultiSession.jsonpost_processing.json)。注意脚本对缺失的文件是静默跳过的——某个类别文件不在,该类别就不会出现在结果里,也不会报错。如果数据放在别处,把下面命令的第一个参数改成你的FirstAgent目录即可。

运行基准

先用 --limit 做冒烟测试

脚本用法示例中给出的快速测试命令(只跑 50 条):

python benchmarks/membench_bench.py /tmp/membench/MemData/FirstAgent --limit 50

确认能正常输出检索进度和结果后再跑全量。

完整默认运行

python benchmarks/membench_bench.py /tmp/membench/MemData/FirstAgent

这条命令对应仓库公布的 80.3% 参考结果:默认--mode hybrid--top-k 5、全部类别、movie 主题外加数据文件中的 roles/events 题目,共 8,500 条。

可选参数(来自脚本的 argparse 定义):

参数默认值用途
--category全部类别只跑单个类别,如--category highlevel,可选值即上表 11 个类别文件对应的名称
--topicmovie主题过滤:moviefoodbook
--top-k5检索 top-k
--limit0(全量)限制条目数,用于快速测试
--modehybridraw为纯嵌入检索;hybrid先取 3 倍 top-k 候选,再用谓词关键词重合度重打分取前 top-k
--out自动命名结果 JSON 输出路径,默认形如benchmarks/results_membench_{mode}_{category}_{topic}_top{k}_{时间戳}.json

单类别示例(脚本 docstring 中的原示例):

python benchmarks/membench_bench.py /tmp/membench/MemData/FirstAgent --category highlevel

如果你想对比纯嵌入检索的效果,可加--mode raw。注意仓库公布的 MemBench 参考分数是 hybrid + top-5 口径,要复现 80.3% 就用默认参数。

输出长什么样

运行中每 50 条打印一次进度:

[ 100/8500] running R@5: 81.0%

(以上为按脚本打印格式示意的一行,数值会随你的运行进度变化。)

结束时打印汇总块,结构如下——数值部分为仓库公布的参考结果(BENCHMARKS.md "MemBench (ACL 2025)" 一节,并已核对提交在仓库的结果文件):

RESULTS — MemPal on MemBench (hybrid mode, top-5) Overall R@5: 80.3% (6828/8500) By category: aggregative 99.3% (993/1000) comparative 98.4% (984/1000) knowledge_update 96.0% (960/1000) simple 95.9% (959/1000) highlevel 95.8% (479/500) lowlevel_rec 99.8% (499/500) highlevel_rec 76.2% (381/500) post_processing 56.6% (566/1000) conditional 57.3% (573/1000) noisy 43.4% (434/1000)

脚本是确定性的——文档明确说明"same data + same script = same result",嵌入同样可复现,所以同样的数据与参数应得到同样的数。结果 JSON 默认写入benchmarks/下,仓库已提交一份完整结果文件 results_membench_hybrid_all_movie_top5_20260414_1656.json:其中 8,500 条记录逐题包含 question、ground_truth、target_sids、retrieved_sids 和 hit 标志,可以逐题审计而不是只看汇总。

如何解读各难度类别的得分

BENCHMARKS.md 给出的各含义说明:

类别R@5含义
aggregative99.3%组合多轮信息
comparative98.4%跨轮次比较两个对象
lowlevel_rec99.8%推荐类——低层
knowledge_update96.0%随时间变化的事实
simple95.9%单轮事实召回
highlevel95.8%需要聚合的推理
highlevel_rec76.2%推荐类——高层
conditional57.3%条件推理
post_processing56.6%后处理类任务
noisy43.4%混入干扰项/无关信息
Overall80.3%6828/8500

解读时按文档给出的结论分三档看:

  • 强项(aggregative / comparative / lowlevel_rec):MemPalace 对多轮事实组合处理得很好,这是它的核心设计(逐字原文存储 + 嵌入检索)覆盖的场景;
  • noisy(43.4%)是设计上的最难类别:题目刻意混入与信号在嵌入层面无法区分的干扰信息,文档明确称这是"verbatim storage 的设计硬场景"——噪声与信号在嵌入层面不可区分时,检索就会退化。如果你的运行里 noisy 落在 43% 上下,这是文档记录的预期行为,不是配置错误;
  • conditional / post_processing(57.3% / 56.6%):属于推理密集型类别,文档的表述是"retrieval alone is insufficient"——纯检索本身不够,这解释了为什么它们停在 50%–60% 区间。

如果某个类别分数明显偏离上表,文档支持的核对方向是:确认数据目录里对应类别的 JSON 文件齐全(缺失会被静默跳过)、运行参数与参考口径一致(默认 hybrid + top-5),然后打开结果 JSON 逐题比对retrieved_sidstarget_sids

限制

  • 全程无 LLM:MemBench 这条基准只测检索召回,不需要任何 API key;这与 LongMemEval 等脚本中可选的--llm-rerank流程不同。
  • 80.3% 是 hybrid 模式 + top-5 的口径。换成--mode raw或不同--top-k,分数会不同,仓库没有公布这些口径的 MemBench 参考值,无法直接对照。
  • 主题过滤只影响 topic-keyed 文件(movie/food/book);数据中按 roles/events 组织的条目会始终被加载,所以默认一次运行就是全部 8,500 条。

继续深入

  • 基准总分、其他基准(LongMemEval / LoCoMo / ConvoMem)的复现命令:benchmarks/README.md 与 benchmarks/BENCHMARKS.md
  • hybrid 评分细节(关键词重打分公式等):benchmarks/membench_bench.py 的run_membench
  • 逐题审计入口:benchmarks/results_*.json结果文件,每个文件包含每一题的检索明细

【免费下载链接】mempalaceThe best-benchmarked open-source AI memory system. And it's free.项目地址: https://gitcode.com/GitHub_Trending/me/mempalace

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/13 17:29:22

光伏+储能双层优化配置接入配电网的Matlab实现与工程实践

做配电网规划的人,迟早会碰上这样一个问题:光伏往哪儿装、装多大容量,储能又该配多少,才能既让电网稳定运行,又能把投资效益最大化。这个问题看着简单,实际一上手就会发现,光伏的时序出力和负荷…

作者头像 李华
网站建设 2026/9/13 17:28:02

模拟退火算法优化混合能源系统的Matlab实现

1. 项目概述这个项目探讨的是如何利用模拟退火算法(Simulated Annealing, SA)来优化太阳能、风能和水力混合的抽水蓄能系统。作为一名在电力系统优化领域工作多年的工程师,我深知可再生能源并网的最大挑战就是其波动性和间歇性。太阳能只在白…

作者头像 李华
网站建设 2026/9/13 17:27:36

9200张跌倒图像VOC数据集+YOLOv8训练全流程指南

简介:本资源是一套专为YOLO系列目标检测模型训练优化的跌倒行为识别数据集,面向计算机、电子信息工程及数学等专业的本科生课程设计、毕业设计与科研实践需求,解决跌倒检测算法开发中高质量标注数据匮乏的核心痛点。压缩包共含2000个文件&…

作者头像 李华
网站建设 2026/9/13 17:26:25

股票买卖动态规划全系列:从基础DP到wqs二分优化

简介:本资源是面向《算法导论》课程学习者与期末备考学生的实践型项目包,聚焦股票买卖最佳时期这一经典动态规划问题族,系统实现含单次、多次、含手续费、含冷冻期等变体的最优解法,并重点应用wqs二分优化交易次数约束场景。压缩包…

作者头像 李华
网站建设 2026/9/13 17:25:47

2020电赛ProblemC爬坡小车源码解析:从驱动到调参实战

简介:这份2020年电赛ProblemC爬坡小车源码包,是一套基于MSP430F5529的完整嵌入式竞赛方案,面向电子、计算机、自动化等专业学生,适合正在备赛电赛或有嵌入式开发基础、希望研究小车爬坡与循迹算法的读者。压缩包共88个文件&#x…

作者头像 李华