🚀 gte-multilingual-base
gte-multilingual-base 模型是 GTE(通用文本嵌入)系列模型中的最新成員,具備高性能、多語言支持等特性,可用於多語言檢索等多種下游任務。
🚀 快速開始
模型信息
屬性 |
詳情 |
模型類型 |
gte-multilingual-base 是通用文本嵌入模型,屬於 GTE 模型家族。 |
訓練數據 |
未提及 |
模型大小 |
305M |
嵌入維度 |
768 |
最大輸入令牌數 |
8192 |
模型特性
- 高性能:在多語言檢索任務和多任務表示模型評估中,與同規模模型相比,達到了當前最優(SOTA)結果。
- 訓練架構:採用僅編碼器的 Transformer 架構進行訓練,模型尺寸更小。與之前基於僅解碼器的大語言模型架構(如 gte-qwen2-1.5b-instruct)的模型不同,該模型推理時對硬件要求更低,推理速度提高了 10 倍。
- 長上下文支持:支持長達 8192 個令牌的文本長度。
- 多語言能力:支持超過 70 種語言。
- 彈性密集嵌入:在保持下游任務有效性的同時,支持彈性輸出密集表示,顯著降低了存儲成本並提高了執行效率。
- 稀疏向量生成:除了密集表示外,還可以生成稀疏向量。
使用建議
⚠️ 重要提示
💻 使用示例
基礎用法
使用 Transformers 獲取密集嵌入
import torch.nn.functional as F
from transformers import AutoModel, AutoTokenizer
input_texts = [
"what is the capital of China?",
"how to implement quick sort in python?",
"北京",
"快排算法介紹"
]
model_name_or_path = 'Alibaba-NLP/gte-multilingual-base'
tokenizer = AutoTokenizer.from_pretrained(model_name_or_path)
model = AutoModel.from_pretrained(model_name_or_path, trust_remote_code=True)
batch_dict = tokenizer(input_texts, max_length=8192, padding=True, truncation=True, return_tensors='pt')
outputs = model(**batch_dict)
dimension=768
embeddings = outputs.last_hidden_state[:, 0][:dimension]
embeddings = F.normalize(embeddings, p=2, dim=1)
scores = (embeddings[:1] @ embeddings[1:].T) * 100
print(scores.tolist())
使用 sentence-transformers
from sentence_transformers import SentenceTransformer
from sentence_transformers.util import cos_sim
import numpy as np
input_texts = [
"what is the capital of China?",
"how to implement quick sort in python?",
"北京",
"快排算法介紹"
]
model_name_or_path="Alibaba-NLP/gte-multilingual-base"
model = SentenceTransformer(', trust_remote_code=True)
embeddings = model.encode(input_texts) # embeddings.shape (4, 768)
# normalized embeddings
norms = np.linalg.norm(embeddings, ord=2, axis=1, keepdims=True)
norms[norms == 0] = 1
embeddings = embeddings / norms
# sim scores
scores = (embeddings[:1] @ embeddings[1:].T)
print(scores.tolist())
# [[0.301699697971344, 0.7503870129585266, 0.32030850648880005]]
高級用法
使用自定義代碼獲取密集嵌入和稀疏令牌權重
from gte_embedding import GTEEmbeddidng
model_name_or_path = 'Alibaba-NLP/gte-multilingual-base'
model = GTEEmbeddidng(model_name_or_path)
query = "中國的首都在哪兒"
docs = [
"what is the capital of China?",
"how to implement quick sort in python?",
"北京",
"快排算法介紹"
]
embs = model.encode(docs, return_dense=True,return_sparse=True)
print('dense_embeddings vecs', embs['dense_embeddings'])
print('token_weights', embs['token_weights'])
pairs = [(query, doc) for doc in docs]
dense_scores = model.compute_scores(pairs, dense_weight=1.0, sparse_weight=0.0)
sparse_scores = model.compute_scores(pairs, dense_weight=0.0, sparse_weight=1.0)
hybrid_scores = model.compute_scores(pairs, dense_weight=1.0, sparse_weight=0.3)
print('dense_scores', dense_scores)
print('sparse_scores', sparse_scores)
print('hybrid_scores', hybrid_scores)
📚 詳細文檔
評估
我們在多個下游任務上驗證了 gte-multilingual-base 模型的性能,包括在 MTEB 排行榜 上的多語言檢索、跨語言檢索、長文本檢索和通用文本表示評估等。
檢索任務
在 MIRACL 和 MLDR(多語言)、MKQA(跨語言)、BEIR 和 LoCo(英語)上的檢索結果。


MTEB
在 MTEB 英語、中文、法語、波蘭語上的結果。

更多詳細實驗結果可在 論文 中找到。
雲 API 服務
除了開源的 GTE 系列模型外,GTE 系列模型還作為商業 API 服務在阿里雲上提供。
- 嵌入模型:提供三種版本的文本嵌入模型:text-embedding-v1/v2/v3,其中 v3 是最新的 API 服務。
- 重排序模型:提供 gte-rerank 模型服務。
請注意,商業 API 背後的模型與開源模型並不完全相同。
📄 許可證
本項目採用 Apache-2.0 許可證。
🔧 引用
如果您發現我們的論文或模型有幫助,請考慮引用:
@misc{zhang2024mgte,
title={mGTE: Generalized Long-Context Text Representation and Reranking Models for Multilingual Text Retrieval},
author={Xin Zhang and Yanzhao Zhang and Dingkun Long and Wen Xie and Ziqi Dai and Jialong Tang and Huan Lin and Baosong Yang and Pengjun Xie and Fei Huang and Meishan Zhang and Wenjie Li and Min Zhang},
year={2024},
eprint={2407.19669},
archivePrefix={arXiv},
primaryClass={cs.CL},
url={https://arxiv.org/abs/2407.19669},
}