Por Que Isso Importa para RAG e Busca Global
Se você já tentou construir um pipeline de RAG (retrieval-augmented generation) para um corpus multilíngue, sabe a dor: a maioria dos modelos de embedding open-source ou só suporta inglês, ou são grandes demais para rodar em hardware comum. Os novos modelos Granite Embedding Multilingual R2 da IBM vêm para resolver exatamente isso.
Lançados sob licença Apache 2.0, esses dois modelos — uma versão compacta de 97M parâmetros e uma versão completa de 311M — são construídos sobre ModernBERT, uma arquitetura de encoder renovada que traz Flash Attention 2.0, embeddings posicionais rotativos e uma janela de contexto de 32.768 tokens. Isso é um aumento de 64x em relação à geração R1 anterior.
Para devs que constroem busca multilíngue, RAG multilíngue ou ferramentas de recuperação de código, isso é um passo significativo. O modelo de 97M, em particular, bate muito acima do seu peso: ele marca 60,3 no MTEB Multilingual Retrieval, superando modelos três vezes maiores como multilingual-e5-base (52,7) e gte-multilingual-base (57,2).

Comparativo de Benchmarks e Exemplo de Código
Como os Modelos se Compararam
| Modelo | Params (M) | MTEB Multilingual Retrieval | Code Retrieval | LongEmbed |
|---|---|---|---|---|
granite-embedding-97m-multilingual-r2 | 97 | 60,3 | 60,4 | 65,6 |
granite-embedding-311m-multilingual-r2 | 311 | 65,2 | 63,8 | 71,7 |
multilingual-e5-small | 118 | 50,9 | 53,5 | 38,8 |
jina-embeddings-v5-text-nano | 212 | 63,3 | 71,2 | 63,6 |
harrier-oss-v1-270m | 268 | 66,4 | 62,4 | 64,9 |
O modelo de 97M entrega +9,4 pontos sobre o multilingual-e5-small em recuperação multilíngue, e o modelo de 311M lidera em LongEmbed (71,7) — um payoff direto da janela de contexto de 32K.
Quick Start: Sentence Transformers
from sentence_transformers import SentenceTransformer, util
# Carrega o modelo compacto de 97M
modelo = SentenceTransformer("ibm-granite/granite-embedding-97m-multilingual-r2")
# Consultas e passagens multilíngues
consultas = [
"Qual é a montanha mais alta do Japão?",
"ドイツの首都はどこですか?",
]
passagens = [
"富士山は、静岡県と山梨県にまたがる活火山で、標高3776.12 mで日本最高峰の独立峰である。",
"Berlin ist die Hauptstadt und ein Land der Bundesrepublik Deutschland.",
]
q_emb = modelo.encode(consultas)
p_emb = modelo.encode(passagens)
print(util.cos_sim(q_emb, p_emb))
# Cada consulta encontra sua passagem correta entre idiomas
Embeddings Matryoshka (apenas 311M)
O modelo de 311M suporta truncamento de dimensão — você pode cortar de 768 para 128 dimensões com perda mínima de qualidade:
from sentence_transformers import SentenceTransformer
modelo = SentenceTransformer("ibm-granite/granite-embedding-311m-multilingual-r2")
# Embeddings completos de 768 dimensões
completo = modelo.encode(["texto de exemplo"])
print(completo.shape) # (1, 768)
# Truncado para 384 dimensões
pequeno = modelo.encode(["texto de exemplo"], truncate_dim=384)
print(pequeno.shape) # (1, 384)
Em 256 dimensões, o modelo retém 99,2% da qualidade total de recuperação — uma redução de 3x no armazenamento com quase nenhum downside.

Limitações e Cuidados
Nenhum modelo é perfeito, e esses Granite embeddings têm tradeoffs:
-
Gap de transferência multilíngue no modelo de 97M: No Belebele (recuperação multilíngue entre 122 idiomas), o 97M R2 marca 52,9 — na verdade 2,2 pontos a menos que seu predecessor R1 (55,1). A poda e redução de vocabulário (de 250K para 180K tokens) sacrificou alguma capacidade de transferência multilíngue estreita em troca de ganhos no conjunto MTEB multilíngue mais amplo. Se seu caso de uso exige transferência multilíngue profunda entre muitos pares de idiomas, o modelo de 311M é a melhor escolha.
-
Sem Matryoshka no modelo de 97M: O modelo compacto produz embeddings fixos de 384 dimensões. Se você precisa de tradeoffs flexíveis de dimensão, precisa usar a versão de 311M.
-
Tradeoff velocidade vs. qualidade: O modelo de 311M codifica ~1.800 documentos/segundo em uma H100, enquanto o de 97M faz ~2.500 docs/seg. Para indexação em produção em escala, o de 97M é mais rápido, mas o de 311M dá melhor qualidade em documentos longos.
-
Dependência de adoção da comunidade: Embora os modelos sejam Apache 2.0 e substituições drop-in para frameworks como LangChain e LlamaIndex, sua viabilidade a longo prazo depende da manutenção pela IBM. Tenha sempre um modelo de fallback no seu pipeline.
Próximos Passos para Aprendizado
- Teste os modelos interativamente: A IBM tem uma demo no Hugging Face Spaces onde você pode testar o modelo de 97M em CPU.
- Leia o relatório técnico: A metodologia completa de treinamento, avaliações por idioma e ablações de poda estão disponíveis no relatório Granite Multilingual Embedding R2.
- Para mantenedores de frameworks: Se você está considerando adotar esses modelos como padrão na sua biblioteca de RAG, abra uma issue no repositório GitHub. A IBM diz que está feliz em ajudar com a integração.

Conclusão: Um Forte Concorrente para RAG Multilíngue
Os modelos Granite Embedding Multilingual R2 são uma opção séria para qualquer dev construindo sistemas de busca ou RAG multilíngues. O modelo de 97M é o melhor embedder multilíngue aberto sub-100M do mercado agora, e o modelo de 311M compete — e em algumas áreas supera — modelos como jina-embeddings-v5-text-nano e harrier-oss-v1-270m.
A licença Apache 2.0, a compatibilidade drop-in com frameworks principais e o suporte a CPU via ONNX/OpenVINO os tornam prontos para empresas. Se você está usando paraphrase-multilingual-MiniLM-L12-v2 como padrão, o modelo Granite de 97M é uma melhoria de +23,7 pontos em recuperação multilíngue — uma troca de uma linha para resultados dramaticamente melhores.
Para um mergulho mais profundo em padrões de agentes de IA em produção, confira nosso guia sobre ADK Go 1.0: Agentes de IA em Produção com OpenTelemetry. E se você é mais de frontend, veja como construir gráficos de pizza acessíveis em CSS.