- 模型评测
- AI 评测
- 人工智能
- 大模型
【免费下载链接】LongMemEval
Benchmarking Chat Assistants on Long-Term Interactive Memory (ICLR 2025)
LongMemEval 是一个用于测试聊天助手长期记忆能力的开源评测数据集(ICLR 2025),包含 500 道高质量问题。本文将带你读懂它的 3 个 JSON 文件、每个实例的核心字段,以及"大海捞针"式 Haystack 历史的设计思路,让你快速上手评估自己的记忆系统。
1. 先认识 LongMemEval:它到底在考什么 🧠
LongMemEval 的 500 道问题覆盖了 5 种核心长期记忆能力:
- Information Extraction(信息抽取)
- Multi-Session Reasoning(多会话推理)
- Knowledge Updates(知识更新)
- Temporal Reasoning(时间推理)
- Abstention(拒答——知道"我不知道"也是能力)
它的设计灵感来自经典的 needle-in-a-haystack 测试:把藏有答案的少数会话("针")埋入大量无关聊天历史("干草堆")中,模型必须在读完全部历史后,先记住再回答。
一图看懂 7 类问题示例
2. 3个JSON文件速览:s / m / oracle 怎么选?
官方数据包共 3 个文件,难度不同,但每个文件都包含 500 个评测实例:
| 文件 | 历史规模 | 设计意图 |
|---|---|---|
longmemeval_s.json | 约 115k tokens(~40 个会话) | 可塞进 128k 上下文,适合做长上下文全量阅读测试 |
longmemeval_m.json | 每个实例约 500 个会话 | 远超 s 版本,是记忆检索系统的"重头戏" |
longmemeval_oracle.json | 只含证据会话 | oracle 检索:去掉检索环节,纯粹考答题正确性 |
选型建议:
- 想测模型能否完整读全并记住全部历史→ 选
longmemeval_s.json或longmemeval_oracle.json(二者均可放入 128k 上下文)。 - 想测基于检索的记忆系统→ 用
longmemeval_m.json,它太长,无法全量喂入。 - 三个文件的详细说明见 README.md 的 "Dataset Format" 章节。
3. 每个实例的 9 个核心字段详解
3 个文件结构完全一致,每个实例包含以下字段:
| 字段 | 含义 |
|---|---|
question_id | 问题唯一 ID;以_abs结尾则是 abstention 拒答题 |
question_type | 问题类型,共 6 种,映射关系见下文 |
question | 问题内容 |
answer | 标准答案 |
question_date | 提问日期 |
haystack_session_ids | 历史会话 ID 列表(s/m 版本按时间戳排序,oracle 不排序) |
haystack_dates | 每个会话对应的时间戳列表 |
haystack_sessions | 聊天历史的实际内容 |
answer_session_ids | 证据会话 ID 列表,即"针"的位置 |
haystack_sessions 的三层嵌套结构
haystack_sessions的组织是:实例 → 会话列表 → 轮次列表 → 轮次字典。每个轮次的格式为{"role": "user"/"assistant", "content": "消息内容"}。
💡 注意一个细节:包含关键证据的轮次会额外附带has_answer: true标签,这是轮次级记忆召回准确率评测的依据。
answer_session_ids:检索评测的"标准答案"
answer_session_ids记录了"针"藏在哪些会话里,用于会话级记忆召回评测。做检索评测时通常会跳过 30 个_abs拒答实例——因为它们指向不存在的事件,没有真实的答案位置,详见 src/evaluation/print_retrieval_metrics.py。
4. 6 种 question_type:数据命名与官方名称对照
question_type有 6 个官方取值,而发布的数据里使用了另一套命名。对照表如下(来自历史编译脚本的说明):
| 数据中的名称 | 官方名称 |
|---|---|
single_hop | single-session-user |
assistant_previnfo | single-session-assistant |
implicit_preference_v2 | single-session-preference |
two_hop/multi_session_synthesis | multi-session |
temp_reasoning_explicit/temp_reasoning_implicit | temporal-reasoning |
knowledge_update | knowledge-update |
除了以上 6 种,当question_id以_abs结尾时,该题属于abstention类型:所问信息从未出现在历史中,正确答案是"表示不知道",而不是编造。
5. Haystack 设计深挖:大海捞针是怎么造出来的 🔍
LongMemEval 的高难度来自一条属性受控的编译流水线,haystack 绝不是随机垃圾文本:
- 用户属性背景:每个虚拟用户有一致的属性设定(如职业、设备、偏好),证据会话围绕这些属性生成,保证历史"自洽不矛盾"。
- 填充干扰会话:填充会话按固定比例混入——约 50% 用户模拟会话、25% ShareGPT、25% UltraChat。这个比例直接写在 data/custom_history/sample_haystack_and_timestamp.py 的
haystack_source_ratio_user, haystack_source_ratio_sharegpt, haystack_source_ratio_ultrachat = 0.5, 0.25, 0.25中。 - 时间戳约束:按任务需求分配日期。例如
knowledge-update任务保证"旧信息早于新信息"、temporal-reasoning任务的时间顺序与推理要求严格对齐;最终 s/m 版本的haystack_dates按时间升序排列。 - 长度控制:s 版本用
enforce_json_length=115000控制总长度,超长时随机丢弃填充会话,但证据会话永远保留。
正因为这套流水线,历史既是连贯的(同一用户属性不自相矛盾),又是可扩展的——你可以轻松把历史加长到 500 个会话以上,构造比longmemeval_m更难的自定义数据集。
6. 上手实操:三步评估你自己的系统 ⚡
第一步:喂历史、收答案
把带时间戳的历史直接喂给你的聊天系统,收集输出,保存为jsonl格式,每行只需两个字段:question_id和hypothesis。
第二步:跑评测脚本
export OPENAI_API_KEY=YOUR_API_KEY cd src/evaluation python3 evaluate_qa.py gpt-4o your_hypothesis_file ../../data/longmemeval_oracle.json第三步:聚合分数
python3 print_qa_metrics.py gpt-4o your_hypothesis_file.log ../../data/longmemeval_oracle.json若想复现论文中的检索实验,可直接使用 src/retrieval/run_retrieval.sh 与 src/generation/run_generation.sh,支持 BM25 及多种稠密检索器、turn/session 两种粒度,参数细节见 README.md。
7. 进阶:如何构造自定义 Haystack 历史
想造出超过longmemeval_m规模的历史?流程如下:
- 下载四部分语料(用户属性背景、问题与证据会话、filler 会话、模拟会话),解压到
data/custom_history目录。 - 运行抽样脚本复现历史编译:
python3 sample_haystack_and_timestamp.py task n_questions min_n_haystack_filler max_n_haystack_filler enforce_json_length官方取值:longmemeval_s用min_n_haystack_filler=max_n_haystack_filler=80、enforce_json_length=115000;longmemeval_m用 500 个会话且不限制 token 长度。
总结:一张表带你看懂 LongMemEval
| 你想了解 | 去哪里看 |
|---|---|
| 三种难度版本区别 | README.md "Dataset Format" 章节 |
| 字段结构与 has_answer 标签 | 本文第 3 节 |
| 历史编译与时间戳逻辑 | data/custom_history/sample_haystack_and_timestamp.py |
| 问答 / 检索 / 生成实验 | src/evaluation/、src/retrieval/、src/generation/ |
LongMemEval 的核心思想一句话概括:把"证据"几根针埋进一大片自洽的干草堆里,看助手能不能记住并用上它们。读懂了这 3 个 JSON 文件与 9 个字段,你就可以复现、扩展这个基准,并公平地评估任何长期记忆系统。
- 模型评测
- AI 评测
- 人工智能
- 大模型
【免费下载链接】LongMemEval
Benchmarking Chat Assistants on Long-Term Interactive Memory (ICLR 2025)
相关推荐
为什么Balena Etcher成为系统部署的终极安全选择?
为什么Balena Etcher成为系统部署的终极安全选择? 你是否曾经在制作系统启动盘时,因为一个错误的点击而差点格式化掉整个硬盘?或者在深夜加班部署系统时,
桌面应用开发工具智能硬件tmux-copycat实战教程:如何快速定位Git提交哈希和文件路径
tmux copycat实战教程:如何快速定位Git提交哈希和文件路径 tmux copycat是一款强大的tmux插件,它显著增强了tmux的搜索功能,让用户
开发工具OpenCompass Needlebench 完全指南:大海捞针式长上下文检索与推理评估(已废弃版)
OpenCompass Needlebench 完全指南:大海捞针式长上下文检索与推理评估(已废弃版) 本文是 OpenCompass 开源评测平台中 need
模型评测人工智能大模型AI 评测
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考