Ground truth comes only from third-party annotations (MMLongBench-Doc
evidence_page_ids, VisRAG qrels, ScreenSpot-v2 bboxes, Video-MME QA,
LongMemEval answer_session_ids, CodeSearchNet func_path+func_name) and
from document structure; no model judgement is used anywhere.
- bench/corpus/manifest.jsonl: 28 sources with url, retrieved_at, sha256,
annotation_source, license, files[]; verified by bench.manifest_check
- bench/sets/{pdf,image,ui_screenshot,video,code,conversation}.{jsonl} plus
corpus indexes and a manifest that freezes every file's sha256
- 2,928 answerable + 2,380 unanswerable queries over 854 holders; every
query carries scope {holder, scenario, as_of} for transactive routing
- bench/validate_sets.py fails on missing gold, holder mismatch between
gold and query, gold observed after as_of, and manifest digest drift
3.2 KiB
3.2 KiB
标注集 Schema(b-2)
评测的真相来源。所有 bench/sets/*.jsonl 必须满足本文件;bench/validate_sets.py 拒绝任何违规。
1. 一条标注的字段
{
"query_id": "mmlongbench:PH_2016.06.08_Economy-Final.pdf:0",
"modality": "pdf | image | ui_screenshot | video | code | conversation",
"question": "原文问题,逐字保留",
"answer": "标准答案原文;不可回答时为 null",
"answer_format": "str | int | float | list | none",
"gold": [{ "source_id": "mmlongbench:PH_2016.06.08_Economy-Final.pdf", "region": { "page": 5 } }],
"scope": { "holder": "owner", "session": null, "scenario": "document-qa" },
"as_of": "2024-01-01T00:00:00+00:00",
"unanswerable": false,
"origin": { "dataset": "yubo2333/MMLongBench-Doc", "revision": "2ff6aa...", "item": "row:0", "license": "see dataset card" },
"split": "dev | test"
}
2. 硬约束
- gold 必须来自第三方人工标注,不得由被测系统或本仓库生成。每个来源在
bench/corpus_sources.py里登记annotation_source。 - gold 表达为「源 + 区域」,不是 atom id。atom id 依赖切分策略,而切分策略正是 P0 要改的东西;runner 在运行时把区域解析成当时重叠的 atom id 集合。这样换切分不用重标。
unanswerable=true的条目gold必须为空数组,且计入误召回率。目标占比 ≥15%。as_of是查询发生的时间点;记忆条目的observed_at晚于as_of时不得作为 gold 命中(时间正确性指标)。scope.holder决定可见性;跨 holder 泄漏即判错(transactive 指标)。split冻结:test只在最终验收用,调参期间不得读取。origin.revision必须能在bench/corpus/manifest.jsonl中找到对应文件,否则该条目标本失效。
3. 区域表达
| modality | region |
|---|---|
{"page": int} 或 {"page": int, "block": int} |
|
| image | {}(整图) |
| ui_screenshot | {"bbox": [x0,y0,x1,y1]} |
| video | {"t_start": float, "t_end": float} |
| code | {"path": str, "symbol": str} 或 {"path": str, "line": int} |
| conversation | {"turn": int} |
4. 指标映射
| 指标 | 定义 | 门槛 |
|---|---|---|
| recall@10 | gold atom 集合进入前 10 的比例(按 gold 覆盖) | ≥0.90 |
| MRR | 首个 gold 命中排名倒数均值 | 报告 |
| nDCG@10 | 二值相关 | 报告 |
| 误召回率 | unanswerable 条目里返回了 gold 之外强证据的比例 | ≤0.10 |
| 时间正确性 | 含 as_of 的条目里,命中项未泄漏未来证据的比例 |
≥0.95 |
| holder 正确性 | 跨 holder 查询未泄漏他人记忆的比例 | ≥0.95 |
| 编译延迟 | 从提问到 cartridge 就绪的墙钟 p50/p95 | 报告 |
分母一律是「该模态的标注条目数」,不得用命中数。
5. 反自欺条款
- 禁止用被测系统自己抽取的文本当 gold(例如「OCR 出来的就是答案」)。
- 禁止把 gold 文件整文件当 gold atom:gold 必须落到区域,否则整文件切分也能满分。
- 任何指标变化必须同时报告 n 与分母。
- 报告必须引用
bench/corpus/manifest.jsonl的 sha256 与bench/sets/*.jsonl的 sha256。