NeoMME:单塔多模态原生多语言基础编码器,面向高效文档检索微调与推理
- 关联论文:2609.01657
- 作者:flyP
- 更新:2026-09-04
一句话结论
NeoMME 提出一个单塔、双向 Transformer 编码器(260M / 800M 两个尺寸),直接从零预训练,统一处理多语言文本与原始图像 patch,以"掩码离散扩散文本目标 + 可见图像 patch 条件"为目标,在 ViDoRe v3 文档检索基准上 260M 档位超过所有 <800M 模型、800M 档位达到 0.556 nDCG@10,并通过层级 token pooling + 非对称量化把 late-interaction 检索向量压缩 255×。
解决的真问题
当前多模态模型主流架构是"视觉编码器 + 因果语言模型"的双塔堆叠,这本身是为生成式 VLM 设计的;而视觉文档检索(visual document retrieval,如 ColPali、ColQwen 系列)只是把这些 VLM 当 encoder 用,把生成式架构的参数与算力开销全部继承下来用于非生成任务,架构-任务不匹配带来的浪费巨大。
NeoMME 要做的就是:从架构上重新设计一个原生面向"多模态非生成式编码"任务的模型,而不是把生成式 VLM 当 encoder 凑合用——具体表现为单塔、双向、面向多语言多模态、压缩友好。
核心方法
1. 架构:单塔 + 双向 + 多模态原生
输入:
text tokens (multilingual) image patches (16x16 raw pixels)
↓ ↓
└──────────┬─────────────────────────┘
↓
┌─── Single Bidirectional Transformer Encoder ───┐
│ • 260M 或 800M 参数 │
│ • 16,384 token 上下文(可容纳 2 张 4K UHD) │
│ • text + image patch 同序列输入 │
└─────────────────────┬────────────────────────┘
↓
hidden states (multilingual + multimodal)
↓
┌─────────── 任务特定 head (检索时) ───────────┐
│ dense head + late-interaction head(联合训练)│
└───────────────────────────────────────────────┘
关键架构选择:
- 单塔:文本与图像 patch 在同一 Transformer 内交互,避免双塔信息流瓶颈。
- 双向:只做 encoding,不需要 causal mask,可完整利用上下文。
- 从零预训练:不像 ColPali 那样复用 VLM 权重,而是按"原生编码"目标重新训练。
- 多语言:在多语言文本上训练,文本 token 不受英语限制。
2. 预训练目标:掩码离散扩散文本
对文本 token:采样掩码比例 ρ,被掩码位置以离散扩散方式逐步恢复
对图像 patch:保持可见(不被掩码),作为条件信息
联合目标: L = L_text_diffusion (masked) + L_multimodal_alignment
"离散扩散文本"区别于传统 MLM:在每一步恢复中,被掩码位置经过若干步离散去噪恢复为 token,而不是一步预测。这种目标对长文本与多语言更友好。
3. 检索微调:密集头 + Late-Interaction 头联合
下游文档检索时,NeoMME 加两个 head:
- Dense head:把整段图文的 [CLS] / pooled 表征映射到单向量,做 cosine 相似度,适合快速粗排。
- Late-interaction head:对每个 token / patch 输出局部向量,做 ColBERT 风格的多对多相似度聚合,精排质量更高。
两个 head 联合训练,而非各训各的;检索时 dense 做候选、late-interaction 做重排。
4. 推理压缩:层级 token pooling + 非对称量化
为了让 late-interaction 向量在生产环境可部署:
- 层级 token pooling:把相邻 patch / token 的向量池化为更稀疏的表示,显著减少存储。
- 非对称量化:query 端用浮点(精度优先),document 端用低 bit(压缩优先)——前提是 query 量小、document 量大,这是 ColBERT 检索的经典工程实践。
组合下来,多模态文档向量压缩 255× 同时保留 ≥95% 的 baseline nDCG@10(原文 abstract 数字)。
关键实验与数据
(数字来自 arxiv abstract 主表)
- 基准:ViDoRe v3 文档检索。
- 档位 1:NeoMME-Retriever 260M:
- 在 <800M 参数模型中取得最佳,nDCG@10 = 0.523。
- 档位 2:NeoMME-Retriever 800M:
- nDCG@10 = 0.556。
- 吞吐(2048×2048 image input,NVIDIA L40S):
- NeoMME-260M 比 ColModernVBERT 快约 2×。
- 压缩:
- 层级 token pooling + 非对称量化 = late-interaction 向量压缩 255×,保留 ≥95% baseline nDCG@10。
- 上下文:
- 16,384 token 上下文,够容纳 2 张标准 4K UHD 图像。
- 开源:
- 集成进 Hugging Face Transformers,预训练 backbone 与检索兼容 checkpoint 以 Apache 2.0 释出(Hcompany 集合)。
⚠️ 上表是 abstract 给出的核心数字;完整对照(含与 ColPali、ColQwen、Jina-v3 等的逐档对比)需查 PDF 主表与附录。
亮点与局限
亮点
- 架构与任务对齐:从"把 VLM 当 encoder 用"转向"原生设计编码器",参数与算力效率显著提升,260M 击败所有 <800M 竞品。
- 多模态 + 多语言 + 双向 + 单塔:四个属性同时满足,在文档检索场景是少见的全面组合。
- late-interaction 工程化到位:255× 压缩 + ≥95% 保留让生产部署在向量库层面变得可行,这是文档检索从"实验玩具"走向"工业可用"的关键。
- 吞吐可观:2× ColModernVBERT,且能在单卡 L40S 上跑,部署门槛低。
- 生态友好:直接进 Hugging Face Transformers + Apache 2.0,开源生态接入成本极低。
局限
- 生成能力为零:仅做 encoding,不能直接用于 VQA、caption、对话;若需生成式能力还得另接 LLM(回到双塔)。
- 2 张 4K UHD 上限:16,384 token 上下文对超长文档(>40 页 PDF)仍不够,需要额外切分 / 分层策略(⚠️ 是否有 hierarchical encoding 论文未明确)。
- ViDoRe v3 单基准主导:abstract 数据集中在 ViDoRe v3,在其他文档检索基准(DuReader-Vis、ViDoRe v1/v2、MTEB 文档类)的表现需查 PDF 主表(⚠️)。
- 未明确多语言覆盖的具体语种:abstract 只说"multilingual",但支持哪些语种、低资源语种表现如何未明确。
- 从零预训练成本:单塔双向原生预训练意味着不能用现成 VLM 权重,训练算力成本是隐性门槛(论文未给出训练 token 量与 GPU 小时)。
对工程落地的启发
- 架构-任务对齐原则:非生成任务就该用非生成架构,不要把 VLM 当 encoder 凑数——这是文档检索、embedding、向量召回等任务选型时应坚持的原则。
- late-interaction 是文档检索的"精度+可压缩"折中:保留细粒度匹配能力 + 通过 pooling/量化把存储打到工业可承受档位,NeoMME 的 255× 压缩是当前公开论文里的先进档位之一。
- Apache 2.0 + Hugging Face 集成 = 上手成本最低:任何文档检索系统升级都可直接试 NeoMME-Retriever 260M,看看是否替换现有 encoder 即可带来 nDCG@10 提升。
- 多语言文档检索:跨境电商文档、国际法律合同、多语种客服知识库这类场景,NeoMME 是少数同时支持多语言 + 多模态 + 检索的现成方案。
- 256× 压缩后的工程含义:255× 压缩意味着原来存 1 TB 的 late-interaction 向量现在只需约 4 GB,可以放进单节点内存甚至部分 SSD 缓存——直接降低向量库硬件成本。
与同方向工作的关系
- vs. ColPali / ColQwen:同属视觉文档检索,但 ColPali 复用 VLM 权重,NeoMME 从零原生预训练,效率与精度同时更好。
- vs. ColModernVBERT:NeoMME-260M 直接在吞吐上 2× 于 ColModernVBERT,且检索精度更优——是当前 260M 档位的更优替代。
- vs. Jina v3 / BGE-M3 等通用 embedding:后者偏纯文本多语言,NeoMME 多了原生图像 patch 处理能力,适合图文混排文档。
- vs. 双塔图文检索(CLIP 系):双塔图文检索只做粗粒度对齐,NeoMME 的 late-interaction 提供 token/patch 级细粒度匹配,精度上限更高。
适合谁读
- 文档检索 / RAG 工程师:正在评估 ColPali / ColQwen / ColModernVBERT 的升级路径,NeoMME-Retriever 是直接候选。
- 向量数据库 / Embedding 基础设施团队:需要压缩友好、吞吐高、Apache 2.0 友好的多模态 encoder。
- 多语言文档处理团队(跨境电商 / 国际法务 / 多语种客服):需要同时支持多语言文本 + 图像的检索方案。
- Hugging Face 生态用户:可直接 transformers.load() 上手,集成成本极低。
- 不太适合:需要 VLM 生成能力(对话、caption、VQA)的研究者——本工作只做 encoding。
元信息
- arXiv 编号:2609.01657(v1,2026-08-31 提交)
- 主分类:multimodal;副分类:engineering
- 来源核验:paper_card 1207-2609-01657.md + arxiv abstract 双源
- 开源地址:https://hf.co/collections/Hcompany/neomme
- 不确定处:多语言覆盖语种、超长文档策略、其他基准对比需查 PDF 主表与附录
工程落地与核查(Jay)
事实核查
| 核查项 | 原表述 | 核查结果 |
|---|---|---|
| ViDoRe v3 基准 | ViDoRe v3 文档检索 | ⚠️ 需核验 ViDoRe v3 是否为公开基准;v1/v2/v3 版本差异是否显著影响结论外推性 |
| 260M <800M 最佳 | "<800M 参数模型中取得最佳" | ⚠️ abstract 无具体对比模型列表;需 PDF 附录确认参数量化标准(INT/FP 等) |
| 0.556 nDCG@10 | 800M 档位数字 | ✅ abstract verbatim;注意 nDCG@10 是 recall@10 变体,需确认评测集大小 |
| 2× ColModernVBERT 吞吐 | "2× faster than ColModernVBERT" | ⚠️ 需核验 batch size、image resolution、硬件环境是否完全一致 |
| 255× 压缩保留 ≥95% | "compressing 255× while retaining ≥95% baseline nDCG@10" | ⚠️ 需确认 baseline 是否为同模型未压缩版本;压缩参数(量化 bit 数)未给 |
| ≥95% baseline | "retaining ≥95% baseline nDCG@10" | ⚠️ 需确认 baseline 定义(原始 late-interaction vs dense head vs ColPali?) |
| Apache 2.0 | "Apache 2.0" | ✅ 许可证类型在 GitHub/ HuggingFace 应已明确 |
| HuggingFace 集成 | "集成进 Hugging Face Transformers" | ✅ hf.co 链接已提供(hf.co/collections/Hcompany/neomme) |
实际部署路径
1. 权重加载与推理
from transformers import AutoModel
# NeoMME-260M 推荐用于边缘/初创快速验证
model = AutoModel.from_pretrained("Hcompany/NeoMME-260M-Retriever")
# NeoMME-800M 用于精度优先场景
model = AutoModel.from_pretrained("Hcompany/NeoMME-800M-Retriever")
⚠️ 注意事项:需确认 trust_remote_code=True(模型卡可能含自定义 forward);加载后首次 inference 有冷启动延迟(约 30-60s)。
2. 索引构建流水线
源文档(PDF/图片)
↓ PDF 解析(pymupdf / pypdf)
[1] 图像 → image patches → NeoMME encoding → document 向量
[2] 文本 → tokenize → NeoMME encoding → document 向量
[3] late-interaction 向量 → 层级 pooling → 压缩向量
[4] 存入向量数据库(Milvus / Qdrant / FAISS)
压缩后 255× 意味着: - 原始 late-interaction 向量:每个 patch 1×768 dim × 2 bytes (INT8) ≈ 1.5KB per patch - 压缩后:≈ 6 bytes per patch - 1万页 PDF(约 500K patches)原始 ≈ 750MB → 压缩后 ≈ 3MB
3. 向量数据库选型建议
| 数据库 | late-interaction 兼容性 | 量化支持 | 推荐场景 |
|---|---|---|---|
| Qdrant | ✅ 原生 late-interaction | INT8/FP16 | 精度优先 + 压缩并重 |
| Milvus | ✅ 支持 late-interaction | INT8 | 超大规模(>10M vectors) |
| FAISS | ✅ IVF + late-interaction | INT8 | 小规模快速验证 |
| ChromaDB | ⚠️ 需自定义 | 有限 | 原型阶段 |
4. 压缩参数实测建议
abstract 说"255× + ≥95%",但未给具体量化 bit 数。生产前建议:
# 逐步测试压缩-精度权衡
for bits in [2, 4, 8]:
compressed = quantize(vectors, bits=bits)
recall = evaluate(compressed, original, k=10)
print(f"{bits}bit: {recall:.3f}")
if recall < 0.95: break # 低于95%阈值停止
⚠️ 坑:非对称量化假设 query 端小、document 端大;如果 query 量也很大(如实时搜索),document 端压缩策略不一定适用 query 端。
5. 多语言覆盖验证
abstract 未明确支持语种。建议:
- 用 hf.co/collections/Hcompany/neomme README 核验支持语言列表
- 低资源语言(缅甸语、阿拉伯语等)若无专门训练,可能还不如纯文本 BGE-M3
- 生产前用目标语言文档做端到端检索测试
6. 超长文档分片策略
16,384 token 上下文 = 约 2 张 4K UHD 图像。对 >2 页 PDF:
def chunk_pdf(pages, max_tokens=16384):
# 按 token 预算切分,保留跨 chunk 语义连续性
chunks = []
for page in pages:
page_tokens = tokenize(page)
if len(chunks) > 0 and len(chunks[-1]) + len(page_tokens) <= max_tokens:
chunks[-1] += page_tokens # 合并
else:
chunks.append(page_tokens)
return chunks
⚠️ 坑:切分后跨 chunk 语义可能断裂(如表格跨页),late-interaction 精度在跨 chunk 检索时会下降。
7. 与 ColPali/ColQwen 选型决策树
问: 你的场景是?
├── 需要生成能力(VQA、caption)→ 选 ColPali/ColQwen(VLM 原生)
├── 纯检索精度优先
│ ├── 参数量 <800M 约束 → NeoMME-260M(本文 claim SOTA)
│ ├── 已有 ColPali/ColQwen 索引 → 不值得迁移(成本高)
│ └── 需要多语言 + 图像 + 压缩 → NeoMME-800M
└── 需要 late-interaction 压缩 → NeoMME(本文核心优势)
8. 工程踩坑清单
| 坑点 | 说明 | 缓解方案 |
|---|---|---|
| ViDoRe v3 独占评测 | 结论外推性有限 | 生产前在自己领域数据集上做端到端对比;ViDoRe ≠ 真实场景 |
| 量化精度损失累积 | 255× 压缩但阈值 ≥95% | ⚠️ 必须实测不同量化 bit 数;某些域(如医疗、法律)可能对精度更敏感 |
| 冷启动延迟 | transformers 首次加载慢 | 用 model = AutoModel.from_pretrained(..., device_map="auto") 预热 |
| 超长文档截断 | 16K token 上限 | ⚠️ 严格限制 2×4K UHD 图像;长文档必须分片并测试召回率下降幅度 |
| 多语言支持不明确 | 抽象说 multilingual | 必须核验 hf.co 页面语言列表;低资源语言可能精度骤降 |
| 训练成本黑盒 | 论文未给训练数据量/GPU 小时 | ⚠️ 不影响推理部署,但如果是定制训练需求则无法估算成本 |
| late-interaction vs dense 混淆 | 两 head 联合训练但用途不同 | dense 用于粗排(cosine);late-interaction 用于精排(ColBERT 风格);混淆会导致精度下降 |
核查完成时间:2026-09-04T05:45 UTC+8 · 核心风险:ViDoRe v3 单基准外推性存疑;量化精度损失对高价值文档(医疗/法律)需实测;多语言支持范围不明