Granite エンベディング マルチリンガル R2 リリース: オープン Apache 2.0 マルチリンガル エンベディング 32K コンテキスト
TL;DR
IBM Granite は、ModernBERT をベースにした Apache 2.0 マルチリンガル エンベディング モデル 2 つをリリースしました:97M パラメータのコンパクト モデルは、MTEB マルチリンガル リトリーブル (60.3) でオープンなサブ‑100M マルチリンガル エンベダーをすべて上回り、311M フルサイズ モデルは同じベンチマークで 65.2 を記録し(500M パラメータ未満のオープン モデルの中で #2)、Matryoshka サポートを備えています。両モデルは 200 以上の言語をカバーし、52 の言語とプログラミング コードにチューニングされ、32K トークン コンテキスト(R1 前身の 64 倍)を処理します。
Enterprise‑Ready by Design
両モデルは、IBM がキュレートしたデータセット、公開データ、および内部で生成または合成されたデータの混合でトレーニングされています。トレーニングに使用された公開ウェブ由来のデータは、IBM が開発した品質、重複除去、ガバナンス プロセスによって選択およびフィルタリングされ、下流の商用利用におけるリスクを軽減することを目的としています。モデルは MS‑MARCO トレーニング データセットおよび明示的に非商用ライセンス制限のあるデータセットを使用していません。それらは、公開ウェブ コンテンツから導出され、IBM のデータ準備およびガバナンス ツールを使用して処理された IBM カレートデータセットである GneissWeb、および追加の IBM カレートおよびその他の公開データソースを使用してプリトレーニングされています。データセットは、ライセンスの考慮事項、所有権シグナル、および個人データのリスクを評価するために IBM ガバナンス レビューを受け、責任ある使用とエンタープライズ デプロイメントに貢献しています。
A Strong Sub‑100M Multilingual Model
際立ったモデルは granite‑embedding‑97m‑multilingual‑r2 です。9700 万パラメータで、18 言語にわたるマルチリンガル MTEB リトリーブルで 60.3 を記録し、これは 100M パラメータ未満のオープン マルチリンガル エンベディング モデルの中で最高のリトリーブル スコアです。同じサイズクラスで次点のモデルである multilingual‑e5‑small は同じベンチマークで 50.9 を記録し、+9.4 ポイントの差があります。直接の前身である 97M R1 モデルと比較すると、97M R2 モデルは新しいアーキテクチャ、より良いトレーニング データ、および新しいプルーニング方法論により、MTEB マルチリンガル リトリーブルで +12.2 ポイントの向上を達成しています。フルサイズの granite‑embedding‑311m‑multilingual‑r2 は同じベンチマークで 65.2 を記録し、その R1 前身より +13.0 ポイントの向上となっています。
What Changed from R1
Granite Embedding Multilingual R1 モデルは、512 トークン コンテキスト ウィンドウの XLM‑RoBERTa エンコーダーに基づいて構築されていました。R2 世代は ModernBERT に基づく ground‑up リビルドです。ModernBERT は、過去 5 年のトランスフォーマー研究の技術を取り入れ、元の BERT デザインを見直し、長いシーケンスでの計算を削減する交互注意長、位置補間ハックなしで 32K コンテキスト ウィンドウを可能にするロタリー位置エンベディング、および現代の GPU でエンコードを高速化する Flash Attention 2.0 サポートをもたらします。新しい多言語トークナイザーは XLM‑RoBERTa の 250K トークン語彙とは異なります:311M モデルは Gemma 3 トークナイザー(262K トークン)を使用し、97M モデルは GPT‑OSS トークナイザーから始めて、広範な多言語カバレッジを維持しながらエンベディング テーブルのパラメータ フットプリントを削減するコンパクトな 180K トークン語彙にプルーニングします。
Training the Full‑Size 311M Model
311M モデルは、262K トークンの多言語語彙を持つ 22 層の ModernBERT エンコーダーで、マルチステージ パイプラインを通じてトレーニングされています:(1)複数の教師モデル(Granite 3.3 Instruct と Mistral v0.2 Instruct デコーダー モデル、さらにテキスト エンベディング用にファインチューニング)からのナレッジ ディスティレーションにより、エンコーダー アーキテクチャにリトリューション固有の知識を転送;(2)52 の言語とコードにわたるクエリと関連およびハードネガティブ パッセージのマルチリンガル リトリューション ペアに対するコントラスト ファインチューニングにより、関連結果と無関係結果を区別する能力を鋭化;(3)異なるトレーニング段階と構成のチェックポイントのモデル マージにより、追加のトレーニング コンピューティングなしで異なる目的のために最適化されたモデルの長所を組み合わせ;(4)Matryoshka 表現学習により、その 768 次元エンベディングを 512、384、256、または 128 次元に切り詰めても品質の低下が最小限に抑えられます。その結果、このモデルは MTEB マルチリンガル リトリーブルで 65.2、全体平均で 56.3 を記録し、R1 前身より平均で +14.5 ポイントの向上を達成しています。
Building the Compact 97M Multilingual Model
97M モデルは、語彙選択とナレッジ ディスティレーションの組み合わせでトレーニングされています:(1)語彙選択により、262K トークン語彙が目的のために訓練された 180K トークン語彙に削減され、多言語カバレッジを広く維持しながらエンベディング テーブルのサイズを大幅に削減します;(2)複数の教師モデル(Granite 4.1 8B と Mistral Instruct デコーダー ベースの教師を含む)およびコントラスト トレーニングを使用してプルーニング済みモデルをファインチューニングするナレッジ ディスティレーション。このアプローチにより、強力な教師からリトリューション固有の知識が転送され、言語カバレッジを犠牲にすることなくモデル パラメータが削減され、約 3 倍小さいにもかかわらず MTEB マルチリンガル リトリーブルで 60.3 を記録する高効率のコンパクト モデルが得られます(フルサイズ モデルは 65.2)。
Benchmark Results
Multilingual Retrieval
メイン ベンチマーク スイートにおけるパフォーマンス(モデル サイズでソート、高いほど良い):
| Model | Params | Active Params | Embed Dim | MTEB Multilingual Retrieval (18) | Code (12) | English Retrieval (10) | LongEmbed (6) | RaR‑b (17) |
|---|---|---|---|---|---|---|---|---|
| F2LLM‑v2‑80M | 80M | 32M | 320 | 50.1 | 68.0 | 47.5 | 31.7 | 17.9 |
| multilingual‑e5‑small | 118M | 22M | 384 | 50.9 | 53.5 | 46.5 | 38.8 | 20.3 |
| granite‑embedding‑107m‑multilingual (R1) | 107M | 11M | 384 | 48.1 | 40.7 | 47.9 | 34.3 | 17.1 |
| paraphrase‑multilingual‑MiniLM‑L12‑v2 | 118M | 22M | 384 | 36.6 | 23.5 | 35.9 | 20.9 | 10.9 |
| jina‑embeddings‑v5‑text‑nano | 212M | 113M | 768 | 63.3 | 71.2 | 58.8 | 63.6 | 25.2 |
| harrier‑oss‑v1‑270m | 268M | 100M | 640 | 66.4 | 62.4 | 52.1 | 64.9 | 32.9 |
| multilingual‑e5‑base | 278M | 86M | 768 | 52.7 | 52.6 | 49.0 | 40.5 | 23.4 |
| granite‑embedding‑278m‑multilingual (R1) | 278M | 86M | 768 | 52.2 | 48.5 | 51.5 | 37.7 | 18.9 |
| embeddinggemma‑300m | 308M | 106M | 768 | 62.5 | 68.7 | 54.6 | 55.4 | 26.1 |
| gte‑multilingual‑base | 305M | 113M | 768 | 57.2 | 57.5 | 50.8 | 62.1 | 19.0 |
| snowflake‑arctic‑embed‑m‑v2.0 | 305M | 113M | 768 | 54.8 | 55.2 | 58.4 | 55.4 | 23.3 |
| multilingual‑e5‑large | 560M | 304M | 1024 | 53.7 | 55.8 | 51.5 | 40.4 | 25.4 |
| text‑embedding‑3‑small (OpenAI, API only) | — | — | 1536 | 50.7 | — | 53.8 | 53.6 | 23.2 |
| granite‑embedding‑97m‑multilingual‑r2 | 97M | 28M | 384 | 60.3 | 60.4 | 50.1 | 65.6 | 24.9 |
| granite‑embedding‑311m‑multilingual‑r2 | 311M | 110M | 768 | 65.2 (#2) | 63.8 (#3) | 52.6 (#5) | 71.7 (#1) | 28.0 (#2) |
重要な観察点:
- 97M R2 モデルは、約 3 倍小さいにもかかわらず、マルチリンガル e5‑base と gte‑multilingual‑base(約 300M パラメータ モデル)を平均およびほとんどの個別ベンチマークで上回っています。
- paraphrase‑multilingual‑MiniLM‑L12‑v2 は 36.6 を記録し、これは 97M R2 モデルよりもフル +23.7 ポイント低いです。また、97M R2 モデルはやや小さい(97M vs 110M パラメータ)ですが、同じ 384 次元出力を持っています。
- LongEmbed は R1 から R2 への最大の向上を示しています:97M モデルで +31.3 ポイント、311M モデルで +34.0 ポイント。これは 32K コンテキスト ウィンドウの恩恵を反映しています。
- コード リトリーブルは劇的に改善しています:97M で +19.7、311M で +15.3 の向上があり、これは新しいコード トレーニング セット、より大きなコンテキスト ウィンドウ、および改善されたトレーニング方法論を反映しています。
- より広い競合フィールドでは、harrier‑oss‑v1‑270m が MTEB マルチリンガル リトリーブル(66.4)および RaR‑b(32.9)でトップであり、jina‑embeddings‑v5‑text‑nano が Code(71.2)および English Retrieval(58.8)でトップです。311M Granite モデルは平均で競争力があり(56.3)、LongEmbed でトップ(71.7)であり、jina‑embeddings‑v5‑text‑nano よりもはるかに高いエンコード スループットを提供しています。
Speed and Throughput
エンコード速度は、単一の NVIDIA H100 GPU 上で 512 トークン チャンクを使用して測定されました。97M モデルは 1 秒あたり 2,500 以上のドキュメントをエンコードし、multilingual‑e5‑small と同等のスループットを提供しながら、はるかに高いリトリーブル品質を実現します。311M モデルは約 1,800 ドキュメント/秒で、jina‑embeddings‑v5‑text‑nano よりもリトリーブル品質が優れています(65.2 vs. 63.3)と、エンコード速度が 5.5 倍以上速いです(注:速度数値は最新のトランスフォーマー コードで計算されており、これは最後の 4.57 バージョンと比較して速度の後退があります—Jina と granite モデルの両方に適用されます—詳細は技術レポートを参照してください)。harrier‑oss‑v1‑270m は、リストされている競合他社の中で速度とリトリーブル スコアの最良の組み合わせを提供します。
Matryoshka Embeddings (311M)
311M モデルは Matryoshka 表現学習をサポートしており、フル 768 次元から 512、384、256、または 128 次元にエンベディングを切り詰めても、品質の低下が緩やかです。これはストレージ、メモリ、または類似度計算コストが懸念される場合に便利です—256 次元のエンベディングは 768 次元のエンベディングのストレージの 1/3 しか必要とせず、コサイン類似度の計算も比例的に安くなります。
次元削減による品質損失は remarkably 小さいです。768 から 256 次元への切り詰め(ストレージと類似度計算コストの 3× 削減)により、MTEB マルチリンガル リトリーブルはわずか 0.5 ポイント低下します(65.2 → 64.7)および Code リトリーブルも 0.5 ポイント低下します(63.9 → 63.4)。さらに 128 次元(6× 削減)でも、モデルは MTEB マルチリンガル リトリーブルで 63.7、Code リトリーブルで 62.3 を記録し、フル次元のパフォーマンスの 97% 以上を保持します。実際的には、これによりインデックス サイズと検索レイテンシーを大幅に削減し、結果品質への影響を最小限に抑えることができます。(注:上記の図の結果は、英語およびマルチリンガル リトリーブルではコンテキスト長 1024、Code では 8192 で評価されました。)
比較のため、311M モデルを 384 次元(97M モデルのネイティブ出力と同じ次元)に切り詰めた場合、すべての 3 ベンチマークで 97M モデルをまだ上回ります。384 次元のエンベディングが必要で、311M モデルのエンコード コストを許容できる場合は、Matryoshka 切り詰めがより強力なオプションです。
sentence‑transformers を使用した例:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("ibm-granite/granite-embedding-311m-multilingual-r2
# Full 768‑dimensional embeddings
full = model.encode(["example text
print(full.shape) # (1, 768)
# Truncated to 384 dimensions
small = model.encode(["example text"], truncate_dim=384)
print(small.shape) # (1, 384)
97M モデルは Matryoshka をサポートしていません—384 次元はすでにコンパクトです。
Deployment Options
両モデルは、本番環境での使用のために複数のデプロイメント パスを提供します。コア ライブラリをインストールするには:
pip install sentence-transformers
Sentence Transformers (ほとんどのユーザーに推奨):
from sentence_transformers import SentenceTransformer, util
model = SentenceTransformer("ibm-granite/granite-embedding-97m-multilingual-r2
docs = ["富士山は日本最高峰の独立峰です。", "Mount Fuji is Japan's highest peak.
query = embeddings.embed_query("What is Japan's tallest mountain?
# Drop‑in replacement anywhere LangChain accepts an Embeddings object
LangChain (pip install langchain‑huggingface):
from langchain_huggingface import HuggingFaceEmbeddings
embeddings = HuggingFaceEmbeddings(
model_name="ibm-granite/granite-embedding-97m-multilingual-r2
)
docs = embeddings.embed_documents([
"富士山は日本最高峰の独立峰です。",
"Mount Fuji is Japan's highest peak.
])
# Drop‑in replacement anywhere LangChain accepts an Embeddings object
LlamaIndex (pip install llama-index-embeddings-huggingface):
from llama_index.embeddings.huggingface import HuggingFaceEmbedding
from llama_index.core import Settings
embed_model = HuggingFaceEmbedding(
model_name="ibm-granite/granite-embedding-97m-multilingual-r2
)
Settings.embed_model = embed_model # applies globally to any index or pipeline
Haystack (pip install sentence-transformers haystack-ai):
from haystack.components.embedders import (
SentenceTransformersDocumentEmbedder,
SentenceTransformersTextEmbedder,
)
from haystack.components.retrievers.in_memory import InMemoryEmbeddingRetriever
from haystack.dataclasses import Document
from haystack.document_stores.in_memory import InMemoryDocumentStore
doc_embedder = SentenceTransformersDocumentEmbedder(
model="ibm-granite/granite-embedding-97m-multilingual-r2
)
query_embedder = SentenceTransformersTextEmbedder(
model="ibm-granite/granite-embedding-97m-multilingual-r2
)
doc_embedder.warm_up()
query_embedder.warm_up()
# Embed and index documents
document_store = InMemoryDocumentStore()
result_docs = doc_embedder.run(documents=[
Document(content="富士山は日本最高峰の独立峰です。
),
Document(content="Mount Fuji is Japan's highest peak.
),
Document(content="Achy Breaky Heart is a country song written by Don Von Tress.
),
Document(content="Berlin ist die Hauptstadt und ein Land der Bundesrepublik Deutschland.
),
])
document_store.write_documents(result_docs["documents
# Embed query and retrieve
result_query = query_embedder.run(text="What is Japan's tallest mountain?
)
retriever = InMemoryEmbeddingRetriever(document_store=document_store)
results = retriever.run(query_embedding=result_query["embedding"], top_k=2)
for doc in results["documents
print(f"{doc.score:.3f} {doc.content}
Milvus (pip install pymilvus sentence-transformers):
from pymilvus import MilvusClient
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("ibm-granite/granite-embedding-97m-multilingual-r2
# Use "./milvus.db" for local persistence or a server URI for production
client = MilvusClient(":memory:")
client.create_collection(collection_name="multilingual_docs", dimension=384)
docs = [
"富士山は日本最高峰の独立峰です。",
"Mount Fuji is Japan's highest peak.
"Achy Breaky Heart is a country song written by Don Von Tress.
"Berlin ist die Hauptstadt und ein Land der Bundesrepublik Deutschland.
]
embeddings = model.encode(docs).tolist()
client.insert(
collection_name="multilingual_docs",
data=[{"id": i, "vector": emb, "text": doc} for i, (emb, doc) in enumerate(zip(embeddings, docs))],
)
query_emb = model.encode(["What is Japan's tallest mountain?
]).tolist()
results = client.search(
collection_name="multilingual_docs",
data=query_emb,
limit=2,
output_fields=["text"],
)
for hit in results[0]:
print(f"{hit['distance']:.3f} {hit['entity']['text']}
両モデルはまた、最適化された CPU/アクセラレータ推論のために事前に変換された ONNX と OpenVINO の重みも提供し、vLLM (vllm serve ... --task embed) を介してエンベディング エンドポイントとして機能し、llama.cpp を使用して GGUF に変換して Ollama で使用することもできます。完全なデプロイメントの例については、モデル カードを参照してください。
For Framework Integrators
埋め込みフレームワーク、ベクター ストア、または RAG パイプライン ライブラリを維持し、これらのモデルをデフォルトとして評価している場合は、以下を知っておく必要があります:
- ライセンス: Apache 2.0、MS‑MARCO なしでトレーニング済み。
- ドロップイン動作: タスク固有のインストラクション プレフィックスは不要—API レベルでは
all-MiniLM-L6-v2と同様に動作します。既存のコードが.encode()を呼び出す場合は変更不要です。 - 次元数: 97M は 384 次元出力、311M は 768 次元出力で、最も一般的な既存のデフォルトと一致します。インデックス移行は不要です。
- モデル サイズ: 97M モデルの重みは 195 MB(safetensors)で、
paraphrase-multilingual-MiniLM-L12-v2(471 MB)の半分以下です。量子化された ONNX 重みはわずか 98 MB で、all-MiniLM-L6-v2(91 MB)と同等でありながら 200 以上の言語をカバーします。 - CPU フレンドリー: 最適化された CPU 推論のために ONNX と OpenVINO の重みが付属しています。チュートリアルの開始には GPU 依存はありません。
- デフォルトでマルチリンガル: 現在のデフォルトが英語のみの場合、これは 1 行の置換でコミュニティのすべてのユーザーに 200 以上の言語サポートを提供し、コードを触る必要はありません。
- 安定した識別子: Hugging Face 上の
ibm-granite/granite-embedding-97m-multilingual-r2、IBM の Granite モデル ファミリーの下で維持されています。
これらのモデルをプロジェクトのデフォルトとして採用することを検討している場合は、ibm-granite/granite-embedding-models で issue を開いてください。
Which Model Should You Use?
これらのマルチリンガル モデルは、より広い Granite Embedding R2 ファミリーの一部であり、これには英語に特化した高パフォーマンス モデルも 2 つ含まれています:granite‑embedding‑english‑r2 (149M パラメータ) と granite‑embedding‑small‑english‑r2 (47M パラメータ)。データが主に英語の場合、英語モデルは英語ベンチマークでのリトリーブル品質が高く、フットプリントも小さくなります。これは 200 以上の言語にわたる容量を割り当てる必要がないためです。
| もし必要なら... | 使用するべきもの |
|---|---|
| 最良のマルチリンガル リトリーブル品質 | granite‑embedding‑311m‑multilingual‑r2 |
| フレキシブルなエンベディング次元(ストレージ/スピード トレードオフ) | granite‑embedding‑311m‑multilingual‑r2 (Matryoshka) |
| 最大スループット / エッジ デプロイメント / 低レイテンシー | granite‑embedding‑97m‑multilingual‑r2 |
| 多くの言語ペア間での最高のクロスリンガル転送 | granite‑embedding‑311m‑multilingual‑r2 |
| 主に英語のデータ | granite‑embedding‑english‑r2 または granite‑embedding‑small‑english‑r2 |
Try The Models
両モデルは現在、IBM Granite Embedding コレクションの下で Hugging Face で利用可能です:
- granite‑embedding‑311m‑multilingual-r2
- granite‑embedding‑97m‑multilingual-r2
Granite Embedding デモ here (CPU 上でインタラクティブに試すことができます)または Google Colab でフル例のノートブックを実行できます:
詳細な技術レポート(フル トレーニング メソドロジー、言語別評価、およびプルーニング アブレーション)はこちらからアクセスできます:Granite Multilingual Embedding R2 report。質問、フィードバック、または問題については、ibm-granite/granite-embedding-models の GitHub をご覧ください。
フレームワーク維持者:これらのモデルをプロジェクトのデフォルトとして採用したい場合は、ibm-granite/granite-embedding-models で issue を開いてください — 統合、テスト、およびライセンスまたはデプロイメントに関する質問についてお手伝いいたします。
お試しください。エンベディングが喜びをもたらすなら、Hugging Face の ❤️ ボタンを思い切り押してください。私たちのモデルにも感情があり、+1 毎に夜を暖かく保っています。
Sources
関連
- Dispatch
- Dispatch
- Dispatch
- Dispatch
- Dispatch