IBM Open Sources Granite Embedding R2: 97M Parameters Outperform Numerous Hundred-Million-Level Competitors

IBM releases the Granite Embedding Multilingual R2 series. The 97M-parameter version achieves a score of 59.6 on multilingual retrieval tasks, outperforming the strongest competitor in its class by 8.7 points while being three times smaller in size. Licensed under Apache 2.0, it supports 32K context length and over 200 languages.
IBM Open-Sources Granite Embedding R2: 97M Parameters Outperform Hundreds-of-Millions Parameter Rivals
IBM has just released its Granite Embedding Multilingual R2 series of vector models, fully open-sourced on Hugging Face. The most impressive part of this release is the small 97M-parameter version — it scored 59.6 on the multilingual MTEB retrieval benchmark (18 tasks), outperforming the strongest peer, multilingual-e5-small (50.9), by 8.7 points, while being only one-third its size.
This makes it the leader among open-source multilingual embedding models with around 100M parameters. More importantly, it’s released under the Apache 2.0 license — completely free for commercial use.

Technical Approach: Pruning + Distillation + Contrastive Learning
The Granite Embedding R2 series includes two versions: a full-scale model with 311M parameters, and a compact variant with 97M parameters. The 97M version was not trained from scratch — it was compressed from the 311M model using model pruning, combined with knowledge distillation, contrastive fine-tuning, and vocabulary optimization.
This combination achieves: reduced model size to one-third of the original while maintaining retrieval quality, and significantly improved inference speed. This makes it a practical trade-off for scenarios requiring vector retrieval in edge or resource-constrained environments.
The model’s core strength comes from contrastive learning. IBM fine-tuned it using a large number of query–document pairs and cross-lingual datasets to ensure that queries and relevant documents across languages are closely aligned in vector space. This approach is especially effective in multilingual retrieval since it directly optimizes semantic alignment across languages.
Supports 200+ Languages, Optimized for 52
The model is based on multilingual pretraining corpora, theoretically supporting over 200 languages. However, IBM chose not to spread training equally — it specifically fine-tuned retrieval and cross-lingual performance for 52 languages and programming code. These 52 cover major global markets, including Chinese, Japanese, Korean, Arabic, and Russian.
This "focused optimization" strategy is more practical in real-world use. Most enterprise multilingual retrieval needs center on a few dozen mainstream languages — it’s better to excel in these than to uniformly cover hundreds of long-tail ones.
The context window is 32K tokens — standard for embedding models and sufficient for most document retrieval scenarios. Note that, in embedding models, context windows define the maximum input length per encoding, not the dialogue history length as in generative models.
Performance Data: Small Model Comeback
What does a 59.6 score mean on the multilingual MTEB retrieval benchmark? Let’s compare:
- multilingual-e5-small (118M parameters): 50.9
- multilingual-e5-base (278M parameters): 54.2
- Granite Embedding 97M R2: 59.6
- Granite Embedding 311M R2: 62.1
The 97M model not only beats its similarly sized peer e5-small but nearly catches up to e5-base, which has triple the parameters. The 311M full version, with 62.1, currently ranks at the top among open-source multilingual embedding models.
MTEB (Massive Text Embedding Benchmark) is one of the most authoritative benchmarks for evaluating embedding models, covering retrieval, classification, clustering, semantic similarity, and more. IBM focused on the retrieval task scores this time, as it’s the core capability for RAG and semantic search use cases.
It’s worth noting that these scores represent the average across 18 multilingual retrieval tasks. While performance varies by language and domain, the overall trend is clear: Granite Embedding R2 maintains retrieval quality remarkably well under constrained resources.
Real-World Use Cases
Embedding models are mainly used for RAG (Retrieval-Augmented Generation) and semantic search. Specifically:
Cross-lingual document retrieval: Users can ask questions in Chinese and the system retrieves relevant content from English, Japanese, or German document repositories. Essential for multinational enterprise knowledge bases or multilingual customer support. Granite Embedding R2’s cross-lingual training makes it more effective here than monolingual models.
Code semantic search: Since the model is also optimized for programming languages, developers can describe a function in natural language and retrieve relevant code implementations from repositories. This reduces the need to recall exact function names or APIs.
Edge deployment: The compact 97M model can run in resource-limited setups such as mobile, IoT devices, or private small servers. For environments where data privacy matters and cloud uploads are undesirable, local deployment of lightweight embeddings is safer.
RAG recall stage: In multi-stage retrieval systems, a lightweight model usually performs the initial recall, followed by a heavier reranker for final ranking. The 97M model can efficiently perform recall, filtering candidates from massive corpora before re-ranking, cutting computational costs while maintaining quality.
Comparison with Other Open-Source Solutions
OpenAI’s text-embedding-3 series and Cohere’s embed-multilingual are closed-source — effective but require paid APIs and sending data to third-party servers. For organizations needing private or on-prem deployments, open-source models are the only viable option.
In the open-source ecosystem, the multilingual-e5 series (from Sentence-Transformers) remains mainstream, though it’s under the MIT license, which requires careful commercial compliance. The BGE series (from Beijing Academy of Artificial Intelligence) performs well for Chinese but lacks full multilingual balance.
Granite Embedding R2’s advantages:
- Apache 2.0 license — fully unrestricted for commercial use.
- Parameter efficiency — 97M achieves or exceeds performance of 200M+ models.
- Balanced multilingual performance — tuned across 52 languages, not just English or Chinese.
- IBM reliability — enterprise users value model stability and sustained maintenance, which IBM is known for.
Limitations remain: vector performance heavily depends on domain-specific data. If your use case involves verticals like medical or legal, additional domain fine-tuning may be required.
Technical Details: How to Use
The model is available on Hugging Face and can be loaded with either the sentence-transformers or transformers library:
from sentence_transformers import SentenceTransformer
# Load model
model = SentenceTransformer('ibm-granite/granite-embedding-97m-multilingual-r2')
# Encode text
queries = ["How to optimize database query performance?", "How to optimize database queries?"]
documents = [
"The key to optimizing database queries is building the right indexes.",
"Use indexes to speed up database queries.",
"Caching common query results can reduce database load."
]
query_embeddings = model.encode(queries)
doc_embeddings = model.encode(documents)
# Compute similarity
from sentence_transformers.util import cos_sim
scores = cos_sim(query_embeddings, doc_embeddings)
print(scores)
If using the transformers library, you’ll need to handle mean pooling manually:
from transformers import AutoTokenizer, AutoModel
import torch
tokenizer = AutoTokenizer.from_pretrained('ibm-granite/granite-embedding-97m-multilingual-r2')
model = AutoModel.from_pretrained('ibm-granite/granite-embedding-97m-multilingual-r2')
def encode(texts):
inputs = tokenizer(texts, padding=True, truncation=True, return_tensors='pt', max_length=512)
with torch.no_grad():
outputs = model(**inputs)
# Mean pooling
embeddings = outputs.last_hidden_state.mean(dim=1)
return embeddings
embeddings = encode(["test text", "example text"])
The model outputs 768-dimensional vectors. In deployment, you can store and query these vectors using databases such as FAISS or Milvus, supporting millions or even billions of documents.
Another Piece in the Open-Source Ecosystem
IBM has been increasingly active in open-source AI. Last year, it open-sourced the Granite series of language models, and now it’s filling the embedding gap. From model architecture to training data, IBM chose transparency — model cards include full details about datasets, evaluation methods, and known limitations.
Such transparency is crucial for enterprise adoption. Companies evaluating AI models consider not just accuracy, but also data compliance, explainability, and maintenance risks. Open-source models excel here, provided they have reliable long-term support behind them.
The release of Granite Embedding R2 strengthens open-source embeddings for multilingual applications. For teams requiring private deployment, strict data security, or efficient on-device retrieval, it’s an appealing option.
That a 97M model can beat 118M and approach 278M rivals proves that model compression and knowledge distillation work just as well for embeddings. In the future, we can expect more “small yet powerful” embedding models — prioritizing efficiency and effectiveness over parameter count.
References
- Granite Embedding Multilingual R2 Official Blog — IBM’s technical deep dive with training and evaluation details
- granite-embedding-97m-multilingual-r2 model page — Hugging Face model card with examples and specs
- Granite Embedding model collection — full list of models in IBM’s Granite Embedding series



