HuggingFace镜像/granite-embedding-311m-multilingual-r2
模型介绍文件和版本分析
下载使用量0

Granite-Embedding-311M-Multilingual-R2

模型概述: Granite-Embedding-311M-Multilingual-R2 是 Granite Embeddings 系列中的一个拥有 3.11 亿参数的密集嵌入模型,用于生成高质量的多语言文本嵌入。它能生成 768 维向量,上下文长度最长可达 32,768 个 tokens。该模型支持200 多种语言(基于底层编码器的多语言预训练语料库),其中 52 种语言和编程语言得到了增强支持,并接受了显式的检索对和跨语言训练。所有训练数据均使用宽松的、企业友好的许可,以及 IBM 收集和生成的数据集。

Granite Embedding 311M Multilingual R2 在多语言信息检索基准测试、代码检索、长文档搜索、多轮对话以及推理检索任务中均表现出强劲性能。该多语言 R2 模型在 Multilingual MTEB Retrieval(18 项任务) 上得分为64.0——相比 granite-embedding-278m-multilingual(52.2)提升了 11.8 分,并且在所有检索基准测试中的平均得分为56.0,较上一代提高了 14.2 分。它支持 Matryoshka 降维、32k token 上下文,并提供 ONNX 和 OpenVINO 模型以用于生产部署。

R2 版本的新特性

  • 架构升级: ModernBERT 取代了 XLM-RoBERTa,带来了交替注意力机制、GeGLU 激活函数和旋转位置嵌入。
  • 扩展上下文: 支持 32,768 个 tokens(较 R1 版本的 512 有所提升),能够实现长文档和多段落检索。
  • 扩充词汇量: 262K 多语言分词器,基于 200 多种语言的文本和代码训练而成。
  • Matryoshka 支持: 可将嵌入向量截断为 512、384、256 或 128 维,且性能平滑下降。
  • 更广泛的代码覆盖: 支持 Python、Go、Java、JavaScript、PHP、Ruby、SQL、C、C++ 等语言的代码检索。
  • 训练改进: 融合多教师知识蒸馏、对比微调以及模型合并技术,在平均检索基准测试中实现了 14.2 分的提升。
  • 部署灵活性: 提供 ONNX 和 OpenVINO 模型;与 vLLM 和 llama.cpp(GGUF)兼容。

该模型采用双编码器架构,可从查询、段落、代码和文档等文本输入生成高质量嵌入,通过余弦相似度实现无缝比较。Granite Embedding 311M Multilingual R2 模型结合了对比微调、知识蒸馏和模型合并等技术,经过优化确保在多种语言中查询与段落嵌入之间的强对齐。

Granite Embedding Multilingual R2 版本包含两个基于 ModernBERT 架构的多语言嵌入模型:

  • granite-embedding-311m-multilingual-r2(3.11 亿参数):输出嵌入大小为 768,替代 granite-embedding-278m-multilingual。
  • granite-embedding-97m-multilingual-r2(9700 万参数):一种小尺寸多语言模型,输出嵌入大小较小(384),适用于对延迟敏感的部署。详见 granite-embedding-97m-multilingual-r2。

模型详情

  • 开发方: Granite Embedding Team, IBM
  • 代码库: ibm-granite/granite-embedding-models
  • 项目页面: IBM Granite
  • 论文: 2026年5月发布
  • 语言(自然语言处理): 支持200多种语言,其中52种语言和编程语言提供增强支持(详见完整语言列表)
  • 发布日期: 2026年4月29日
  • 许可证: Apache 2.0

支持语言

底层编码器在200多种语言的文本上进行了预训练,我们提供这些语言的通用嵌入。此外,我们为52种语言和编程语言提供增强支持,这些语言和代码接受了显式的检索对和跨语言训练数据,在检索任务上能生成更高质量的嵌入。

点击展开52种增强支持语言列表

阿尔巴尼亚语(sq)、阿拉伯语(ar)、阿塞拜疆语(az)、孟加拉语(bn)、保加利亚语(bg)、加泰罗尼亚语(ca)、中文(zh)、克罗地亚语(hr)、捷克语(cs)、丹麦语(da)、荷兰语(nl)、英语(en)、爱沙尼亚语(et)、芬兰语(fi)、法语(fr)、格鲁吉亚语(ka)、德语(de)、希腊语(el)、希伯来语(he)、印地语(hi)、匈牙利语(hu)、冰岛语(is)、印度尼西亚语(id)、意大利语(it)、日语(ja)、哈萨克语(kk)、高棉语(km)、韩语(ko)、拉脱维亚语(lv)、立陶宛语(lt)、马来语(ms)、马拉地语(mr)、挪威语(no)、波斯语(fa)、波兰语(pl)、葡萄牙语(pt)、罗马尼亚语(ro)、俄语(ru)、塞尔维亚语(sr)、斯洛伐克语(sk)、斯洛文尼亚语(sl)、西班牙语(es)、斯瓦希里语(sw)、瑞典语(sv)、他加禄语(tl)、泰卢固语(te)、泰语(th)、土耳其语(tr)、乌克兰语(uk)、乌尔都语(ur)、乌兹别克语(uz)、越南语(vi)。

此外,模型还在编程语言(Python、Go、Java、JavaScript、PHP、Ruby、SQL、C、C++)上进行了训练,并支持跨语言代码检索。

何时使用此模型

  • 当在多语言检索、搜索和相似度任务中优先考虑准确性,且能够承担311M参数模型的吞吐量时,使用granite-embedding-311m-multilingual-r2。
  • 对于延迟敏感的生产工作负载、边缘部署,或需要最大编码吞吐量且具备有竞争力的多语言质量时,使用granite-embedding-97m-multilingual-r2。
  • 当数据主要为英语时,使用granite-embedding-english-r2或granite-embedding-small-english-r2,因为这些特定于英语的模型为单语英语用例提供了优化性能。

使用方法

预期用途:该模型旨在为给定文本生成固定长度的向量表示,可用于跨多种语言的文本相似度计算、检索和搜索应用。

为实现高效推理,这些模型支持 Flash Attention 2。安装该组件为可选操作,但能加快编码速度:

pip install flash_attn

与 Sentence Transformers 搭配使用:

该模型与 SentenceTransformer 库兼容,且使用起来非常简单:

首先,安装 sentence transformers 库

pip install sentence_transformers

该模型可用于对文本对进行编码,并计算其表示形式之间的相似度。

from sentence_transformers import SentenceTransformer, util

model_path = "ibm-granite/granite-embedding-311m-multilingual-r2"
# Load the Sentence Transformer model
model = SentenceTransformer(model_path)

input_queries = [
    'What is the tallest mountain in Japan?',          # English query
    'Wer hat das Lied Achy Breaky Heart geschrieben?', # German query
    'ドイツの首都はどこですか?',                            # Japanese query
    ]

input_passages = [
    "富士山は、静岡県と山梨県にまたがる活火山で、標高3776.12 mで日本最高峰の独立峰である。",  # Japanese passage
    "Achy Breaky Heart is a country song written by Don Von Tress. Originally titled Don't Tell My Heart and performed by The Marcy Brothers in 1991.",  # English passage
    "Berlin ist die Hauptstadt und ein Land der Bundesrepublik Deutschland. Die Stadt ist mit rund 3,7 Millionen Einwohnern die bevölkerungsreichste Kommune Deutschlands.",  # German passage
    ]

# Cross-lingual retrieval: each query should score highest with its matching passage in a different language
query_embeddings = model.encode(input_queries)
passage_embeddings = model.encode(input_passages)

# calculate cosine similarity — expect high scores on the diagonal (EN→JA, DE→EN, JA→DE)
print(util.cos_sim(query_embeddings, passage_embeddings))
# output: tensor([[0.9393, 0.6899, 0.7627],
#                 [0.6780, 0.9598, 0.7062],
#                 [0.7818, 0.7342, 0.9172]])

嵌套娃娃表示学习:

该模型支持嵌套娃娃表示学习(MRL),允许您将嵌入截断为更小的维度(例如 512、384、256、128),同时性能只会适度下降。这有助于降低存储和内存需求。

from sentence_transformers import SentenceTransformer

model = SentenceTransformer("ibm-granite/granite-embedding-311m-multilingual-r2")

# Full 768-dimensional embeddings
full_embeddings = model.encode(["example text"])
print(full_embeddings.shape)  # (1, 768)

# Truncated to 256 dimensions — still effective for many retrieval tasks
truncated_embeddings = model.encode(["example text"], truncate_dim=256)
print(truncated_embeddings.shape)  # (1, 256)

使用 Hugging Face Transformers:

以下是使用 Transformers 库和 PyTorch 调用 granite-embedding-311m-multilingual-r2 模型的简单示例。如需包含段落编码和余弦相似度的完整检索流程,请参见上文的 Sentence Transformers 示例。

首先,安装所需的库

pip install transformers torch

然后可使用该模型对文本进行编码

import torch
from transformers import AutoModel, AutoTokenizer

model_path = "ibm-granite/granite-embedding-311m-multilingual-r2"

# Load the model and tokenizer
model = AutoModel.from_pretrained(model_path)
tokenizer = AutoTokenizer.from_pretrained(model_path)
model.eval()

input_queries = [
    'What is the tallest mountain in Japan?',          # English query
    'Wer hat das Lied Achy Breaky Heart geschrieben?', # German query
    'ドイツの首都はどこですか?',                            # Japanese query
    ]

# tokenize inputs
tokenized_queries = tokenizer(input_queries, padding=True, truncation=True, return_tensors='pt')

# encode queries
with torch.no_grad():
    model_output = model(**tokenized_queries)
    # Perform pooling. granite-embedding-311m-multilingual-r2 uses CLS Pooling
    query_embeddings = model_output[0][:, 0]

# normalize the embeddings
query_embeddings = torch.nn.functional.normalize(query_embeddings, dim=1)

优化推理与部署

ONNX 和 OpenVINO:

预转换的 ONNX 和 OpenVINO 模型与 PyTorch 权重一同发布,以便用于生产部署。这些模型可通过 Sentence Transformers 中的 backend 参数直接加载:

from sentence_transformers import SentenceTransformer

# ONNX backend
model = SentenceTransformer("ibm-granite/granite-embedding-311m-multilingual-r2", backend="onnx")
embeddings = model.encode(["example text"])

# OpenVINO backend
model = SentenceTransformer("ibm-granite/granite-embedding-311m-multilingual-r2", backend="openvino")
embeddings = model.encode(["example text"])

# OpenVINO INT8 quantized backend (smaller & faster on CPU)
model = SentenceTransformer(
    "ibm-granite/granite-embedding-311m-multilingual-r2",
    backend="openvino",
    model_kwargs={"file_name": "openvino/openvino_model_qint8_quantized.xml"},
)
embeddings = model.encode(["example text"])

ONNX 模型兼容任何 ONNX Runtime 后端(CPU、CUDA、TensorRT、DirectML)。OpenVINO 模型针对英特尔硬件进行了优化,包括 CPU 和集成 GPU。

vLLM:

可使用 vLLM 将模型部署为嵌入端点:

vllm serve ibm-granite/granite-embedding-311m-multilingual-r2 --task embed

llama.cpp (GGUF):

该模型可转换为 GGUF 格式,以便与 llama.cpp 配合使用:

# Convert to GGUF
python convert_hf_to_gguf.py ibm-granite/granite-embedding-311m-multilingual-r2 \
    --outfile granite-embedding-311m-multilingual-r2.gguf

# Generate embeddings
llama-embedding -m granite-embedding-311m-multilingual-r2.gguf -p "example text"

注意:Ollama 当前不支持基于 ModernBERT 的模型。

评估结果

在检索、代码搜索、长文档和推理基准测试的平均表现上,Granite-Embedding-311M-Multilingual-R2 在 5 亿参数以下的多语言模型类别中位列前三,与上一代 Granite-Embedding-278M-Multilingual 相比,平均性能提升了 14.2 个百分点。

多语言检索性能

以下是在多语言 MTEB 检索、MTEB 英文检索、MTEB 代码检索、长文档搜索(LongEmbed)和推理即检索(RaR-b)基准测试中的性能表现。分数为各任务的平均值,数值越高越好。吞吐量(每秒处理文档数)是在单张 NVIDIA H100 GPU 上,以 1024 个序列为一批次、512 个 token 长度的条件下测量的。

Granite-Embedding-311M-Multilingual-R2 在 MTEB 多语言检索上得分为 64.0,与 R1 前代模型相比提升了 11.8 个百分点,同时保持了相近的速度,编码速度接近每秒 2000 个文档。

模型参数规模 (M)嵌入维度MTEB 多语言检索 (18)MTEB 检索(英文,v2)(10)MTEB(代码,v1)(12)LongEmbed (6)RaR-b (17)平均值吞吐量(文档/秒)
granite-embedding-107m-multilingual10738448.147.940.734.317.137.63,337
granite-embedding-278m-multilingual27876852.251.548.537.718.941.82,185
granite-embedding-97m-multilingual-r29738459.650.160.565.524.952.12,894
granite-embedding-311m-multilingual-r231176864.052.663.971.728.056.01,944

玛特廖什卡嵌入性能

该模型支持玛特廖什卡嵌入(Matryoshka Embeddings),能够在降低嵌入维度的同时不损失性能:

模型嵌入维度MTEB(英语,v2)MTEB(代码,v1)多语言MTEB检索
granite-embedding-311m-multilingual-r276852.663.963.9
51252.563.863.9
38452.163.763.8
25651.663.463.5
12850.462.362.5

模型架构与核心特性

granite-embedding-311m-multilingual-r2模型基于ModernBERT架构,并扩展了多语言词汇表:

特性granite-embedding-311m-multilingual-r2
嵌入维度768
层数22
注意力头数12
中间层维度1152
激活函数GeGLU
词汇表大小262,152
最大序列长度32,768
玛特廖什卡维度768, 512, 384, 256, 128
参数数量~311M

训练与优化

Granite Embedding Multilingual R2模型融合了ModernBERT架构的关键增强特性,包括:

  • 交替注意力长度以加速处理
  • 旋转位置嵌入以支持更长序列
  • 多语言分词器,拥有262K词汇量,源自Gemma 3分词器,并在200多种语言的代码和文本数据上进一步训练(详见下文分词器归属)
  • Flash Attention 2.0以提升效率
  • 精简参数,去除不必要的偏置项
  • 玛特廖什卡表示学习,支持灵活的嵌入维度

该模型通过多教师模型知识蒸馏、对比微调以及玛特廖什卡表示学习进行训练。

数据收集

所有训练数据均来自宽松、商业友好的许可协议,这使得 Granite Embedding R2 适合无限制的企业部署。

训练数据来源于四个关键渠道:

  1. 从网络上爬取的无监督标题-正文配对数据
  2. 公开可用且具有宽松、企业友好许可的配对数据
  3. IBM 内部针对特定技术领域的配对数据
  4. IBM 生成的多语言合成数据,包括长文档对

在治理方面,所有数据都经过数据审批流程,并接受技术、业务和治理审查。这一全面流程会记录关于数据的关键信息,包括但不限于其内容描述、所有权、预期用途、数据分类、许可信息、使用限制、数据获取方式,以及敏感信息(例如个人信息)评估。

分词器归属

本模型使用的多语言分词器源自 Google 的 Gemma 3 分词器。原始的 Gemma 3 分词器词汇表被用作起点,并在多语言文本和代码数据上进一步训练,以生成本模型中使用的 262K 词元词汇表。Gemma 分词器的使用受 Gemma 使用条款 约束。Gemma 模型系列及相关资源详见 ai.google.dev/gemma。

基础设施

我们使用 IBM 的计算集群 BlueVela Cluster 训练了 Granite Embedding Multilingual R2 模型,该集群配备了 NVIDIA H100 80GB GPU。此集群为在多 GPU 上训练我们的模型提供了可扩展且高效的基础设施。

伦理考量与局限性

Granite Embedding 311M Multilingual R2 利用了宽松许可的开源数据和精选的专有数据来提升性能。基础语言模型的训练数据经过过滤,以去除包含仇恨、辱骂和亵渎内容的文本,不过此类过滤的效果在不同语系中可能存在差异。

模型性能因语言而异:资源丰富的语言以及 52 种增强支持语言集中的语言通常能取得更好的结果,而低资源语言依赖于预训练阶段的跨语言迁移,可能表现出较低的检索质量。合成训练数据虽然能有效提高多语言覆盖度,但可能引入自然文本中不存在的分布偏差。较长的文本将被截断至 32,768 词元的上下文限制。

资源

  • 了解 Granite 的最新更新:https://www.ibm.com/granite
  • 获取教程、最佳实践和提示词工程建议,开始使用:https://www.ibm.com/granite/docs/
  • 了解最新的 Granite 学习资源:https://ibm.biz/granite-learning-resources

引用

@misc{granite-embedding-311m-multilingual-r2,
      title={Granite Embedding Multilingual R2 Models},
      author={IBM Granite Embedding Team},
      year={2026},
}