Hugging Face发布NeoMME多模态编码器

Hugging Face推出NeoMME系列多语言多模态编码器,包含260M和800M两种规格。该模型采用单一双向Transformer同时处理文本与图像,无需预训练视觉塔或因果解码器。其衍生的NeoMME-Retriever在视觉文档检索任务中表现优异,显著降低存储占用并提升吞吐量。

TL;DR

Hugging Face 发布 NeoMME 系列多语言多模态编码器,包含 260M 和 800M 两种规格。与主流生成式视觉语言模型不同,NeoMME 不依赖单独的预训练视觉塔或因果语言模型,而是用一个双向 Transformer 同时处理文本 token 和原始图像,整个模型完全从头训练。

基于 ColPali 的页面图像方法,团队将 NeoMME 微调为视觉文档检索模型 NeoMME-Retriever。该模型单次前向传播即可同时输出稠密嵌入和迟交互(late interaction)嵌入,两个规格均处于 ViDoRe v3 基准 nDCG@10 与模型规模的帕累托前沿。在 NVIDIA L40S GPU、2048×2048 图像输入条件下,260M 模型每秒可编码约 51 页,吞吐量为 ColModernVBERT 的近两倍。通过层次化 token 聚合与非对称量化,迟交互索引的存储占用从每页约 1.5MB 降至 6kB(缩小 255 倍),同时保留超过 95% 的基线 nDCG@10。

迟交互索引存储占用缩小255倍

NeoMME 已在 Hugging Face Transformers 库中提供,全部模型检查点以 Apache 2.0 许可证发布。

为什么需要新的多模态编码器

近期的视觉文档检索器大多由预训练的生成式视觉语言模型改造而来:独立的视觉编码器提取特征,投影层将其映射到语言模型输入空间,再由因果解码器处理图文混合表示。但检索、分类和标注等任务本身并不需要自回归生成文本,因果解码器及其参数与计算开销对这些任务而言是冗余的。

ModernBERT 等双向编码器已引入高效的架构与训练改进。在视觉文档检索方向,ModernVBERT 采用了双向 ModernBERT 风格的文本编码器,但仍保留独立的预训练 SigLIP2 视觉塔。NeoMME 的目标是更进一步,直接设计并训练一个统一的多模态编码器。

NeoMME(发音近"nee-oh-me",IPA /ˈniː.oʊ.mi/)是一个多语言、多模态基础编码器,使用单一 Transformer 编码器为输入文本和/或图像生成向量表示。它不基于任何现有的预训练视觉塔、文本编码器或文本解码器。

与双塔和 VLM 编码器不同,NeoMME 在一个双向 Transformer 中同时处理图像 patch 和文本 token,无需预训练视觉塔,也无需预训练文本编码器或解码器。

由于图像和文本走同一条计算路径,NeoMME 的预训练、微调、并行化部署和跨模态服务都更容易实现。

NeoMME 编码器架构

统一的图文 Transformer

NeoMME 提供 260M 和 800M 两种规格,二者共享同一架构设计:

  • 原生多模态输入:文本输入使用分解式 token 嵌入,图像被切分为不重叠的 32×32 patch,经小型 MLP 投影后与文本一同送入同一个 Transformer 编码器。
  • 动态图像分辨率:图像保持原始纵横比和尺寸。这使模型可以在高分辨率、信息密集的文档页面上分配更多 token,而在较小的图像上使用更少 token。
  • 长双向上下文:两种模型的上下文长度均为 16,384 token(最多可容纳两个标准 3840×2160 4K UHD 图像)。大部分层使用对称滑动窗口注意力,每第六层及最后一层使用全局注意力。
  • 现代编码器技术栈:NeoMME 集成了分组查询注意力(GQA)、QK 归一化、闭式注意力(closed-form attention)、2D RoPE 位置编码和平方 ReLU MLP 等近年编码器改进。
  • 多语言文本能力:团队从头训练了拥有 131k token 词表的 BPE 分词器。
NeoMME 编码器栈中滑动窗口注意力层与全局注意力层交替排布。

通过遮蔽文本从图像中学习

NeoMME 从头开始训练,采用离散掩码扩散文本去噪(discrete masked diffusion text denoising)目标。对于纯文本样本,每个样本的遮蔽率在 0 到 1 之间随机采样,每个文本 token 按该概率独立被遮蔽。

多模态样本的遮蔽率则在 0.3 到 1 之间。当 NeoMME 重建被遮蔽的文本时,图像 patch 保持可见。低遮蔽率下,模型通常能仅凭上下文文本恢复缺失单词——例如即使不看图,"[MASK] sat on the mat" 也大概率补全为 "The"。但高遮蔽率迫使模型学会借助图像证据来补全描述,此时可见文本 token 提供的线索极为有限。

提高文本遮蔽率可以消除"纯语言捷径",促使 NeoMME 利用可见的图像信息。

预训练数据涵盖多语言文本、代码、数学、自然图像和文档图像。每个模型处理约 5240 亿个打包输入 token,其中约 2900 亿来自纯文本样本。相比 ModernBERT 高达 2 万亿 token 的文本训练预算,这一文本规模相对较小,因此团队选择了 NorMuon 优化器以提升训练数据效率。

NeoMME-Retriever

为对骨干模型进行有意义的下游评估,团队沿用 ColPali 提出的页面图像方法,将 NeoMME 微调为视觉文档检索模型。传统文本检索依赖文本块的提取,而 NeoMME-Retriever 直接对文档页面截图进行排序,绕过了 PDF 文本提取所需的 OCR 预处理步骤。将页面视为图像,可以保留布局、图表、表格、字体类型与字号等视觉线索,这些是再精确的 OCR 模型也无法捕获的信息。

双头设计:稠密检索与迟交互检索

NeoMME-Retriever 复用 NeoMME 骨干,在其之上联合训练两个检索头:

  • 稠密头(Dense head):将骨干的隐藏状态取平均池化并归一化,得到一个向量。稠密嵌入目前应用最广,其表示紧凑,可天然配合近似最近邻(ANN)技术实现快速检索。
  • 迟交互头(Late-interaction head):将骨干输出的每个文本 token 或图像 patch 的隐藏状态分别投影为 128 维归一化向量。相比稠密嵌入,这种细粒度表示保留了单个查询 token 与图像区域之间的局部匹配关系。
两种 NeoMME 模型规格的迟交互检索头与稠密检索头。
ColBERT 中迟交互机制的提出者 Omar Khattab 解释过,"迟交互"比"多向量"更准确地描述了这一机制——它刻画的是打分函数的细粒度与可学习性,而不仅是存储向量的数量。

NeoMME-Retriever 单次前向传播即可返回两种表示,用户可依据自身场景和基础设施灵活选择。官方一般推荐使用迟交互嵌入,因为其检索能力更强,且可配合 NextPlaid 等开源库使用。对于超大文档库,也可以先用单次前向传播获得稠密嵌入、经 ANN 索引召回少量文档,再用迟交互对候选结果重排序。

小尺寸模型实现有竞争力的检索性能

团队在 ViDoRe v3 基准上报告 nDCG@10 指标。NeoMME-Retriever-260M 达到 0.523,是参数量低于 800M 的参评模型中的最高分,与 ColQwen2.5 的差距在 0.002 nDCG@10 以内,而参数规模仅为后者的约 1/14。NeoMME-Retriever-800M 达到 0.556,与规模相近的 Vultron Retriever Flash(0.8B)的差距在 0.009 nDCG@10 以内。两个 NeoMME-Retriever 模型均位于模型规模的帕累托前沿上。

ViDoRe v3 nDCG@10 与模型规模对比。

ViDoRe v1 和 v2 采用 nDCG@5 指标。在这两个基准上,NeoMME-Retriever-260M 超过了 ColModernVBERT 以及规模两倍于它的 ColSmol-500M;NeoMME-Retriever-800M 优于 ColPali v1.3,且参数规模小 3.6 倍。

模型详情 ViDoRe(nDCG@k)
模型 参数量 v3 (@10) v2 (@5) v1 (@5)
<300M
ColModernVBERT 250M 0.261 0.407 0.806
ColSmol-256M † 256M 0.207 0.348 0.797
NeoMME-260M ‡ 260M 0.523 0.522 0.860
300M 至 1B
ColSmol-500M † 500M 0.340 0.455 0.825
Vultron Flash 850M 0.565 0.604 0.882
NeoMME-800M ‡ 800M 0.556 0.559 0.874
>1B
ColQwen2.5-v0.2 † 3.75B 0.524 0.601 0.895
ColPali v1.3 † 2.92B 0.430 0.547 0.848

† 成绩来自原论文;‡ 为 Hugging Face 自行评估的结果。

让高分辨率迟交互检索在存储上可行

迟交互的存储开销随输出嵌入中的向量数量线性增长。分辨率越高,图像 patch 越多,嵌入也就越大。以 NeoMME-Retriever 处理 2048×2048 方形页面为例,生成的嵌入包含 4,200 个向量,float32 下约占用 2.1MB;在 ViDoRe v3 基准上,平均每页约 1.5MB。

为压缩迟交互索引的存储占用,团队组合使用两种互补的压缩方法:

  1. 层次化 token 聚合:在同一多向量嵌入内部,将相似的文档向量聚类,并用聚类均值替换原向量,从而减少每页存储的向量数量。
  2. 非对称量化:将文档嵌入量化为 int8 或二进制。查询嵌入无需存储、可即时生成,因此可以保留更高精度。

在 ViDoRe v3 上的测试结果显示:采用聚合因子 10、查询与文档均使用 int8 的配置下,存储从每页约 1.5MB 降至 39kB(缩小 39 倍),并保持基线 99% 以上的 nDCG@10。更激进的配置采用聚合因子 8、int8 查询加二进制文档,每页仅需 6kB(缩小 255 倍),仍保留原始检索质量的 95% 以上。

ViDoRe v3 基准上 NeoMME-260M 迟交互索引的质量与存储前沿。图中标注了聚合因子、保留质量、压缩倍率与存储占用。

用户可以根据存储预算与目标检索质量,在这一前沿上选择合适的压缩配置。

更快的推理速度,更低的语料索引成本

检索的前提是将文档编码为嵌入并存入 Qdrant、Weaviate 或 Milvus 等向量数据库。编码速度越快,索引构建和新增文档的速度就越快,GPU 使用时长与算力成本也相应降低。

团队对 NeoMME-Retriever 与其他多模态文档检索器进行了图像编码速度对比测试,使用预处理后的图像张量,并为每个模型和图像尺寸分别校准了批大小。在单张 NVIDIA L40S、2048×2048 输入尺寸的条件下,NeoMME-Retriever-260M 每秒编码约 51 页,接近 ColModernVBERT(每秒 26 页)的两倍。在更小的输入图像上,260M 和 800M 两个 NeoMME-Retriever 模型的编码速度也均快于其他对比模型。

单张 NVIDIA L40S 上,各检索器在不同输入分辨率下的文档编码吞吐量。

上手使用 NeoMME-Retriever

NeoMME-Retriever(260M 与 800M)单次前向传播即可同时返回稠密嵌入和多向量嵌入。以下示例使用 MeanMaxSim 迟交互打分和稠密余弦相似度,对两个文本查询与两页文档图像进行匹配打分。

使用 Sentence Transformers 微调

团队提供了独立的稠密头和迟交互头检查点,支持在 Sentence Transformers v6 上进行微调。与 ModernBERT 等文本编码器的用法一致,Sentence Transformers 通过 NeoMMEModel 加载骨干,而非双头的 NeoMMEForRetrieval 类。由于 Sentence Transformers 目前每个模型仅支持一个检索头,每个检查点只能独立微调稠密头或迟交互头。如需联合训练两个头,可使用 NeoMMEForRetrieval 配合自定义 Trainer 实现。

从检索到视觉 RAG

视觉文档检索可以作为视觉检索增强生成(RAG)系统的第一阶段。与检索文本块的文本 RAG 不同,视觉 RAG 检索原始页面图像并将其交给视觉语言模型处理。模型因而能够利用文本抽取过程中可能被抹平或遗漏的表格、图表、示意图和页面

评论 0

0/500

评论需审核后展示,请文明发言

💬
还没有评论,来说两句

相关阅读