说明文档
Granite-Embedding-107m-multilingual
模型概述: Granite-Embedding-107M-Multilingual 是 Granite Embeddings 系列中的一款 1.07 亿参数的密集双编码器嵌入模型,可用于生成高质量的文本嵌入。该模型生成维度为 384 的嵌入向量,使用开源的相关性配对数据集(具有宽松的企业友好许可证)和 IBM 收集及生成的数据集进行训练。该模型通过对比微调、知识蒸馏和模型合并进行开发,以提升性能。
- 开发者: Granite Embedding Team, IBM
- GitHub 仓库: ibm-granite/granite-embedding-models
- 网站: Granite Docs
- 论文: Technical Report
- 发布日期: 2024年12月18日
- 许可证: Apache 2.0
支持的语言: 英语、德语、西班牙语、法语、日语、葡萄牙语、阿拉伯语、捷克语、意大利语、韩语、荷兰语和中文。用户可以针对这 12 种语言之外的语言对 Granite-Embedding-107M-Multilingual 进行微调。
预期用途: 该模型旨在为给定文本生成固定长度的向量表示,可用于文本相似性、检索和搜索应用。
与 Sentence Transformers 一起使用: 该模型与 SentenceTransformer 库兼容,使用非常简单:
首先,安装 sentence transformers 库
pip install sentence_transformers
然后可以使用该模型对文本对进行编码并找出它们表示之间的相似度
from sentence_transformers import SentenceTransformer, util
model_path = "ibm-granite/granite-embedding-107m-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 一起使用: 这是一个关于如何将 Granite-Embedding-107m-Multilingual 模型与 Transformers 库和 PyTorch 一起使用的简单示例。
首先,安装所需的库
pip install transformers torch
然后可以使用该模型对文本对进行编码
import torch
from transformers import AutoModel, AutoTokenizer
model_path = "ibm-granite/granite-embedding-107m-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-107m-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-107M-Multilingual 在多语言 Miracl(跨 18 种语言)、Mintaka 检索(跨 8 种语言)以及 MTEB 英语检索(跨 15 个任务)、德语(跨 4 个任务)、西班牙语(跨 2 个任务)、法语(跨 5 个任务)、日语(跨 2 个任务)、阿拉伯语(1 个任务)、韩语(1 个任务)和中文(跨 8 个任务)上的平均性能。Granite-Embedding-107M-Multilingual 的速度是其他具有相似嵌入维度的模型的两倍。
| 模型 | 参数 (M) | 嵌入维度 | Miracl (18) | Mintaka 检索 (8) | MTEB 英语 (15) | MTEB 德语 (4) | MTEB 西班牙语 (2) | MTEB 法语 (5) | MTEB 日语 (2) | MTEB 阿拉伯语 (1) | MTEB 韩语 (1) | MTEB 中文 (8) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| granite-embedding-107m-multilingual | 107 | 384 | 55.9 | 22.6 | 45.3 | 70.3 | 48.7 | 51.1 | 59.0 | 63.2 | 70.5 | 40.8 |
模型架构: Granite-Embedding-107m-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 生成的合成数据。数据详情如下:
| 数据集 | 配对数量 |
|---|---|
| Multilingual MC4 | 52,823,484 |
| Multilingual Webhose | 12,369,322 |
| English Wikipedia | 20,745,403 |
| Multilingual Wikimedia | 2,911,090 |
| Miracl Corpus (Title-Body) | 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 |
| Multilingual Miracl 三元组 | 81,409 |
| Multilingual 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-107m-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-107m-multilingual
作者 ibm-granite
创建时间: 2024-12-04 20:29:00+00:00
更新时间: 2025-08-19 01:34:26+00:00
在 Hugging Face 上查看