DocPilot:长文档问答别硬灌上下文——让小模型学会「编排」一场跨页取证

0 阅读1分钟

做文档问答的人大概都遇过这种场面:一份 47 页的财报,问题是「2023 年哪个州的清洁能源份额最高、单位成本降了多少」,答案散落在地图页、数据表和柱状图三个角落。直接把整个 PDF 塞给视觉语言模型,要么塞不下,要么塞下了它也「读了中间忘中间」。做 Agent 编排的人则有另一层头疼:文档 Agent 是有了,但流程基本写死,动作粒度不是粗得没法教,就是细得没法学。港科大(广州)团队 发表在 arXiv 的 DocPilot,把这两个问题拧在了一起解。

💡 一句话总结:DocPilot 把「读长文档」拆成六个可监督的细粒度动作,边翻页、边取证、边验算,再用「先学单兵、再学编队」的课程训练教会 4B 小模型这套编排——DocPilot-4B 在 DocBench 上拿到 80.3 分,距 Gemini-3.1-Pro 的 80.6 只差 0.3 分。

📄 论文:arXiv 2610.21327 | 💻 代码:HKUSTDial/DocPilot

痛点:不是模型不聪明,是「一炮到底」不科学

先把问题钉牢。长视觉文档问答(DocVQA,对几十页图文表混排的 PDF 提问)难在证据稀疏且分散:跨页、跨模态,常常要一段文字配一张图表才能拼出完整答案。

直接上长上下文的视觉语言模型(VLM,能同时看图和文字的模型)行不行?论文给了三条否决理由:计算成本随页数暴涨、上下文窗口有硬上限、还有「lost-in-the-middle」效应——证据埋在几百页中间时模型注意不到。实测很扎心:GPT-4o 裸考平均 47.5 页的 MMLongBench-Doc 只有 42.8 分,比人类专家的 65.8 低了二十多分。

于是「文档 Agent」登场:先检索、再翻页、逐步作答。但论文指出两条短板——一部分工作把流程写死(固定先检索后阅读的管线),遇到需要临场改策略的题就僵住;另一部分动作粒度太粗,比如 DocDancer 只有 Search 和 Read 两个动作,读表格、算数字、放大看图全被塞进一个 Read 里,模型内部怎么完成的没人知道,也没法教。

这就引出一个两难:动作粗,好编排但学不出能力;动作细,能力可监督但编排又太难学。小模型两头不讨好——模仿了动作序列,却没掌握执行动作的真本事。DocPilot 的目标就是把这个两难拆掉。

🛠️ 思路:六个动作、一个闭环、一套课程

第一步,把文档变成可交互的环境。每页准备三份表示:原始页面图、OCR(把图片里的文字表格识别成结构化文本)解析出的结构化表示、一张 512×512 的页面缩略图;整套文档再拼一张缩略图总览。这样 agent 既能眯着眼看全局,也能凑近了看细节。

在这个环境里,Agent(基于经典 ReAct 框架,即「推理一步、行动一步」的循环范式)有六个动作可选,粒度刻意做细:

  • <Navigate>:扫缩略图,定位可能相关的页,粗定位;
  • <Extract>:从选中的页抽取文字、表格、图注等结构化证据,细取证;
  • <Focus>:对局部区域裁剪、放大、隔离子图,做精细视检;
  • <Solve>:生成并执行代码,做聚合、比较等多步数值计算;
  • <Answer>:给出候选答案;
  • <Analyze>:验答案,判断证据是否充分支撑结论。

前四个是干活,第五个是交卷,第六个是质检。关键在闭环:Analyze 验不通过,就把「还缺什么证据」的反馈写回状态,Agent 带着反馈继续搜、继续算,直到答案有据可依。这就是论文说的「取证、推理、验证、修正」循环——而不是一次前向赌运气。

DocPilot 总览:左半是六个动作组成的三段能力(证据寻取/多模态理解/迭代修正),交互状态等于证据加历史;右半是课程训练如何把能力教给小模型,底部是文档环境的三层表示

第二步解决「教会小模型」。尴尬的是,文档问答数据基本只有问句和标准答案,中间的推理过程和动作序列全靠脑补。DocPilot 的做法是自己造数据:让强教师模型在证据与答案之间蒸馏出「单能力推理轨迹」(怎么翻页、怎么抽数、怎么写代码),再让教师在真实环境里完整跑一遍解题过程、产出「多能力交互轨迹」,最后只保留答对、交互合法、证据扎实的样本,凑成 DocAgent-Instruct-40K 数据集(35K 单能力 + 5K 多能力)。

训练走课程制:第一阶段用单能力轨迹做监督微调(SFT,即拿标准轨迹逐 token 纠正模型),把 Navigate、Extract、Solve、Answer 各自学扎实;第二阶段才上多能力交互轨迹学编排,且损失只对模型自己生成的 token 计算,环境返回的观察只作条件、不当预测目标——免得模型学着去背环境。

课程训练:35K 推理轨迹加 5K 交互轨迹,先单能力微调、再多能力编排训练,由易到难,最终得到 DocPilot-4B

为什么执着于先拆后合?消融给出了答案:直接只做多能力 SFT,MMLongBench-Doc 全量 56.8 分,课程制 59.1 分,差 2.3 分;可答题的差距拉到 4.0 分。能力没学扎实就练编排,模型只会模仿动作,不会随机应变。

📈 效果:4B 追平巨兽,加分项在「知道自己不知道」

先看总成绩单。挂上四个前沿骨干,DocPilot 在 MMLongBench-Doc 上分别涨 10.1、14.7、10.8、13.4 分(依次为 Qwen3.5-397B、Gemini-2.5-Pro、Gemini-3.1-Pro、GPT-5.4),DocBench 涨 3.7 到 10.0 分不等,金融基准 FinRAGBench-V 最高涨 18.7 分。

同一骨干下对比同类文档 Agent 也没虚:Gemini-2.5-Pro 加持的 DocPilot 在 MMLongBench-Doc 拿 72.8,压过 DocLens 的 67.6;DocBench 拿 84.1,超过 DocDancer 的 79.9。

更有记忆点的是小模型那条线。DocPilot-4B 相比裸 Qwen3.5-4B 涨了 4.2(MMLongBench-Doc)、7.5(FinRAGBench-V)、11.0(DocBench)分;80.3 的 DocBench 成绩几乎追平 Gemini-3.1-Pro 的 80.6,且三个基准全线超过裸跑的 Gemini-2.5-Pro。

左:参数量-精度散点,DocPilot-4B(59.1)越过裸 Gemini-2.5-Pro(58.1)等更大的模型;右:Gemini-2.5-Pro 骨干下各证据类型雷达图,Overall +14.7、Text +24.8、Table +22.6,判读时注意 Unanswerable 是最短的边

拆开看分项,涨分集中在视觉落地的地方:Gemini-2.5-Pro 骨干下图表、表格、图三类分别涨 14.9、22.6、16.7 分。最扎眼的是「不可答题」(UNA,文档里根本没有答案的题):GPT-5.4 裸模型只有 31.8 分,DocPilot 拉到 75.0——Agent 不再硬编一个答案,而是学会说「这文档里没有」。

消融把功劳簿翻得更细(GPT-5.4 骨干,完整版 73.5 分):去掉 Focus,图表类掉 7.2、图类掉 11.9,放大看局部对视觉题是刚需;去掉 Solve,表格类掉 4.6,算数还得靠代码;最狠的是去掉 Analyze,总分从 73.5 崩到 64.9,几乎和「只导航+作答」的裸奔基线 64.5 打平。判读方向很明确:工具箱的价值要靠质检环节激活,没有验证回搜,再多工具也是摆设。

工具消融:去掉 Analyze 掉到 64.9,与只导航加作答的基线 64.5 几乎持平;去掉 Focus 后图表与图类受损最重

证据定位的质量也硬。MMLongBench-Doc 页级定位上,DocPilot(Gemini-2.5-Pro 骨干)平均只翻 3.0 页,精度 73.2、召回 91.8;对比 DocLens 的 3.5 页、精度 55.1、召回 97.3——用更少的翻页换来高得多的翻准率。元素级定位(FinRAGBench-V)上,精度、召回、F1 比 DocLens 分别高 6.8、0.8、4.5 分。

元素级证据定位:DocPilot 精确率 47.2 对 DocLens 40.4,F1 50.5 对 46.0,召回基本持平

行为分析还有个有趣的观察:不同骨干长出了不同「性格」。Gemini-3.1-Pro 每题平均只用 7.9 个动作,Qwen3.7-397B 要 11.4 个;GPT-5.4 几乎不写代码(Solve 每题仅 0.1 次),偏好用 Focus 反复看图。同一个框架,解题风格并不统一——编排是学出来的,不是模板里写死的。

怎么用:把「取证闭环」搬进自己的系统

回到论文的招牌案例:问「哪个州 2023 年清洁能源份额最高、单位成本降幅是否达标」。DocPilot 的解法是:Navigate 翻缩略图锁定地图页 → Focus 放大地图认出领先州 → Extract 抽出历年装机成本 → Solve 写代码算降幅并核对效率标准 → Answer 给答案 → Analyze 逐条核对后放行。整个过程没有一步是预写死的,全是模型按中间状态现选的。

对要做文档智能的团队,这篇工作至少有三处可以直接搬:

  • 动作设计:粗定位(低 token 的缩略图)与细取证(OCR 结构化内容)分离,视觉检查与数值计算各自专职,再加一个显式验证动作产出结构化反馈——这套骨架与具体模型无关;
  • 训练配方:轨迹宁可过滤不可将就,只留「答对+交互合法+证据扎实」的样本;损失只监督 agent 自己的 token;LoRA(一种只训练小适配器、不动原模型权重的省显存微调法,r=16)配合开源框架 ms-swift,复现门槛不高;
  • 评测口径:把「不可答题」单独设指标,考察系统敢不敢说「不知道」——这在金融、法律场景比高分更值钱。

一句话收束:与其在 prompt 里手写流程,不如把流程变成可训练的轨迹。

🧊 泼冷水:编排不是免费的

先泼最冷的一盆:消融显示去掉 Analyze 后工具再多也几乎不涨分(64.9 对 64.5),也就是说 DocPilot 的增益高度依赖「验证-回搜」这个编排能力——而这套能力是教师模型蒸馏出来的。教师教多少,学生学多少,天花板可能被教师锁死;能否靠自我进化越过教师,论文自己只写进了 future work。这句判断是我的推测,论文没有做教师质量上限的消融。

其次是成本。多步交互意味着每题 8 到 11 个动作、多次模型调用,延迟和 token 开销远高于一次前向。论文只强调缩略图省视觉 token,没有给出端到端的推理成本对比——对时延敏感的线上场景,这笔账要自己算。

小模型的故事也没那么圆满:DocPilot-4B 在布局类(LAY)问题上反而比裸 Qwen3.5-4B 低了 9.8 分;在多文档基准 MADQA 上,GPT-5.4 版能到 86.5 分,4B 版只有 60.0——「小模型学会编排」目前主要在单文档场景成立。另外课程训练有代价:相比直接多能力 SFT,不可答题低了 4.4 分,先学能力再学编排会让模型更「敢答」,过度作答的倾向没有被完全治好。

评测口径也留个心眼:FinRAGBench-V 和 DocBench 用 GPT-4o 当裁判(LLM-as-a-judge,用另一个大模型打分),裁判本身的偏好没有讨论;MADQA 只有 200 题开发集,且直接把相关文档喂给系统(oracle 设定,省去检索环节),跨页题 59.5 的成绩多少说明跨页取证依然远未解决。

💡 理性看待

DocPilot 最值得记的未必是「4B 打平巨兽」这个分数,而是两个设计判断:其一,把「读文档」显式拆成可监督的细粒度动作,让能力可以单独训练;其二,把验证做成显式的回搜触发器,让「知道自己不知道」变成可优化的目标。

从更长的镜头看,文档 Agent 正在从「prompt 里写流程」走向「课程化训练出流程」:DocDancer 学 Search/Read,DocPilot 学六个动作的编排,路数一脉相承。当编排本身成为可训练目标,小模型在垂直文档场景追平通用巨兽,可能就不是新闻而是常态。至于那一天多久到来——先让 Agent 学会把「文档里没有答案」这句话说出口吧。