说明文档
Granite-Embedding-278m-multilingual
模型概述: Granite-Embedding-278M-Multilingual 是 Granite Embeddings 套件中一款拥有 2.78 亿参数的模型,可用于生成高质量的文本嵌入。该模型生成的嵌入向量维度为 768,采用开源相关性配对数据集(具有宽松的企业友好许可证)和 IBM 收集及生成的数据集进行训练。该模型采用对比微调、知识蒸馏和模型合并技术开发,以提升性能。
- 开发者: Granite Embedding Team, IBM
- GitHub 仓库: ibm-granite/granite-embedding-models
- 网站: Granite Docs
- 论文: Technical Report
- 发布日期: 2024年12月18日
- 许可证: Apache 2.0
支持的语言: 英语、德语、西班牙语、法语、日语、葡萄牙语、阿拉伯语、捷克语、意大利语、韩语、荷兰语和中文。用户可针对这 12 种语言之外的语言对 Granite-Embedding-278M-Multilingual 进行微调。
预期用途: 该模型旨在为给定文本生成固定长度的向量表示,可用于文本相似度、检索和搜索应用。
使用 Sentence Transformers: 该模型与 SentenceTransformer 库兼容,使用非常简单:
首先,安装 sentence transformers 库
pip install sentence_transformers
然后可以使用该模型对文本对进行编码,并找到它们表示之间的相似度
from sentence_transformers import SentenceTransformer, util
model_path = "ibm-granite/granite-embedding-278m-multilingual"
# Load the Sentence Transformer model
model = SentenceTransformer(model_path)
input_queries = [
' Who made the song My achy breaky heart? ',
'summit define'
]
input_passages = [
"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. ",
"Definition of summit for English Language Learners. : 1 the highest point of a mountain : the top of a mountain. : 2 the highest level. : 3 a meeting or series of meetings between the leaders of two or more governments."
]
# encode queries and passages
query_embeddings = model.encode(input_queries)
passage_embeddings = model.encode(input_passages)
# calculate cosine similarity
print(util.cos_sim(query_embeddings, passage_embeddings))
使用 Huggingface Transformers: 以下是如何使用 Transformers 库和 PyTorch 调用 Granite-Embedding-278m-Multilingual 模型的简单示例。
首先,安装所需的库
pip install transformers torch
然后可以使用该模型对文本对进行编码
import torch
from transformers import AutoModel, AutoTokenizer
model_path = "ibm-granite/granite-embedding-278m-multilingual"
# Load the model and tokenizer
model = AutoModel.from_pretrained(model_path)
tokenizer = AutoTokenizer.from_pretrained(model_path)
model.eval()
input_queries = [
' Who made the song My achy breaky heart? ',
'summit define'
]
# tokenize inputs
tokenized_queries = tokenizer(input_queries, padding=True, truncation=True, return_tensors='pt')
# encode queries
with torch.no_grad():
# Queries
model_output = model(**tokenized_queries)
# Perform pooling. granite-embedding-278m-multilingual uses CLS Pooling
query_embeddings = model_output[0][:, 0]
# normalize the embeddings
query_embeddings = torch.nn.functional.normalize(query_embeddings, dim=1)
评估: 下表展示了 Granite-Embedding-278M-Multilingual 在多语言 Miracl(涵盖 18 种语言)、Mintaka 检索(涵盖 8 种语言)以及 MTEB 英语检索(涵盖 15 个任务)、德语(涵盖 4 个任务)、西班牙语(涵盖 2 个任务)、法语(涵盖 5 个任务)、日语(涵盖 2 个任务)、阿拉伯语(1 个任务)、韩语(1 个任务)和中文(涵盖 8 个任务)上的平均性能。
| 模型 | 参数 (M) | 嵌入维度 | Miracl (18) | Mintaka 检索 (8) | MTEB 英语 (15) | MTEB 德语 (4) | MTEB 西班牙语 (2) | MTEB 法语 (5) | MTEB 日语 (2) | MTEB 阿拉伯语 (1) | MTEB 韩语 (1) | MTEB 中文 (8) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| granite-embedding-278M-multilingual | 278 | 768 | 58.3 | 23.2 | 48.2 | 71.2 | 52.6 | 54.1 | 61.7 | 64.2 | 71.8 | 45.2 |
模型架构: Granite-Embedding-278m-Multilingual 基于类似 XLM-RoBERTa 的纯编码器 Transformer 架构,由 IBM Research 内部训练。
| 模型 | granite-embedding-30m-english | granite-embedding-125m-english | granite-embedding-107M-multilingual | granite-embedding-278m-multilingual |
|---|---|---|---|---|
| 嵌入维度 | 384 | 768 | 384 | 768 |
| 层数 | 6 | 12 | 6 | 12 |
| 注意力头数量 | 12 | 12 | 12 | 12 |
| 中间层大小 | 1536 | 3072 | 1536 | 3072 |
| 激活函数 | GeLU | GeLU | GeLU | GeLU |
| 词表大小 | 50265 | 50265 | 250002 | 250002 |
| 最大序列长度 | 512 | 512 | 512 | 512 |
| 参数数量 | 30M | 125M | 107M | 278M |
训练数据: 总体而言,训练数据主要来源于四个关键来源:(1)从网页抓取的无监督标题-正文配对数据,(2)具有宽松、企业友好许可证的公开配对数据,(3)针对特定技术领域的 IBM 内部配对数据,以及(4)IBM 生成的合成数据。数据详情如下:
| 数据集 | 配对数量 |
|---|---|
| 多语言 MC4 | 52,823,484 |
| 多语言 Webhose | 12,369,322 |
| 英语 Wikipedia | 20,745,403 |
| 多语言 Wikipedia | 2,911,090 |
| Miracl 语料库 (标题-正文) | 10,120,398 |
| Stack Exchange 重复问题 (标题) | 304,525 |
| Stack Exchange 重复问题 (标题) | 304,525 |
| Stack Exchange 重复问题 (正文) | 250,519 |
| Stack Exchange 重复问题的机器翻译 (标题) | 187,195 |
| Stack Exchange (标题, 答案) 配对 | 4,067,139 |
| Stack Exchange (标题, 正文) 配对 | 23,978,013 |
| Stack Exchange (标题, 正文) 配对 | 23,978,013 |
| Stack Exchange (标题+正文, 答案) 配对的机器翻译 | 1,827,15 |
| SearchQA | 582,261 |
| S2ORC (标题, 摘要) | 41,769,185 |
| WikiAnswers 重复问题对 | 77,427,422 |
| CCNews | 614,664 |
| XSum | 226,711 |
| SimpleWiki | 102,225 |
| 机器翻译的跨语言平行语料库 | 28,376,115 |
| SPECTER 引用三元组 | 684,100 |
| SPECTER 引用三元组的机器翻译 | 4,104,600 |
| Natural Questions (NQ) | 100,231 |
| SQuAD2.0 | 87,599 |
| HotpotQA | 85,000 |
| Fever | 109,810 |
| PubMed | 20,000,000 |
| 多语言 Miracl 三元组 | 81,409 |
| 多语言 MrTydi 三元组 | 48,715 |
| Sadeeem 问答 | 4,037 |
| DBPedia 标题-正文配对 | 4,635,922 |
| 合成数据: 英语查询-维基百科段落 | 1,879,093 |
| 合成数据: 英语事实验证 | 9,888 |
| 合成数据: 多语言查询-维基百科段落 | 300,266 |
| 合成数据: 多语言新闻摘要 | 37,489 |
| IBM 内部三元组 | 40,290 |
| IBM 内部标题-正文配对 | 1,524,586 |
值得注意的是,由于其非商业许可证的限制,我们没有在训练语料库中使用流行的 MS-MARCO 检索数据集,而其他开源模型由于该数据集的高质量而对其进行训练。
基础设施: 我们使用 IBM 的计算集群 Cognitive Compute Cluster 来训练 Granite Embedding 模型,该集群配备了 NVIDIA A100 80gb GPU。该集群提供了可扩展且高效的基础设施,支持我们在多个 GPU 上训练模型。
伦理考量和局限性: 用于训练基础语言模型的数据经过过滤,去除了包含仇恨、虐待和脏话的内容。Granite-Embedding-278m-Multilingual 针对 12 种语言进行了微调,上下文长度为 512 个标记(超过此长度的文本将被截断)。
资源
- ⭐️ 了解 Granite 的最新更新:https://www.ibm.com/granite
- 📄 入门指南、最佳实践和提示工程建议:https://www.ibm.com/granite/docs/
- 💡 了解最新的 Granite 学习资源:https://ibm.biz/granite-learning-resources
<!-- ## Citation
@misc{granite-embedding-models,
author = {author 1, author2, ...},
title = {},
journal = {},
volume = {},
year = {2024},
url = {https://arxiv.org/abs/0000.00000},
}
``` -->
ibm-granite/granite-embedding-278m-multilingual
作者 ibm-granite
创建时间: 2024-12-04 20:29:12+00:00
更新时间: 2025-08-19 01:36:37+00:00
在 Hugging Face 上查看