Files
ely-eye/bench/ANNOTATION_SCHEMA.md
ZacharyZhang-NY 77219c930b Add third-party benchmark suite frozen at 50,789 sources / 5,308 queries
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
2026-10-06 12:05:43 -04:00

3.2 KiB
Raw Permalink Blame History

标注集 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. 硬约束

  1. gold 必须来自第三方人工标注,不得由被测系统或本仓库生成。每个来源在 bench/corpus_sources.py 里登记 annotation_source。
  2. gold 表达为「源 + 区域」,不是 atom id。atom id 依赖切分策略,而切分策略正是 P0 要改的东西;runner 在运行时把区域解析成当时重叠的 atom id 集合。这样换切分不用重标。
  3. unanswerable=true 的条目 gold 必须为空数组,且计入误召回率。目标占比 ≥15%。
  4. as_of 是查询发生的时间点;记忆条目的 observed_at 晚于 as_of 时不得作为 gold 命中(时间正确性指标)。
  5. scope.holder 决定可见性;跨 holder 泄漏即判错(transactive 指标)。
  6. split 冻结:test 只在最终验收用,调参期间不得读取。
  7. origin.revision 必须能在 bench/corpus/manifest.jsonl 中找到对应文件,否则该条目标本失效。

3. 区域表达

modality region
pdf {"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。