← 返回 2026-08-12

DistilVDR:基于双学生蒸馏的紧凑端到端视觉文档检索器 DistilVDR: A Compact End-to-End Visual Document Retriever via Dual-Student Distillation

Zhuchenyang Liu, Ziyi Wang, Yao Zhang, Yu Xiao 📅 2026-08-11 👍 11 2026-08-17 18:30
单向量检索 多模态嵌入 检索增强生成 模型压缩 知识蒸馏 视觉文档检索

用单个8B教师同时蒸馏查询端与文档端,得到524M端到端单向量视觉文档检索器

前置知识

视觉文档检索(VDR)

给定文本查询,从文档页图像集合中检索相关页面的任务。与先做 OCR 再走文本检索的传统管线不同,VDR 把整页直接作为图像输入模型,避免 OCR 错误级联,并天然保留表格、插图和版面结构。代表系统是 ColPali 系列:用视觉语言模型把页面编码为嵌入向量,再用最近邻搜索排序。

本文的全部设计和评测都围绕 VDR 展开:输入不对称(文本查询 vs 图像文档)、动态切片处理高分辨率页面、ViDoRe 基准评测,都由这个任务定义。

单向量与多向量检索

单向量检索把每个文档压成一个固定维度向量(如 4096 维),查询与文档只需一次点积 $s(q,d)=q^\top d$,索引和打分都便宜;多向量检索(ColBERT 式晚交互)为每页保留上千个 token 级向量,打分用 MaxSim(每个查询 token 取与文档所有 token 的最大相似度再求和),质量更高但存储膨胀一个数量级、打分延迟高两个数量级。

本文的核心主张是:亚 10 亿参数规模下,蒸馏可以让学生单向量检索器在质量上压过多向量基线,同时保住单向量的全部部署优势,两条路线的取舍正是论文的动机。

知识蒸馏与逐点余弦对齐

知识蒸馏让小模型(学生)模仿大模型(教师)的输出。本文用的是几何蒸馏:教师为每个输入产出 L2 归一化的 4096 维嵌入,学生用余弦对齐损失 $\mathcal{L}=1-\langle f(x), T(x)\rangle$ 回归这个向量本身,而不是模仿标量相关性分数。教师目标预先计算并缓存到磁盘,训练时教师不再运行。

这是本文方法的根基:理解"目标是嵌入向量而非分数"才能理解为什么学生目标函数里不需要相关性标签和难负例,以及为什么教师只需跑一次、后续实验极其便宜。

动态切片(Dynamic Tiling)

处理高分辨率文档页的视觉编码策略:按页面长宽比从候选网格集合 $\mathcal{G}=\{(p,q): p,q\in\mathbb{Z}_{\ge1},\ n_{min}\le p\cdot q\le n_{max}\}$ 中选出最匹配的网格,把图像缩放到视觉编码器原生 tile 分辨率(本文 448×448)后切成不重叠子图,再附一张缩略图保留全局版面。每个 tile 单独编码后拼接 token 序列。

文档端编码器的第一步,tile 数上限 $T_{max}$ 直接区分了论文发布的 HiRes(6 tile)与 Fast(2 tile)两个变体,也是消融中影响最大的设计(去掉切片掉 5.12 平均 NDCG@5)。

Matryoshka 表示学习(MRE)

一种嵌入训练方式,使嵌入向量的任意前缀本身就是一个合法的、可用的低维嵌入:前 256 维、前 768 维都能直接用于检索,只是质量随维度降低而下降。许多现代嵌入模型(含本文教师 Qwen3-VL-Embedding-8B)都以这种方式训练。

论文消融中把教师目标截断到 768 维再重训文档编码器,索引缩小 5.3 倍但掉 3.19 平均分——因为有 MRE,这是"有原则的压缩"而非随机投影。

NDCG@5

排序质量指标:衡量算法返回的前 5 个结果与人工标注相关性的匹配程度,取归一化折扣累积增益,相关文档排得越靠前得分越高,完全正确的排序得 100 分。本文用 pytrec_eval 计算,报告各数据集上的平均值。

论文所有质量结论(61.74、59.98、领先基线 8.73 分等)都用这个指标表述,是读懂 Table 1、2、4、5 的前提。

研究动机

企业文档搜索、技术文档查询和视觉 RAG 都需要根据文本查询从语料库中检索相关文档页。视觉文档检索(VDR)把每页直接编码为图像,避免 OCR 错误级联并保留表格、插图和版面结构,但最强系统非常重:性能最好的检索器参数量在 20 亿到 80 亿之间(如单向量 Qwen3-VL-Embedding-8B、多向量 Tomoro-ColQwen3-8B),嵌入单个文档需要超过 16 GB 显存,索引百万文档语料要花费几十个 GPU 小时。已有小型化路线各有硬伤。第一条从零训练小型多向量编码器(colSmol-500M、ModernVBERT 等):多向量的按 token 存储使索引膨胀一个数量级(每页约 1000 个 128 维向量,百万文档约 256 GB),MaxSim 晚交互使打分延迟高出两个数量级;若在同架构内改回单向量,质量崩塌——BiModernVBERT 在 ViDoRe v1 上比 ColModernVBERT 低 17.6 NDCG@5、v2 上低 20.3。第二条只蒸馏查询端:NanoVDR 训练 70M DistilBERT 匹配 2B 教师的嵌入空间,但文档端仍是 2B 教师,索引百万文档仍需几十 GPU 小时,且每次部署都必须常驻教师。两条路线都没能产出端到端的紧凑单向量检索器。

本文的目标是本文的目标是构建一个端到端的紧凑单向量视觉文档检索器:查询端和文档端都是小模型,部署时彻底摆脱大模型。具体量化目标包括:(1) 总参数量压到 1B 以下(最终 524M);(2) 检索质量超过所有可复现的 sub-1B 基线并尽可能逼近 8B 教师;(3) 在每一个部署维度上同时占优——文档编码吞吐、查询延迟、峰值显存、索引体积、打分延迟,而不是用某一维换另一维;(4) 学生训练阶段不直接使用相关性标签、难负例采样或对比损失项,监督完全来自教师已训练好的嵌入空间。最终交付两个共享编码器与训练配方、只差文档端视觉 token 预算的变体:DistilVDR-HiRes(高分辨率敏感)与 DistilVDR-Fast(高吞吐),并统一复现 12 个 250M–8.8B 的公开检索器做同台评测。

与已有工作不同的是,本文的独特切入点是把非对称蒸馏做成双边(双学生)版本。文本检索中最接近的范式是重排序器教轻量双编码器,但它有两点根本不同:其一,那个范式的蒸馏目标是查询-文档相关性标量分数,而本文教师是通用嵌入模型,蒸馏目标是几何的——教师为图像和查询分别产出 4096 维嵌入向量,两个学生各自独立回归到缓存的教师目标上;其二,文本蒸馏的不对称是模型类别间的(cross-encoder vs bi-encoder),本文的不对称是跨模态的(文本查询 vs 图像文档),因此文档塔可以重(454M 含视觉编码器)、查询塔轻(70M 纯文本),精确匹配 VDR 的输入结构。与 NanoVDR 只蒸馏查询端不同,本文文档端也蒸馏,教师训练完成即丢弃;与从零训练单向量编码器不同,学生直接继承教师已用相关性监督学好的嵌入几何,因此不需要难负例和对比项。

核心方法

直觉上,VDR 的输入天然不对称——查询是一行文本,文档是一整页高分辨率图像——所以两个编码器本就该一大一小;而让小模型逼近大模型最省力的方式不是从零学检索,而是让小模型直接模仿大模型的嵌入几何。技术路线是:冻结 Qwen3-VL-Embedding-8B 作为教师,预先为 120 万文档图像和 149 万查询计算并缓存 4096 维 L2 归一化嵌入(共 99.5 H200 GPU 小时,此后教师不再运行)。文档学生 $f_d$(454M:InternViT-300M 视觉编码器 + ModernBERT-base 文本骨干约 150M + 投影与输出头 4M)和查询学生 $f_q$(70M DistilBERT-base)各自输出 4096 维向量,分别用余弦对齐损失 $\mathcal{L}_d = 1 - \langle f_d(d), T(d)\rangle$ 与 $\mathcal{L}_q = 1 - \langle f_q(\pi \circ q), T(\pi \circ q)\rangle$ 独立训练($\pi$ 是教师训练时用的指令前缀)。两个学生在训练中从不同时前向传播,文档端与查询端蒸馏完全解耦、可独立并行。部署时教师被丢弃,检索分数就是一次点积 $s(q,d) = q_S^\top d_S$,可用任何标准稠密检索引擎。

核心创新有三点。第一,双边余弦对齐:两个学生各自回归同一个教师的嵌入空间,监督信号是几何位置而非标量分数,因此学生目标函数里不需要相关性标签、负采样或对比项——这些信号已经"烧"进教师的嵌入空间里了,这与从零对比学习(需要难负例挖掘)和重排序蒸馏(需要查询-文档配对打分)都有本质区别。第二,与输入不对称匹配的非对称 encoder-only 学生:文档塔承载全部视觉能力(动态切片 + InternViT + ModernBERT 双向注意力对纯视觉 token 序列做上下文化,无文本输入),查询塔是 70M 纯文本 DistilBERT,两侧只在 4096 维教师空间中相会。第三,目标缓存带来的系统性红利:教师在任何学生训练之前只执行一次,之后所有训练、所有消融(包括重训变体)都复用缓存目标,教师规模扫描等延伸实验变得极其便宜。概括地说:从零路线让小模型"自己学会检索",查询端蒸馏路线"只把查询映射进教师空间",本文让检索的两端整体搬进教师空间,首次得到端到端的紧凑单向量 VDR。

方法步骤详情

文档编码器四步。第一步动态切片:按页面长宽比从候选网格选出最匹配的布局(平局偏向高分辨率),缩放到 448×448 原生 tile 分辨率后切成不重叠 tile,再附一张原生分辨率缩略图保留全局版面;HiRes 上限 6 tile + 缩略图,Fast 上限 2 tile + 缩略图,上限解决了两个失败模式——单张低分辨率图丢失小字、表格单元格和图注,单张高分辨率图超出文本骨干上下文窗口。第二步:每个 tile 经 InternViT-300M-448 编码为 1024 个 768 维 patch token(448 原生分辨率与切片规则匹配,无需 patch 重采样),所有 tile 的 token 拼接,HiRes 最长 $7\times1024=7168$。第三步:学习一个线性投影把视觉 token 映入 ModernBERT-base 的嵌入空间,ModernBERT(8192 token 上下文,恰好容纳 7168 不截断;旋转位置编码 + 局部/全局交替注意力)用双向注意力重编码这个纯视觉序列。第四步:均值池化 → 768→4096 线性投影 → L2 归一化。查询编码器三步:教师所用指令前缀 $\pi$ 拼接查询 → DistilBERT-base 编码并均值池化 → 768→4096 线性投影 + L2 归一化。训练配方:AdamW、one-cycle 调度(3% 预热),文档端峰值学习率 $1\times10^{-3}$ 训 3 轮、有效 batch 256,查询端 $5\times10^{-4}$ 训 15 轮、batch 512,各在 2×H200 上;文档混合数据 1.20M 图像(711K 基础 + 454K 多领域 + 31.7K 金融),感知哈希去重并与三个 ViDoRe 评测语料去重。

技术新颖性

新颖性在"系统"而非单点组件:动态切片(InternVL-V2 规则)、encoder-only 文档骨干(ModernVBERT 已证明比同规模因果解码器高 10.6 NDCG@5)、缓存式逐点余弦蒸馏(NanoVDR)都是已有技术,但组合方式是新的——首次把蒸馏同时应用到 VDR 的查询端和文档端,得到教师无关、可独立部署的端到端单向量检索器。方法论上它提出并检验了一个命题:在教师嵌入空间已被相关性监督训好的前提下,纯几何对齐(不加对比项)足以支撑强检索器——第 5.1 节显示在蒸馏检查点上做一轮对比精调,InfoNCE 加权 0.5–2.0 使平均 NDCG@5 下降 0.12–0.50,KL 损失持平(±0.14),支持纯余弦目标作为强默认。工程贡献上,作者用一套评测驱动和一套性能剖析流程统一复现了 12 个 250M–8.8B 的公开检索器(输入格式、去重、指标计算完全一致),这种受控对比在 VDR 文献中并不常见,本身即是社区资产。

Dual-student distillation architecture. The teacher encodes the image (left) and the query (right); each student is trained independently to match its teacher target.
Figure 1: Dual-student distillation architecture. The teacher encodes the image (left) and the query (right); each student is trained independently to match its teacher target.
Per-epoch train (blue) and validation (red) loss for the document students DistilVDR-HiRes (solid) and DistilVDR-Fast (dashed) on top, and the shared query student on bottom.
Figure 2: Per-epoch train (blue) and validation (red) loss for the document students DistilVDR-HiRes (solid) and DistilVDR-Fast (dashed) on top, and the shared query student on bottom.

实验结果

检索质量(Table 1):在完整 22 数据集 ViDoRe 套件(v1 英文 10 个、v2 多语言 4 个、v3 专业领域 8 个)上,DistilVDR-HiRes 平均 NDCG@5 达 61.74,保留 8B 教师(71.05)的 86.9%;Fast 达 59.98,保留 84.4%。对比最强 sub-1B 多向量基线 colSmol-500M(53.01),HiRes 领先 8.73、Fast 领先 6.97 分。最难的 v3(长专业报告、密集小字、复杂版面)上分化最大:HiRes 47.07 对 Fast 43.66,HiRes 领先次优 sub-1B 检索器 13.55 分(47.07 vs 33.52);v1/v2 上两变体差距不到 1.5 分。跨规模看,HiRes 以 4–6 倍更小的参数量超过 DSE-Qwen2(2.2B)1.03 分、超过 ColPali v1.3(2.9B)1.42 分,Fast 与两者差距都在 1 分内;但落后 Qwen3-VL-Embedding-2B,4–8B 多向量模型仍领先 HiRes 6.95–9.80 分,差距集中在 v2/v3。差距分解(Table 2):文档端换成学生损失 6.03 分(T×T vs T×S),查询端换成学生损失 4.69 分(vs S×T),两者之和不等于总差距 9.31,残差来自两端误差的交互;教师本身是 71.05 的单向量检索器,与 4.4B 多向量 Tomoro-ColQwen3(71.01)持平、高于 ColNomic-7B(68.69),说明瓶颈是单向量格式下的容量而非格式本身;仅把输出从 4096 维缩到 768 维就在 v3 上掉 4.77 分。效率(Table 3):Fast 文档吞吐 99.04 docs/s、峰值显存仅 2.10 GB,比任何规模的多向量基线快一个数量级,约为 8B 教师的 18 倍;HiRes 36.82 docs/s,仍是教师的 7 倍;查询编码 3.4 ms,快于所有被测系统。索引每百万文档 16.4 GB,而 sub-1B 多向量基线为 256 GB、4–8B 基线为 819 GB;对 1 万候选打分 9.6 ms,多向量需 1158–3300 ms——端到端多向量部署在 sub-1B 规模约贵 16 倍存储、100 倍打分延迟。消融(Table 4):去掉切片掉 5.12 平均分;质量随数据量单调上升、75% 后饱和,满量数据比四分之一数据高约 5 分;768 维目标使索引缩 5.3 倍(16.4→3.07 GB)但掉 3.19 平均分;查询骨干换 ModernBERT-base +1.04 分但参数 2.2 倍、延迟 5.1 倍。对比消融(Table 5):从余弦蒸馏检查点做一轮联合对比精调,任何权重的 InfoNCE 或 KL 都没有增益。

Retrieval quality (NDCG@5) on ViDoRe v1, v2 and v3. "Type" is single vector or multi-vector with MaxSim.
Table 1: Retrieval quality (NDCG@5) on ViDoRe v1, v2 and v3. "Type" is single vector or multi-vector with MaxSim.
Gap decomposition (NDCG@5) for DistilVDR-HiRes. T = teacher, S = student.
Table 2: Gap decomposition (NDCG@5) for DistilVDR-HiRes. T = teacher, S = student.
Deployment efficiency on a single H200 GPU at fixed batch size B = 8 in bf16.
Table 3: Deployment efficiency on a single H200 GPU at fixed batch size B = 8 in bf16.
Document- and query-encoder ablations. Blocks (a) and (b) are end-to-end student×student; block (c) is doc-side isolation; block (d) is query-side isolation.
Table 4: Document- and query-encoder ablations. Blocks (a) and (b) are end-to-end student×student; block (c) is doc-side isolation; block (d) is query-side isolation.
Contrastive-supervision ablation under Eq. 3.
Table 5: Contrastive-supervision ablation under Eq. 3.
All 22 ViDoRe evaluation datasets.
Table 6: All 22 ViDoRe evaluation datasets.
Training data composition.
Table 7: Training data composition.
Training recipe under the cosine alignment objective (Eq. 1–2).
Table 8: Training recipe under the cosine alignment objective (Eq. 1–2).
查看结构化数据
任务指标本文基线提升
ViDoRe v1+v2+v3 平均检索质量 NDCG@5 61.74(HiRes)/ 59.98(Fast) colSmol-500M 53.01(最强 sub-1B 基线);8B 教师 71.05 HiRes +8.73、Fast +6.97;达到教师平均分的 86.9% / 84.4%
ViDoRe v3(高分辨率敏感的专业报告) NDCG@5 47.07(HiRes) colSmol-500M 33.52(次优 sub-1B) +13.55
对比 2–3B 规模模型 ViDoRe 平均 NDCG@5 61.74(524M) DSE-Qwen2(2.2B)60.71;ColPali v1.3(2.9B)60.32 +1.03 / +1.42,参数量小 4–6 倍
文档编码吞吐 docs/sec(单张 H200,B=8,bf16) 99.04(Fast)/ 36.82(HiRes) colSmol-500M 2.82;8B 教师 5.40 Fast 约为 colSmol-500M 的 35 倍、8B 教师的 18 倍
索引存储 GB / 百万文档 16.4(单个 4096 维 float32 向量/页) sub-1B 多向量 256 GB;4–8B 多向量 819 GB 比最强 sub-1B 多向量基线小 15.6 倍
1 万候选打分延迟 ms(单线程 CPU) 9.6(单次点积) 多向量基线 1158–3300 ms(MaxSim) 约 120–340 倍
查询编码延迟 ms(B=1,含分词) 3.4(70M DistilBERT) 所有被测系统(2.2B DSE-Qwen2 为 167.4,7B ColNomic 为 542.6) 快于所有被剖析系统

局限与改进

作者承认的局限:所有对比都是"已发布系统之间"而非"训练配方之间"的对比,没有跑"同 524M 架构在相同数据与算力下从零做对比学习"这一关键对照实验,因此领先幅度不能归因于蒸馏本身;只用了一个教师(8B),无法得知弱教师损多少、强教师加多少(好在目标已缓存,这个扫描是廉价的后续实验);两个变体仍落后最强 4–8B 多向量参考 7–10 分(v3 上 47.07/43.66 对 57.57–59.00),且实验同时变动打分机制与模型规模,无法在顶端分离晚交互与容量的贡献;全部质量数字来自 ViDoRe 的 22 个数据集,缺少企业自有版面、扫描件或 OCR 退化页面的验证。方法论上:学生只能复现冻结教师的嵌入,教师的系统性弱点会传播,目标函数不允许学生在其负责的一侧超过教师(Table 2 中没有任何单侧替换超过 T×T 的 71.05);切片规则只适应长宽比不适应内容,密排小字页与单图页获得同样的 token 预算;查询塔纯文本、仅覆盖英语加五种拉丁字母语言(经 MarianMT 翻译获得),图像条件查询和中、日、阿文字超出范围;存储为未压缩 4096 维 float32,报告的足迹是上界。我的补充:16.4 GB/百万文档虽比多向量小 15.6 倍,但比 DSE-Qwen2(6.1 GB)和 Qwen3-VL-Embedding-2B(8.2 GB)大 2–3 倍,单向量路线在存储上并非无条件占优,需配合量化才公平。

独立分析的弱点

第一,教师天花板:质量上限被 Qwen3-VL-Embedding-8B 锁死,Table 2 显示文档端学生占 9.31 分差距中的 6.03,说明 524M 学生尚未在 4096 维空间中"装下"教师几何,且没有任何机制允许超越教师。改进方向:改用多向量教师(如 Tomoro-ColQwen3-8B 的 per-token 嵌入)做 token 级或池化级蒸馏,或引入 cross-encoder 相关性分数作为辅助信号,直接抬高上限。第二,高维依赖与存储:输出砍到 768 维就在 v3 掉 4.77 分,信息高度集中于高维向量的少数方向;未压缩 float32 每百万文档 16.4 GB 偏大。改进方向:叠加标量量化、乘积量化或二值哈希,绘制质量-存储 Pareto 曲线(作者也承认这些正交但未测)。第三,内容无关的切片预算:$T_{max}$ 在发布时固定,HiRes/Fast 只是同一权衡上的两个采样点。改进方向:用廉价的页面复杂度估计(文本密度、字号、图表占比)预测每页 token 预算,把 token 花在需要的地方。第四,查询端能力缺失:纯文本、限于英语加五种拉丁字母语言,图像条件查询与中日阿文字不可用。改进方向:接入多语言文本教师或在查询侧加轻量视觉分支。第五,"蒸馏优于从零对比学习"只有间接证据(NanoVDR 的损失消融与本文 5.1 节的精调消融),缺少直接对照实验,结论强度受限。

未来方向

作者明确提出的方向:(1) 从更丰富的信号蒸馏——cross-encoder 相关性分数或多向量教师,抬高学生的天花板;(2) 教师规模与家族扫描——因为目标缓存一次后学生训练不再运行教师,作者称这是"廉价的后续实验",可量化弱教师损多少、强教师加多少;(3) 蒸馏期引入显式查询-文档交互的联合方案——当前两学生独立训练虽便于并行,但浪费了教师隐式携带的查询流形与文档流形之间的跨模态耦合;(4) 内容自适应 token 预算——由页面复杂度估计预测每页切片数。基于本文成果可延伸的:在 16.4 GB/百万文档的索引上做量化与二值化并报告完整质量-存储前沿;把 HiRes/Fast 的离散二选一扩展为连续可调预算加查询时路由;将双学生非对称蒸馏范式推广到其他不对称检索场景(如帧级视频检索、代码文件检索);在企业内部语料(扫描件、自有版面、生产查询分布)上验证并针对性增补训练数据,论文明确指出部署成本测量可直接迁移而质量数字未必;此外缓存目标机制天然支持增量蒸馏——教师升级后只需重新预计算目标即可全量重训学生。

复现评估

代码开源在 https://github.com/Ryenhails/NanoVDR。训练数据全部为公开、宽松许可来源:VisRAG 合成/域内集、ColPali 训练集、vdr-multilingual、Racineai 的 14 个领域集合(racineai/VDR_MEGA_2)、Sujet-Finance 等,合计 120 万文档图像 + 149 万查询,论文给出感知哈希去重及对 ViDoRe 评测集去重的完整流程和逐源明细(Table 7)。计算成本:教师目标预计算 99.5 H200 GPU 小时(一次性);文档学生 3 轮、查询学生 15 轮,各在 2×H200 上,完整超参在 Table 8(AdamW、one-cycle、有效 batch 256/512、峰值学习率 $1\times10^{-3}$/$5\times10^{-4}$);评测在单张 H200 上以统一驱动复现 12 个基线,附录 G 详细记录了每个基线的注意后端、精度等偏差。对没有 H200 的团队,主要瓶颈是 8B 教师对 120 万图像的推理(可用 A100 分片或换更小教师),学生本身的训练量适中;风险点是 baselines 环境搭建(12 个异构模型的官方推理路径)。总体复现难度中等:数据、代码、超参、协议齐备,透明度高(连保守注意后端的退化数字都给出),主要成本在教师推理与基线复现。