每个长文档链路都从切分开始。而切分,就是文档不再是一份文档、变成一堆恰好共用一个文件名的样本的地方。
然后模型被拿去考那些跨越切口的问题,于是长上下文的表现常常比训练数据暗示的差。
切分把难点删掉了
几百个 token 的窗口,几乎天然就具备局部连贯性。它不具备的是:指代对象在三节之前的那个代词、十页之前引入的那张表、脚注里写的那条例外。
而这些,才是「会读的模型」和「会猜下一句的模型」之间的区别。
一条长文档记录必须保住什么
- 文档编号,跨版本稳定
- 章节路径,让一段文字知道自己站在哪
- 位置,用原文里的位置,不是窗口里的
- 段内的引用,解析到它指向的那一节
- 问题,对着整份文档来写
第四个字段,才是一堆窗口变成「能学结构的数据」的地方。
模型真正栽在哪
三种失败反复出现:从「提到这个话题的那一节」作答,而不是「决定这个话题的那一节」;漏掉一个覆盖整页的否定;把汇总表当成数字的出处,而正文说的相反。
这三种都要求模型同时握住相隔很远的两处,而任何窗口都教不了这件事。
从文档出题,而不是从窗口出题
读完整份东西再写任务,记下「一个认真读的人必须把哪两处连起来」。如果这个连接需要跨节,那就是一道题。
这些语料由 Zovda 通过 Datuva 生产,每段都保留文档编号和章节路径,一道题能追回它依赖的那几页。题库与推理语料写了这类记录的结构。
告诉我们你的模型要读哪些文档,我们会在 1 个工作日内回复。
