Hugging Face、効率的な多言語・マルチモーダルエンコーダー「NeoMME」を発表
本文の状態
日本語全文を表示中
詳細モードで約19分の本文を読めます。
同じ出来事の情報源
この情報源を基点に整理
Hugging Face Blog
Hugging Face の Hcompany は、画像パッチとテキストトークンを単一の双方向トランスフォーマーで処理する新世代マルチモーダルエンコーダー NeoMME を公開し、ドキュメント検索の効率を劇的に向上させた。
AI深層分析を開く2026年9月3日 22:43
AI深層分析
キーポイント
アーキテクチャの革新性
従来の生成モデルとは異なり、別個のビジョンエンコーダーや因果言語モデルを使用せず、単一の双方向トランスフォーマーでテキストと画像パッチを同時に処理する。
検索性能と効率
ViDoRe v3 のパレートフロンティアに位置し、2048×2048 解像度の入力に対し、260M モデルは ColModernVBERT の約2倍の処理速度を達成する。
インデックス圧縮技術
階層トークンプーリングと非対称量子化を採用することで、ページあたりのインデックスサイズを約1.5MBから6kBに削減し、性能低下は95%未満に抑える。
オープンソース化
NeoMME は Hugging Face Transformers で利用可能となり、すべてのモデルチェックポイントは Apache 2.0 ライセンスで公開される。
単一双方向トランスフォーマーによる効率的な設計
NeoMME は別個のビジョンタワーや因果言語モデルを使用せず、テキストトークンと生画像パッチを単一の双方向トランスフォーマーで処理する。このアーキテクチャは生成型視覚言語モデルに特有のパラメータと計算オーバーヘッドを排除している。
重要な引用
Unlike many generative visual language models, NeoMME does not use a separate pretrained vision tower or a causal language model.
NeoMME-Retriever returns dense and late-interaction embeddings in one forward pass.
Hierarchical token pooling and asymmetric quantization reduce late-interaction index storage from roughly 1.5 MB to 6 kB per page.
Hierarchical token pooling and asymmetric quantization reduce late-interaction index storage from roughly 1.5 MB to 6 kB per page (255× smaller) while retaining more than 95% of baseline nDCG@10.
編集コメントを表示
編集コメント
NeoMME は、マルチモーダルエンコーダーの設計思想において「双方向性」と「単一モデル統合」への回帰を示しており、実用性の高いドキュメント検索システムの実装に新たな基準を提示する。特にインデックスサイズの劇的な削減は、大規模な文書ベースを持つ企業にとって即座に価値を見出せる成果である。
Source Article
元記事を日本語で読む
本文に関係しない購読案内、埋め込み通知、サイト内プロモーションは除いています。

TL;DR
NeoMMEは、2.6 億パラメータと 8 億パラメータの 2 つのサイズを持つ多言語・マルチモーダルエンコーダーのファミリーです。多くの生成型視覚言語モデルとは異なり、*NeoMME* は別個に事前学習されたビジョンタワーや因果言語モデルを使用しません。単一の双方向 Transformer がテキストトークンと生の画像パッチの両方を処理し、マスク付き離散拡散目的関数を用いてモデル全体をゼロからトレーニングしています。
ColPali のページ画像アプローチを用いた視覚文書検索用に *NeoMME* をファインチューニングしました。*NeoMME*-Retriever は、1 回の順伝播で密な埋め込みと後期相互作用の埋め込みを同時に返します。両方のモデルサイズは、nDCG@10 とモデルサイズの観点から ViDoRe v3 のパレートフロンティア上に位置しています。NVIDIA L40S GPU で 2048×2048 の画像入力サイズを統一した場合、2.6 億パラメータのモデルは約 51 ページ/秒をエンコードでき、ColModernVBERT のスループットの約 2 倍に相当します。階層トークンプーリングと非対称量子化により、後期相互作用インデックスの保存容量がページあたり約 1.5 MB から 6 kB(255 分の 1)に削減されつつも、ベースラインの nDCG@10 の 95% 以上を維持しています。
*NeoMME* は Hugging Face Transformers で利用可能です。すべてのモデルチェックポイントは Apache 2.0 ライセンスの下で公開されています。
- 📄 技術報告書
なぜ、もう一つのマルチモーダルエンコーダーが必要なのか?
最近の視覚ドキュメント検索システムは、事前学習済みの生成型ビジュアル言語モデルを流用したものがほとんどです。通常、別々に事前学習されたビジョンエンコーダーが視覚的特徴を生成し、それをプロジェクターが言語モデルの入力空間へマッピングします。その後、因果的なデコーダー(causal decoder)が画像とテキストの表現を組み合わせて処理を行います。
しかし、検索や分類、トークンラベリングといったタスクは、テキストを自己回帰的に生成するものではないため、因果デコーダーが必要ありません。また、このアーキテクチャに付随するパラメータ数や計算コストのオーバーヘッドも不要です。
ModernBERT は、双方向エンコーダーに対して効率的なアーキテクチャとトレーニング手法の改善をもたらしました。視覚ドキュメント検索においては、ModernVBERT が双方向の ModernBERT スタイルテキストエンコーダーを採用しつつ、別々に事前学習された SigLIP2 ビジョンタワーを維持するアプローチを取りました。
私たちはさらに一歩踏み出し、VLM(ビジュアル言語モデル)特有のパラメータ数や計算コストのオーバーヘッドを引き継ぐことなく、マルチモーダルエンコーダーをゼロから設計・訓練することを目指しました。
*NeoMME*(読み方:"nee-oh-me"、IPA /ˈniː.oʊ.mi/)は、単一の Transformer エンコーダーを用いて入力テキストおよび/または画像のベクトル表現を生成する、多言語対応かつマルチモーダルの基盤エンコーダーです。既存の事前学習済みビジョンタワーやテキストエンコーダー、あるいはテキストデコーダーをベースにしていません。

*Dual-tower や VLM エンコーダーとは異なり、NeoMME は画像パッチとテキストトークンを 1 つの双方向 Transformer で処理します。事前学習済みのビジョンタワーやテキストエンコーダー、デコーダーは不要です。
画像とテキストは同じ計算パスを共有するため、*NeoMME* は両方のモダリティにおいて事前学習、ファインチューニング、並列化、そしてサービス提供をより容易に実現できます。
*NeoMME* エンコーダーのバックボーン
画像とテキストのための 1 つの Transformer
*NeoMME* は 260M と 800M の 2 つのサイズで提供されます。両方のバリアントは同じアーキテクチャを共有しています。
- ネイティブなマルチモーダル入力: テキスト入力は因子分解されたトークン埋め込みを使用し、画像は重なり合わない 32×32 パッチに分割されて小さな MLP で投影されます。どちらも同じ Transformer エンコーダーに入力されます。
- 動的な画像解像度: 画像のアスペクト比とサイズは維持されます。これにより、モデルは情報密度の高い高解像度のドキュメントページではより多くのトークンを活用でき、内容の少ない小さな画像よりも効率的に処理できます。
両モデルとも、最大 2 つの標準的な 3840×2160 解像度の 4K UHD 画像を処理できる十分な長さを持つ、16,384 トークンのコンテキスト長を備えています。層の大部分は対称的なスライディングウィンドウアテンションを使用しますが、6 番目の層と最終層ではグローバルアテンションが採用されています。
*NeoMME* は、グループ化クエリアテンション、クエリ・キー正規化、ゲート付きアテンション、2D ロータリー位置埋め込み、二乗 ReLU MLP など、最新のエンコーダーの改良点を採用した現代的なエンコーダースタックを構築しています。
多言語テキストについては、多言語テキスト、コード、数学、機械生成された画像トランスクリプトから、131k トークンの語彙を持つ BPE トークナイザーをゼロから訓練しました。

*NeoMME エンコーダースタックにおけるスライディングウィンドウとグローバルアテンションの層の交互配置。
マスクされたテキストを通じた画像からの学習
*NeoMME* は、離散マスク拡散テキストデノイザーとしてゼロから事前訓練を行います。テキストのみの例に対しては、0 から 1 の間で一様にサンプリングした欠損率を適用します。対象となる各テキストトークンは、その確率で独立してマスクされます。
マルチモーダルな学習例では、欠損率を 0.3 から 1 の範囲で設定します。画像パッチは可視化されたまま、NeoMME がマスクされたテキストの再構成を行います。マスクが軽い場合、モデルは周囲の文脈から単独で欠落した単語を復元できることが多くあります。例えば、「The [MASK] sat on the mat」という文において「cat」は画像がなくても妥当な補完語となり得ます。しかし、高いマスク率を適用すると、非マスクされた入力テキストからの信号がほとんどない状態でも、画像に根ざした記述を学習せざるを得なくなります。

テキストの欠損率を高めることで、言語情報だけで解決する近道が排除され、NeoMME が可視化された画像情報を積極的に活用するようになります。
事前学習では、多言語テキスト、コード、数学、自然画像、ドキュメント画像を混合して使用します。各モデルは約 5240 億個のパック入力トークンを処理し、そのうち 2900 億個がテキストのみの例からのものです。このテキスト予算は、ModernBERT の 2 兆トークンという訓練用トークン予算と比較すると相対的に小さいため、学習中のデータ効率を高めるために NorMuon オプティマイザーを採用しました。
*NeoMME*-Retriever
バックボーンモデルの性能を意味ある形で評価するために、*NeoMME* を ColPali で紹介されたページ画像ベースの手法を用いて文書検索用にファインチューニングしました。従来のテキストベースの検索はテキストチャンクの取得が中心ですが、*NeoMME*-Retriever はドキュメントページのスクリーンショットを直接ランク付けし、PDF からテキストを抽出するために必要な OCR 前処理工程をすべて省略します。ページを画像として扱うことで、レイアウトやチャート、表、フォントの種類やサイズなど、完璧な OCR モデルであっても捉えきれない視覚的な手がかりを保持できます。
密着型と後期相互作用型の検索のためのデュアルヘッド設計
*NeoMME*-Retriever は *NeoMME* のバックボーンを流用しつつ、検索用に2つのヘッドを追加して共同で訓練しています。
- 密着型(Dense)ヘッド: バックボーンの隠れ状態ベクトルを平均化し、正規化されたベクトルに変換します(平均プーリング)。現在最も一般的に使用されているのがこの密着型埋め込みです。コンパクトであり、高速検索のための近似最近傍探索(ANN)技術と自然に連携できます。
- 後期相互作用型(Late-interaction)ヘッド: バックボーンの出力隠れ状態から各テキストトークンまたは画像パッチを投影し、128 次元の正規化ベクトルに変換します。密着型埋め込みと比較して、このより細かい粒度は、個々のクエリートークンと画像領域間の局所的な一致を保持できます。

NeoMME モデルの 2 つのサイズに対応する、後期相互作用型および密着検索ヘッド。
ColBERT で後期相互作用(late-interaction)を導入した Omar Khattab 氏は、「multi-vector」という用語よりも「late-interaction」の方が正確だと説明しています。この用語は、保存されるベクトルの数ではなく、スコアリング関数の粒度や学習可能性を指すものです。後期相互作用についてさらに詳しく知りたい場合は、Amélie Chatelain 氏による このクイックコース を読むことをお勧めします。
*NeoMME*-Retriever の 1 回の順方向パス(forward pass)で両方の表現が得られるため、ユースケースやインフラストラクチャに関わらず柔軟に利用できます。一般的には、より強力な性能を発揮し、NextPlaid のようなオープンソースライブラリと簡単に連携できる後期相互作用型埋め込みベクトル(embeddings)の使用をお勧めします。ただし、コーパスが非常に大きい場合は、*NeoMME*-Retriever で 1 回の順方向パスを実行して密着埋め込みベクトルを取得し、ANN インデックスを通じて少数のドキュメントを検索した上で、後期相互作用を用いて検索結果を再ランク付けするという手法も有効です。
コンパクトなモデルサイズでも競争力のある検索性能
ViDoRe v3 の nDCG@10 結果を報告します。*NeoMME*-Retriever-260M は 0.523 を達成し、パラメータ数が 8 億未満のモデルの中で最高スコアとなりました。これは ColQwen2.5 と 0.002 の差しかなくながら、使用パラメータ数は約 14 分の 1 です。また、*NeoMME*-Retriever-800M は 0.556 を記録し、同規模の Vultron Retriever Flash (0.8B) と 0.009 の差しかありません。両方の *NeoMME*-Retriever モデルは、モデルサイズにおけるパレートフロンティア上に位置しています。

ViDoRe v1 と v2 では nDCG@5 が採用されています。両方のベンチマークにおいて、*NeoMME*-Retriever-260M は ColModernVBERT およびパラメータ数が 2 倍の ColSmol-500M を上回りました。さらに *NeoMME*-Retriever-800M は、ColPali v1.3 よりも高い性能を示しながら、使用パラメータ数は 3.6 分の 1 で済んでいます。
| モデル詳細 | 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 to 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 |
MTEB のスコア。‡ 結果は独自の評価によるものです。
後期相互作用における高解像度検索の実用化
後期相互作用のインデックスでは、出力埋め込みベクトルの数に比例してストレージ容量が線形に増加します。解像度の高い画像ほどパッチ数が多くなるため、生成される埋め込みも大きくなります。例えば、2048×2048 の正方形ページを *NeoMME*-Retriever で処理すると、4,200 個のベクトルを含む埋め込みが生成され、float32 形式では約 2.1 MB の容量が必要になります。ViDoRe v3 ベンチマーク全体での測定平均値は、文書あたり約 1.5 MB です。
後期相互作用インデックスのストレージ負荷を削減するため、私たちは 2 つの相補的な圧縮手法を組み合わせています。
- 階層的トークンプーリング は、与えられたマルチベクトル埋め込み内で類似した文書ベクトルをクラスタリングし、各クラスタをその平均値に置き換えることで、ページごとに保存するベクトル数を削減します。
- 非対称量子化 は、文書埋め込みを int8 またはバイナリ形式に量子化します。クエリ埋め込みは保存されずオンザフライで生成されるため、より高い精度を維持できます。
この構成を ViDoRe v3 で検証した結果、プーリングファクターを 10 に設定し、クエリとドキュメントを int8 量化すると、ページあたりの保存容量は約 1.5 MB から 39 kB に減少しました。これは 39 倍の圧縮率でありながら、ベースラインの nDCG@10 を 99% 以上維持できています。
より積極的な設定では、プーリングファクターを 8、クエリを int8、ドキュメントをバイナリ化します。このバージョンではページあたり 6 kB(255 倍の小型化)で済み、検索品質も元の 95% 以上を保ちます。

*ViDoRe v3 における NeoMME-260M ライトインタラクションインデックスの品質と保存容量のフロンティア。ラベルにはプーリングファクター、維持された品質、圧縮率、および保存容量が表示されています。
ユーザーは、必要な検索品質とストレージ予算に応じて、このフロンティアから最適な圧縮設定を選択できます。
低コストなマルチモーダルコーパスインデックスのための高速推論
コーパスを検索可能にするには、まず retriever モデルがドキュメントをエンベッディングに変換し、それを Qdrant や Weaviate、Milvus などのベクトルストアに保存する必要があります。エンコーディングを高速化すれば、インデックスの構築や新規ドキュメントの追加が速くなり、必要な GPU の稼働時間と計算コストを削減できます。
NeoMME-Retriever と他のマルチモーダル文書検索エンジンの画像エンコード速度を比較しました。各モデルと画像サイズごとにバッチサイズを個別に調整し、事前処理済みの画像テンソルを用いて測定を行いました。
NVIDIA L40S 上で入力サイズを 2048×2048 に統一した場合、NeoMME-Retriever-260M は約 51 ページ/秒のエンコード速度を記録しました。これは ColModernVBERT の 26 ページ/秒(ほぼ倍速)を上回る結果です。また、入力画像サイズが小さい場合でも、260M モデルと 800M モデルの両方が他社モデルよりも高速でした。

*NVIDIA L40S 上での検索エンジン別・入力解像度ごとの文書エンコードスループット。
NeoMME-Retriever を実際に試す
NeoMME-Retriever(260M および 800M)は、密な埋め込み(dense embeddings)とマルチベクトル埋め込みを同時に返します。
以下の例では、MeanMaxSim ライトインタラクションと密なコサイン類似度を用いて、2 つの文書ページ画像に対して 2 つのテキストクエリのスコアリングを行っています。
完全な 🤗 transformers のコードスニペットを表示するにはクリックしてください
# accelerate is an optional dependency needed only when using device_map="auto".
pip install -U accelerate "transformers @ git+https://github.com/huggingface/transformers.git@main" "sentence-transformers>=6.0.0"
from typing import Any, Literal
import requests
import torch
from PIL import Image
from sentence_transformers.util import cos_sim, mean_maxsim
from transformers import BatchFeature, NeoMMEForRetrieval, NeoMMEProcessor
def encode(
messages: list[list[dict[str, Any]]],
task: Literal["query", "document"],
) -> BatchFeature:
return processor.apply_chat_template(
messages,
task=task,
tokenize=True,
return_dict=True,
return_tensors="pt",
processor_kwargs={"padding": "longest"},
)
model_name = "Hcompany/NeoMME-260M-Retriever"
processor = NeoMMEProcessor.from_pretrained(model_name)
model = NeoMMEForRetrieval.from_pretrained(model_name, device_map="auto")
# Document images (our corpus)
image_urls = [
"https://github.com/tonywu71/colpali-cookbooks/blob/6ef1332da6bcb48c7ef1f19b25bfa555be7031a8/examples/data/shift_kazakhstan.jpg?raw=true",
"https://github.com/tonywu71/colpali-cookbooks/blob/6ef1332da6bcb48c7ef1f19b25bfa555be7031a8/examples/data/energy_electricity_generation.jpg?raw=true",
]
documents = [Image.open(requests.get(url, stream=True).raw) for url in image_urls]
# Queries
queries = [
"Quelle partie de la production pétrolière du Kazakhstan provient de champs en mer ?",
"Which hour of the day had the highest overall electricity generation in 2019?",
]
document_messages = [
[{"role": "user", "content": [{"type": "image", "image": document}]}] for document in documents
]
query_messages = [[{"role": "user", "content": query}] for query in queries]
inputs_documents = encode(document_messages, "document").to(model.device)
inputs_text = encode(query_messages, "query").to(model.device)
with torch.inference_mode():
document_outputs = model(**inputs_documents)
query_outputs = model(**inputs_text)
late_scores = mean_maxsim(
query_outputs.embeddings,
document_outputs.embeddings,
a_mask=inputs_text["attention_mask"],
b_mask=inputs_documents["attention_mask"],
)
dense_scores = cos_sim(query_outputs.dense_embeddings, document_outputs.dense_embeddings)
# Expected: late_scores[0, 0] > late_scores[0, 1] and late_scores[1, 1] > late_scores[1, 0].
print(late_scores, dense_scores)
Sentence Transformers を用いたファインチューニング
Dense モデルと Late-interaction モデルのチェックポイントを用意しており、Sentence Transformers v6 を用いたファインチューニングが可能です。ModernBERT などのテキストエンコーダーと同様のパターンに従い、Sentence Transformers はバックボーンを NeoMMEForRetrieval クラスではなく、NeoMMEModel を通じて読み込みます。
詳細情報:Dense モデル | 詳細情報:Late-interaction モデル
Sentence Transformers では、モデルごとに検索ヘッドを 1 つしかサポートしていないため、各チェックポイントでは密な検索用か後段の相互作用用かのどちらかを独立して微調整できます。両方のヘッドを同時に訓練する場合は、NeoMMEForRetrieval をカスタム Trainer と併用してください。
検索からビジュアル RAG へ
文書検索は、ビジュアル検索拡張生成(RAG)システムの第一段階として活用できます。テキスト抽出されたチャンクを検索する従来のテキスト RAG と異なり、ビジュアル RAG は元のページ画像そのものを検索し、それを視覚言語モデルに渡します。これにより、テキスト抽出では平坦化されたり省略されたりしがちな表やプロット、図、ページのレイアウト情報を活用できます。以下がビジュアル RAG の仕組みです。
インデックス作成:各 PDF ページを画像に変換し、検索モデルを用いて埋め込みベクトルを生成して、ベクトルストアに保存します。
検索:ユーザーのクエリに対して同じモデルで埋め込みを生成し、最も関連性の高い上位 k ページを取得します。
生成:チャットメッセージに画像を追加してクエリの後に配置します(例:{query}{img_1}{img_2}...{img_k})。これを VLM に送信して回答を生成させます。
*NeoMME*-Retriever を使用すれば、視覚的 RAG を直接テストできます。Hugging Face のスペースでお試しください:🤗 tonywu71/neomme-retriever-demo。
結論
*NeoMME* は、従来の別々の事前学習済み画像エンコーダーとテキストエンコーダーに代わり、1 つの長文コンテキスト対応双方向 Transformer で置き換えます。このモデルはゼロから訓練され、多言語テキストトークンと生の 32×32 ピクセルの画像パッチを同時に処理できるように設計されています。
*NeoMME*-Retriever は、視覚的ドキュメント検索用に微調整された *NeoMME* のバージョンです。1 回の順伝播で、密な表現と後期相互作用表現の両方を生成できます。260M パラメータモデルは、厳密に 800M パラメータ未満のすべての評価済みモデルを上回る性能を発揮します。また、入力サイズを 2048×2048 に統一した場合、ColModernVBERT の処理速度の約 2 倍でページをエンコードできます。
高解像度ドキュメントにおける後期相互作用埋め込みのストレージ容量が大きい問題を解決するため、階層トークンプーリングと非対称量子化の実験を行いました。その結果、1 ページあたりの後期相互作用埋め込みデータを約 1.5 MB から 6 kB に圧縮することに成功しました(255 倍の圧縮)。さらに、ベースラインの nDCG@10 の 95% 以上の精度を維持しています。
私たちは、*NeoMME* のモデルチェックポイントと、ゼロから構築可能な Hugging Face Transformers 実装を公開します。これにより、実践者は当社の研究成果を基盤に、効率的なマルチモーダルかつ多言語表現モデルの構築が可能になります。
謝辞
*NeoMME* は、親しい友人二人が余暇に始めたプロジェクトから始まりました。限られた時間と計算資源の中で取り組んだ結果、コミュニティがさらに発展させられるよう共有することにしました。本研究への支援と、*NeoMME* の学習に使用された計算資源を提供してくれた H 社に対し、厚く御礼申し上げます。
引用
@misc{lac2026neommesingletowermultimodalnativemultilingual,
title={NeoMME: A Single-Tower Multimodal-Native Multilingual Foundation Encoder for Efficient Fine-Tuning and Inference},
author={Aurélien Lac and Tony Wu},
year={2026},
eprint={2609.01657},
archivePrefix={arXiv},
primaryClass={cs.IR},
url={https://arxiv.org/abs/2609.01657},
}
関連記事
今日のまとめ
AIデイリーブリーフで今日の重要ニュースをまとめ読み