Granite Embedding Multilingual R2:Apache 2.0 开源多语言嵌入,32K 上下文 — 最佳 Sub-100M 检索质量
Granite Embedding Multilingual R2: Open Apache 2.0 Multilingual Embeddings with 32K Context — Best Sub-100M Retrieval Quality
IBM 发布了基于 ModernBERT 架构的两个 Granite Embedding Multilingual R2 模型:97M 参数紧凑模型在 MTEB Multilingual Retrieval 上得分 60.3,击败所有开源 1 亿参数以下多语言 embedder;311M 全尺寸模型得分 65.2(5 亿参数以下开源模型中排名第二),支持 Matryoshka 维度截断。两者均覆盖 200+ 语言,在 52 种语言上调优,支持 32K token 上下文(R1 的 64 倍),增加 9 种编程语言代码检索,采用 Apache 2.0 许可,兼容 sentence-transformers、LangChain、LlamaIndex 等框架。
](https://huggingface.co/hansolosan)
TL;DR: 两个基于 ModernBERT 构建的新 Apache 2.0 多语言 embedding 模型——一个 97M 参数的紧凑模型,在 MTEB Multilingual Retrieval 上击败了所有开源的 1 亿参数以下多语言 embedder(60.3);以及一个 311M 的全尺寸模型,在 MTEB Multilingual Retrieval 上得分 65.2(在 5 亿参数以下开源模型中排名第二),并支持 Matryoshka。两者均覆盖 200+ 语言,在 52 种语言上进行了调优,支持 32K token 上下文(R1 的 64 倍),并增加了 9 种编程语言的代码检索。
本文内容:企业级设计 · 强大的 1 亿参数以下多语言模型 · 与 R1 相比的变化 · 训练全尺寸 311M 模型 · 构建紧凑型 97M 多语言模型 · 基准测试结果 · Matryoshka Embeddings · 部署选项 · 面向框架集成者 · 你应该使用哪个模型? · 尝试模型
多语言 embedding 模型面临一个持续存在的矛盾:广泛的语言覆盖通常以模型大小为代价,而小模型通常要牺牲语言种类。如果你跨语言工作——对多语言语料库进行检索增强生成、跨语言搜索、国际团队中的代码检索——你可能不得不在一个足够快的模型和一个足够好的模型之间做出选择。
Granite Embedding Multilingual R2 版本的发布显著缩小了这一差距。我们发布了两个新的多语言 embedding 模型:
- granite-embedding-311m-multilingual-r2 —— 一个 311M 参数的全尺寸模型,具有 768 维 embedding、Matryoshka 维度支持以及顶级的多语言检索质量。
- granite-embedding-97m-multilingual-r2 —— 一个 97M 参数的紧凑模型,具有 384 维 embedding,在其尺寸下提供了强大的检索质量。
两个模型都支持 200+ 种语言,对 52 种语言和编程代码的检索质量有所增强,支持长达 32,768 个 token 的上下文长度(是其 R1 前身的 64 倍),并在 Apache 2.0 许可下发布。它们开箱即用,兼容 sentence-transformers 和 transformers,无需特定任务的指令,并且可以作为即插即用的替代品,在 LangChain、LlamaIndex、Haystack 和 Milvus 中只需更改一行模型名称。对于当前使用仅英文默认设置的框架,这一行代码就能让你社区中的每个用户获得对 200+ 种语言的支持——无需更改 API、无需新的依赖项、用户端无需代码更改。两个模型都附带用于 CPU 优化推理的 ONNX 和 OpenVINO 权重。
52 种增强支持的语言(点击展开) 底层编码器在 200+ 种语言的文本上进行了预训练,为其中任何一种语言生成通用 embedding。以下 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++)上进行了训练,并支持跨语言代码检索。
企业级设计
两个 embedding 模型均在 IBM 策划的数据集、公开可用数据以及内部生成或合成数据的混合体上进行训练。训练中使用的源自网络的公开数据,是使用 IBM 开发的质量、去重和治理流程进行选择和过滤的,旨在降低下游商业使用中的风险。我们有意避免使用 MS-MARCO 训练数据集以及具有明确非商业许可限制的数据集。这些模型使用 GneissWeb 进行预训练,这是一个由 IBM 策划的数据集,源自公开可用的网络内容,并使用 IBM 的数据准备和治理工具进行处理——同时还有额外的 IBM 策划和其他公开可用来源。数据集经过 IBM 治理审查,以评估许可考量、所有权信号和个人数据风险。这些流程旨在促进负责任的使用和企业部署。
强大的 1 亿参数以下多语言模型
本次发布的亮点是 granite-embedding-97m-multilingual-r2。在 9700 万参数下,它在涵盖 18 种语言的 Multilingual MTEB Retrieval 上得分 60.3——这是我们在任何 1 亿参数以下的开源多语言 embedding 模型中找到的最高检索分数。在该尺寸类别中,次优模型 multilingual-e5-small 在同一基准上得分为 50.9——在一个成熟的基准上存在 +9.4 分的差距。
其大小约为 311M 全尺寸模型的三分之一,但在多语言、代码和长文档基准上保留了其大部分的检索质量——在其直接前身的基础上,在 MTEB Multilingual Retrieval 上取得了 +12.2 分的提升,这得益于新的架构、更好的训练数据以及新颖的剪枝方法(更多内容见下文)。全尺寸的 granite-embedding-311m-multilingual-r2 在同一基准上得分为 65.2,比其 R1 前身提升了 +13.0 分。
与 R1 相比的变化
Granite Embedding Multilingual R1 模型基于 XLM-RoBERTa 编码器构建,上下文窗口为 512 个 token。R2 代是完全重建的:
ModernBERT 是一种最新的编码器架构,它利用过去五年 Transformer 研究中的技术重新审视了原始的 BERT 设计。这一转变带来了几个实际好处:交替注意力长度减少了长序列上的计算量(显著提高了长序列的吞吐量),旋转位置编码使得 32K 上下文窗口成为可能,而无需困扰旧架构的位置插值技巧,并且 Flash Attention 2.0 支持加速了现代 GPU 上的编码。
新的多语言 tokenizer 值得强调。我们没有重用 XLM-RoBERTa 的 250K token 词汇表,而是采用了具有强大多语言和代码覆盖率的现有 tokenizer。311M 模型使用 Gemma 3 tokenizer(262K token);97M 模型从 GPT-OSS tokenizer 开始,并将其剪枝为紧凑的 180K token 词汇表,该词汇表保留了广泛的多语言覆盖,同时减少了 embedding 表的参数占用。Tokenizer 效率比人们意识到的更重要——一个 32K token 的窗口听起来很厉害,直到你的 tokenizer 用掉一半来编码一段泰语文本。
训练全尺寸 311M 模型
311M 模型是一个 22 层的 ModernBERT 编码器,具有 262K token 的多语言词汇表,通过多阶段流程进行训练:
- 知识蒸馏:模型同时从多个教师模型学习。教师模型是 Granite 3.3 Instruct 和 Mistral v0.2 Instruct 解码器模型,进一步针对文本 embedding 进行了微调,将检索特定知识转移到 311M 编码器架构中。
- 对比微调:在多语言检索对上进行的标准对比训练——查询与跨 52 种语言和代码的相关及难负例段落匹配——增强了模型区分相关与不相关结果的能力。
- 模型合并:训练后,我们合并来自不同训练阶段和配置的检查点。这将针对不同目标(例如,多语言广度 vs. 英语深度)优化的模型的优势结合到一组权重中,而无需额外的训练计算。
- Matryoshka 表示学习:模型使用 Matryoshka 目标进行训练,使其 768 维的 embedding 可以截断为 512、384、256 或 128 维,且质量损失最小(请参阅下文 Matryoshka Embeddings)。
结果是一个在 MTEB Multilingual Retrieval 上得分为 65.2、总体平均得分为 56.3 的模型——比其 R1 前身平均提升了 +14.5 分。
构建紧凑型 97M 多语言模型
97M 模型通过词汇表选择和知识蒸馏的组合进行训练:
- 词汇表选择:262K token 的词汇表被缩减为一个专门训练的 180K token 词汇表,该词汇表保留了广泛的多语言覆盖,同时大幅削减了 embedding 表的大小。
- 知识蒸馏:然后,使用来自多个教师模型(包括一个 Granite 4.1 8B 和基于 Mistral Instruct 解码器的教师)的知识蒸馏以及对比训练对剪枝后的模型进行微调,以提高检索质量。
这种方法将检索特定知识从多个强大的教师模型转移过来,同时在不牺牲语言覆盖的情况下减少了模型参数。结果是一个高效的紧凑模型——在 MTEB Multilingual Retrieval 上得分为 60.3,而全尺寸模型为 65.2,同时大小约为其三分之一。
基准测试结果
多语言检索
按模型大小排序的主要基准套件性能。分数是每个基准内任务的平均值(越高越好):
| 模型 | 参数 | 活跃参数 | Embed 维度 | 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) | — | — | 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 模型在平均分和大多数单个基准上击败了 multilingual-e5-base 和 gte-multilingual-base(约 300M 参数模型),尽管其大小约为它们的三分之一。
paraphrase-multilingual-MiniLM-L12-v2——一个广泛使用的框架默认模型——得分为 36.6,比 97M R2 模型低了整整 +23.7 分,而后者略小(97M vs 110M 参数),且具有相同的 384 维输出。- LongEmbed 是 R1 到 R2 提升最大的地方:97M 模型提升了 +31.3 分,311M 模型提升了 +34.0 分。这是 32K 上下文窗口的直接回报——R1 的 512 token 限制意味着你的法律合同只能根据其第一页来判断。许多实际的多语言工作负载涉及长文档(法律合同、技术手册、研究论文、多页报告),而 R1 根本无法完整查看它们。
- 代码检索提升显著:比 R1 提升了 +19.7(97M)和 +15.3(311M),这反映了新的代码训练集、更大的上下文窗口和更好的训练方法。
- 在更广泛的竞争领域中,harrier-oss-v1-270m 在 MTEB Multilingual Retrieval(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 高得多的编码吞吐量(请参阅下面的速度表)。
速度和吞吐量
编码速度对于生产工作负载至关重要,尤其是在索引数百万个文档或需要低延迟查询编码时。我们在单个 NVIDIA H100 GPU 上使用 512 token 块测量了延迟和吞吐量:
97M 模型每秒编码超过 2,500 个文档——吞吐量与 multilingual-e5-small 相当——同时提供更高的检索质量。311M 模型,约 1,800 文档/秒,在检索质量上优于 jina-embeddings-v5-text-nano(65.2 vs. 63.3),同时编码速度是其 5.5 倍以上(注意:速度数字是使用最新的 transformer 代码计算的,该代码相对于上一个 4.57 版本存在速度回归——对于 Jina 和 granite 模型都是如此——详情请参阅我们的技术报告)。harrier-oss-v1-270m 在此处列出的竞争对手中提供了速度和检索分数的最佳组合。
Matryoshka Embeddings (311M)
311M 模型支持 Matryoshka Representation Learning,它允许你将 embedding 从完整的 768 维截断到 512、384、256 或 128 维,且质量下降平缓。当存储、内存或相似性计算成本成为问题时,这非常有用——256 维 embedding 的存储空间仅为 768 维的三分之一,并且余弦相似度的计算成本也相应降低。
以下是检索质量在不同 embedding 维度下的表现:
维度缩减带来的质量损失非常小。从 768 维削减到 256 维——存储和相似性计算成本减少 3 倍——MTEB Multilingual Retrieval 仅下降 0.5 分(65.2 → 64.7),Code Retrieval 下降 0.5 分(63.9 → 63.4)。即使在 128 维(减少 6 倍),该模型在 MTEB Multilingual Retrieval 上仍得分为 63.7,在 Code 上得分为 62.3——保留了其全维度性能的 97% 以上。在实践中,这意味着你可以大幅减少索引大小和搜索延迟,而对结果质量的影响微乎其微。(注意,上图中的结果是使用 1024 的上下文长度评估英语和多语言检索,使用 8192 评估代码)。
作为比较,截断到 384 维(与 97M 模型的原生输出维度相同)的 311M 模型在所有三个基准上仍然优于 97M 模型。如果你需要 384 维的 embedding 并且能够承受 311M 模型的编码成本,那么 Matryoshka 截断是更强的选择。
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("ibm-granite/granite-embedding-311m-multilingual-r2")
# 完整的 768 维 embedding
full = model.encode(["example text"])
print(full.shape) # (1, 768)
# 截断到 384 维
small = model.encode(["example text"], truncate_dim=384)
print(small.shape) # (1, 384)
97M 模型不支持 Matryoshka——384 维已经足够紧凑。
跨语言检索
MTEB Retrieval 中跨语言任务的平均性能。Belebele 衡量跨 122 种语言的跨语言段落匹配;MLQA 衡量跨 7 种语言的抽取式跨语言问答检索。
| 模型 | Belebele Retrieval | MLQA Retrieval |
|---|---|---|
| granite-embedding-107m-multilingual (R1) | 55.1 | 60.5 |
| granite-embedding-278m-multilingual (R1) | 62.2 | 63.0 |
| granite-embedding-97m-multilingual-r2 | 52.9 | 60.5 |
| granite-embedding-311m-multilingual-r2 | 66.5 | 67.1 |
311M R2 模型在 Belebele 上比其 R1 前身提升了 +4.3,在 MLQA 上提升了 +4.1,显示了在两个基准上更大规模下改进的跨语言迁移能力。
97M R2 模型在 Belebele 上得分较低(52.9 vs 55.1,−2.2),而在 MLQA 上与其 R1 前身持平(60.5)。Belebele 的差距是剪枝和词汇缩减过程中固有的权衡——R2 模型的训练优先考虑了更广泛的 18 语言 MTEB Multilingual Retrieval 集(在此集上比 R1 提升了 +12.2)和长文档检索(+31.3),而较小的词汇表(180K vs. 250K token)和减少的层数(12 vs. 22)影响了狭窄的跨语言迁移任务。如果跨多个语言对的跨语言迁移是你的主要用例,那么全尺寸的 311M 模型是更好的选择。
部署选项
两个模型都附带多种用于生产环境的部署路径。使用以下命令安装核心库:
pip install sentence-transformers
Sentence Transformers(推荐给大多数用户):
from sentence_transformers import SentenceTransformer, util
model = SentenceTransformer("ibm-granite/granite-embedding-97m-multilingual-r2")
queries = [
"What is the tallest mountain in Japan?", # 英语
"Wer hat das Lied Achy Breaky Heart geschrieben?", # 德语
"ドイツの首都はどこですか?", # 日语
]
passages = [
"富士山は、静岡県と山梨県にまたがる活火山で、標高3776.12 mで日本最高峰の独立峰である。", # 日语
"Achy Breaky Heart is a country song written by Don Von Tress.", # 英语
"Berlin ist die Hauptstadt und ein Land der Bundesrepublik Deutschland.", # 德语
]
q_emb = model.encode(queries)
p_emb = model.encode(passages)
print(util.cos_sim(q_emb, p_emb))
# 每个查询与其匹配的段落得分最高——跨语言
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.",
])
query = embeddings.embed_query("What is Japan's tallest mountain?")
# 在任何 LangChain 接受 Embeddings 对象的地方即插即用
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 # 全局应用于任何索引或 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()
# 嵌入并索引文档
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"])
# 嵌入查询并检索
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}")
# 0.961 Mount Fuji is Japan's highest peak.
# 0.913 富士山は日本最高峰の独立峰です。
Milvus (pip install pymilvus sentence-transformers)
from pymilvus import MilvusClient
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("ibm-granite/granite-embedding-97m-multilingual-r2")
# 使用 "./milvus.db" 进行本地持久化,或使用服务器 URI 用于生产环境
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']}")
# 0.961 Mount Fuji is Japan's highest peak.
# 0.913 富士山は日本最高峰の独立峰です。
两个模型还附带预转换的 ONNX 和 OpenVINO 权重,用于优化的 CPU/加速器推理,可通过 vLLM 作为 embedding 端点工作(vllm serve ... --task embed),并且可以使用 llama.cpp 转换为 GGUF 格式用于 Ollama。有关完整的部署示例,请参阅模型卡片。
面向框架集成者
如果你维护一个 embedding 框架、向量存储或 RAG pipeline 库,并且正在评估将这些模型作为默认设置,以下是你需要了解的信息:
- 许可:Apache 2.0,未使用 MS-MARCO 训练
- 即插即用行为:无需特定任务的指令前缀——在 API 级别行为类似于
all-MiniLM-L6-v2。调用.encode()的现有代码无需更改即可工作。 - 维度:384 维输出(97M)和 768 维输出(311M),匹配最常见的现有默认设置。无需索引迁移。
- 模型大小: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 依赖。
- 默认多语言:如果你当前的默认设置是仅英文,这是一个一行代码的替换,可以让你社区中的每个用户获得对 200+ 种语言的支持——无需修改他们的代码。
- 稳定标识符:Hugging Face 上的
ibm-granite/granite-embedding-97m-multilingual-r2,由 IBM 在 Granite 模型系列下维护。
要讨论在你的项目中采用这些模型作为默认设置,请在 ibm-granite/granite-embedding-models 上提交一个 issue。
你应该使用哪个模型?
这两个多语言模型是更广泛的 Granite Embedding R2 系列的一部分,该系列还包括两个高性能的英语专用模型:granite-embedding-english-r2(149M 参数)和 granite-embedding-small-english-r2(47M 参数)。如果你的数据主要是英语,英语模型在英语基准上以更小的占用空间提供更高的检索质量,因为它们不需要为 200+ 种语言分配容量。
| 如果你需要... | 使用 |
|---|---|
| 最佳多语言检索质量 | granite-embedding-311m-multilingual-r2 |
| 灵活的 embedding 维度(存储/速度权衡) | 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 |
尝试模型
两个模型现在都可以在 Hugging Face 上的 IBM Granite Embedding 集合中找到:
你很快还可以通过 Hugging Face Spaces 上的 Granite Embedding 演示(即将推出)交互式地(在 CPU 上)尝试小型模型,或者在 Google Colab 中运行完整的示例 notebook:
你可以在此处访问我们的详细技术报告,其中涵盖了完整的训练方法、每种语言的评估和剪枝消融实验:Granite Multilingual Embedding R2 报告。如有问题、反馈或疑问,请访问 GitHub 上的 ibm-granite/granite-embedding-models。
框架维护者: 如果你想在你的项目中采用这些模型作为默认设置,请在 ibm-granite/granite-embedding-models 上提交一个 issue——我们很乐意帮助解决集成、测试以及任何关于许可或部署的问题。
试试看吧,如果这些 embedding 让你感到愉悦,请在 Hugging Face 上猛击 ❤️ 按钮。我们的模型也是有感情的,每一个 +1 都能让它们在夜晚保持温暖。



