今天做 RAG 的人几乎都在用「先检索、再回答」的范式,但很少有人追问一个问题:这个问题是真实用户提出来的吗?2016 年 Microsoft 发布的 MS MARCO,用 Bing 的真实搜索日志把整个机器阅读理解的数据集范式推翻重造了一遍。
- 关联论文:1611.09268
为什么重要:论文指出,既有数据集(NewsQA、DuReader、NarrativeQA、SearchQA、RACE、ARC、SQuAD)有一个共同的结构性缺陷:问题都是标注员看着一段干净文本反向编出来的("questions are usually generated by crowd workers based on provided text spans")。这意味着模型学到的是「读完一段文本然后回答关于它的问题」,而不是「如何回应一个真实的信息需求」。真实搜索 query 常常复杂、模糊、全小写、还带拼写错误——这类"噪声"在既有数据集里完全缺席。论文以 ImageNet 类比:150 万样本催生了超越人类的分类器,而当时最大的 SQuAD 只有 10.7 万问答对、536 篇文章。
核心机制:MS MARCO 的流水线是 Bing 日志 → ML 分类器过滤 navigational query → 1,010,916 个问题 → Bing 网页索引检索出 3,563,535 篇文档 → 切分成 8,841,823 个段落(每题约 10 段)→ 人工标注员阅读段落撰写答案。最关键的一条约束是:答案必须严格来自给定段落("synthesize a natural language answer with the correct information extracted strictly from the passages provided")。这条约束把「检索」和「生成」的边界切开了。
三个难度递增的任务不是硬造出来的,而是从真实标注流程里自然长出来的:Novice 任务先判断问题可不可答(不可答输出 "No Answer Present"),再抽取综合答案;Intermediate 任务要求答案是 well-formed 的——标准是 "if the answer is read-aloud then it should make sense even without the context of the question and retrieved passages",由第二位标注员 review-and-rewrite;Passage re-ranking 任务给 1000 个 BM25 候选段落排序输出,而标注员标出的 is_selected 天然就是排序监督信号。
证据边界:Table 4 里最该看的一行不是模型,是 Best Passage = 0.351——这是「假设你已完美检索到含答案那一段」的 oracle 上限,比实际 Memory Network(0.119)高近 3 倍,比 Vanilla Seq2Seq(0.089)高近 4 倍,说明这个数据集上检索的杠杆远大于阅读理解本身。v2.1 的人类基线是 ROUGE-L 0.737(Novice)/ 0.630(Intermediate),同表 BiDaF 只有 0.150 / 0.170,人机差距近 5 倍。论文也记录了时间线:v1.1 的人类基线约 15 个月后被机器学习方法超越。局限很实在:没有给出 inter-annotator agreement 数字;is_selected 标注不保证穷尽(论文自称 "should be considered as incomplete"),拿它训 reranker 时负例里混着真答案;约 30 万篇文档已从 Bing 索引下线无法回取,其余正文可能已改写,意味着 passage 正文快照无法由第三方完整重建;每题只有 ~10 段,与真实搜索结果页规模不匹配;English only;182,669 是"完全人工重写生成的答案"子集,全部唯一答案是 1,026,758,别把两者混为一谈。
工程局限:① 把"检索不到就说检索不到"做成独立可评测的 KPI(覆盖率 / 正确拒答率 / 误拒率分开看),别混在整体准确率里——v1.1 的 BiDaF 0.268 掉到 v2.1 Novice 0.150,正是因为它无法判断问题何时不可答;② 上线前先算检索 oracle 上限做诊断:oracle 与实测之差即"检索债",差值大先投召回(切分、召回率、rerank),差值小再投生成;③ 单一参考的 ROUGE-L 会系统性低估"换个说法就答对"的模型,评测集每题保留 ≥2 条独立参考答案,论文的 phrasing-aware 框架(pa-BLEU,用不同标注员各自写的参考答案是)就是为此而生;④ 闭式抽取架构撞不到 well-formed 的天花板——模型只会用段落里出现过的词,而通顺答案需要段落之外的通用连接词;⑤ 论文自己给的对照实验很说明问题:同样的 AS Reader 和 ReasoNet 模型,从 CNN 换到 MS MARCO 就掉 14–16 个百分点(55.0 vs 69.5、58.9 vs 74.7)——换数据集比换模型影响更大;⑥ 自建同类数据集必须把文档正文快照与 URL 一起存档,否则三年后无法复现基线。
还有一条方法论值得单独拎出来:人类基线的构造方式本身就很聪明——选出 5 位在审计题上表现最好的标注员,随机采样 1,427 道题让他们重新作答,再把这些新答案与原 ground truth 比对,取 ROUGE-L 最高的那一版作候选答案。这不是一个人写的答案,而是"五人里最贴近参考的那次",基线本身就是按评测指标优化出来的。
标题变体
- 别再让标注员编题了:MS MARCO 用 100 万条真实搜索日志改写了整个阅读理解
- 一个 ROUGE-L 0.351 的数字,和它透露的那个更重要的事实:这个数据集瓶颈根本不在模型
- 论文自己承认标注一致性没量化——MS MARCO 这份 2016 年的作业,为什么今天还没过时
小红书卡片文案
几乎所有机器阅读理解数据集的问题,都是标注员看着一段干净文本反着编出来的——所以模型学的其实是"读完这段回答关于它的问题",不是"回应一个真实的信息需求"。MS MARCO 换了个源:直接从 Bing 真实搜索日志里取 101 万个 query,因此带来了真实的模糊、拼写错误和口语化。规模上,101 万问题、880 万段落、356 万网页,每题约 10 段,答案是人写的完整句子,且必须严格来自给定段落。最值得抄的一个数字是 Best Passage = 0.351——那是"检索完美命中"的上限,比实际模型高近 3 倍,说明瓶颈在检索不在理解。也提醒一句:它没给 inter-annotator agreement,is_selected 标注不穷尽,约 30 万篇文档已无法回取。今天做 RAG,你自己的业务日志就是最好的评测集来源。