☰
LongMemEval数据集格式完全指南:3个JSON文件与Haystack大海捞针设计详解
2026/10/15 16:57:44 网站建设 项目流程
  • 模型评测
  • AI 评测
  • 人工智能
  • 大模型

【免费下载链接】LongMemEval

Benchmarking Chat Assistants on Long-Term Interactive Memory (ICLR 2025)

项目地址:https://gitcode.com/gh_mirrors/lo/LongMemEval
点击查看免费下载

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_hopsingle-session-user
assistant_previnfosingle-session-assistant
implicit_preference_v2single-session-preference
two_hop/multi_session_synthesismulti-session
temp_reasoning_explicit/temp_reasoning_implicittemporal-reasoning
knowledge_updateknowledge-update

除了以上 6 种,当question_id以_abs结尾时,该题属于abstention类型:所问信息从未出现在历史中,正确答案是"表示不知道",而不是编造。

5. Haystack 设计深挖:大海捞针是怎么造出来的 🔍

LongMemEval 的高难度来自一条属性受控的编译流水线,haystack 绝不是随机垃圾文本:

  1. 用户属性背景:每个虚拟用户有一致的属性设定(如职业、设备、偏好),证据会话围绕这些属性生成,保证历史"自洽不矛盾"。
  2. 填充干扰会话:填充会话按固定比例混入——约 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中。
  3. 时间戳约束:按任务需求分配日期。例如knowledge-update任务保证"旧信息早于新信息"、temporal-reasoning任务的时间顺序与推理要求严格对齐;最终 s/m 版本的haystack_dates按时间升序排列。
  4. 长度控制: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规模的历史?流程如下:

  1. 下载四部分语料(用户属性背景、问题与证据会话、filler 会话、模拟会话),解压到data/custom_history目录。
  2. 运行抽样脚本复现历史编译:
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)

项目地址:https://gitcode.com/gh_mirrors/lo/LongMemEval
点击查看免费下载

相关推荐

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询