ONNX 模型库
返回模型

说明文档

gte-base-en-v1.5

我们推出 gte-v1.5 系列,这是升级版的 gte 嵌入模型,支持最高 8192 的上下文长度,同时进一步提升了模型性能。 该模型基于 transformer++ 编码器 骨干网络(BERT + RoPE + GLU)构建。

gte-v1.5 系列在同规模模型的 MTEB 基准测试中实现了最先进水平,并在 LoCo 长上下文检索测试中表现优异(请参阅评估)。

我们还推出了 gte-Qwen1.5-7B-instruct, 这是一款 SOTA 指令微调多语言嵌入模型,在 MTEB 排名第 2,在 C-MTEB 排名第 1。

<!-- 提供更长的模型摘要。 -->

<!-- - 演示 [可选]: [需要更多信息] -->

模型列表

模型 语言 模型规模 最大序列长度 维度 MTEB-en LoCo
gte-Qwen1.5-7B-instruct 多语言 7720 32768 4096 67.34 87.57
gte-large-en-v1.5 英语 434 8192 1024 65.39 86.71
gte-base-en-v1.5 英语 137 8192 768 64.11 87.44

如何开始使用模型

使用以下代码开始使用模型。

# 需要 transformers>=4.36.0

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?",
    "Beijing",
    "sorting algorithms"
]

model_path = 'Alibaba-NLP/gte-base-en-v1.5'
tokenizer = AutoTokenizer.from_pretrained(model_path)
model = AutoModel.from_pretrained(model_path, trust_remote_code=True)

# 对输入文本进行分词
batch_dict = tokenizer(input_texts, max_length=8192, padding=True, truncation=True, return_tensors='pt')

outputs = model(**batch_dict)
embeddings = outputs.last_hidden_state[:, 0]
 
# (可选)对嵌入进行归一化
embeddings = F.normalize(embeddings, p=2, dim=1)
scores = (embeddings[:1] @ embeddings[1:].T) * 100
print(scores.tolist())

建议安装 xformers 并启用 unpadding 以加速,参阅 enable-unpadding-and-xformers

配合 sentence-transformers 使用:

# 需要 sentence_transformers>=2.7.0

from sentence_transformers import SentenceTransformer
from sentence_transformers.util import cos_sim

sentences = ['That is a happy person', 'That is a very happy person']

model = SentenceTransformer('Alibaba-NLP/gte-base-en-v1.5', trust_remote_code=True)
embeddings = model.encode(sentences)
print(cos_sim(embeddings[0], embeddings[1]))

配合 transformers.js 使用:

// npm i @xenova/transformers
import { pipeline, dot } from '@xenova/transformers';

// 创建特征提取管道
const extractor = await pipeline('feature-extraction', 'Alibaba-NLP/gte-base-en-v1.5', {
    quantized: false, // 注释此行以使用量化版本
});

// 生成句子嵌入
const sentences = [
    "what is the capital of China?",
    "how to implement quick sort in python?",
    "Beijing",
    "sorting algorithms"
]
const output = await extractor(sentences, { normalize: true, pooling: 'cls' });

// 计算相似度分数
const [source_embeddings, ...document_embeddings ] = output.tolist();
const similarities = document_embeddings.map(x => 100 * dot(source_embeddings, x));
console.log(similarities); // [34.504930869007296, 64.03973265120138, 19.520042686034362]

配合 Infinity 使用: Infinity 是一个 MIT 许可的 OpenAI 兼容部署服务器。

docker run --gpus all -v $PWD/data:/app/.cache -p "7997":"7997" \
michaelf34/infinity:0.0.68 \
v2 --model-id Alibaba-NLP/gte-base-en-v1.5 --revision "4c742dc2b781e4ab062a4a77f4f7cbad4bdee970" --dtype bfloat16 --batch-size 32 --device cuda --engine torch --port 7997

训练详情

训练数据

  • 掩码语言建模(MLM):c4-en
  • 弱监督对比预训练(CPT):GTE 预训练数据
  • 有监督对比微调:GTE 微调数据

训练流程

为使骨干模型支持 8192 的上下文长度,我们采用了多阶段训练策略。 模型首先在较短的序列长度上进行初步 MLM 预训练。 然后,我们对数据进行重采样,减少短文本的比例,继续进行 MLM 预训练。

整个训练过程如下:

  • MLM-2048:lr 5e-4,mlm_probability 0.3,batch_size 4096,num_steps 70000,rope_base 10000
  • MLM-8192:lr 5e-5,mlm_probability 0.3,batch_size 1024,num_steps 20000,rope_base 500000
  • CPT:max_len 512,lr 2e-4,batch_size 32768,num_steps 100000
  • 微调:待定

评估

MTEB

其他模型的结果来自 MTEB 排行榜

gte 评估设置:mteb==1.2.0, fp16 auto mix precision, max_length=8192,并设置 ntk 缩放因子为 2(相当于 rope_base * 2)。

模型名称 参数规模 (M) 维度 序列长度 平均 (56) 分类 (12) 聚类 (11) 配对分类 (3) 重排序 (4) 检索 (15) STS (10) 摘要 (1)
gte-large-en-v1.5 434 1024 8192 65.39 77.75 47.95 84.63 58.50 57.91 81.43 30.91
mxbai-embed-large-v1 335 1024 512 64.68 75.64 46.71 87.2 60.11 54.39 85 32.71
multilingual-e5-large-instruct 560 1024 514 64.41 77.56 47.1 86.19 58.58 52.47 84.78 30.39
bge-large-en-v1.5 335 1024 512 64.23 75.97 46.08 87.12 60.03 54.29 83.11 31.61
gte-base-en-v1.5 137 768 8192 64.11 77.17 46.82 85.33 57.66 54.09 81.97 31.17
bge-base-en-v1.5 109 768 512 63.55 75.53 45.77 86.55 58.86 53.25 82.4 31.07

LoCo

模型名称 维度 序列长度 平均 (5) Qsmsum检索 SummScreen检索 Qasper摘要检索 Qasper标题检索 GovReport检索
gte-qwen1.5-7b 4096 32768 87.57 49.37 93.10 99.67 97.54 98.21
gte-large-v1.5 1024 8192 86.71 44.55 92.61 99.82 97.81 98.74
gte-base-v1.5 768 8192 87.44 49.91 91.78 99.82 97.13 98.58

引用

如果您发现我们的论文或模型有所帮助,请考虑按以下方式引用:

@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}, 
}
@misc{li2023gte,
  title={Towards General Text Embeddings with Multi-stage Contrastive Learning}, 
  author={Zehan Li and Xin Zhang and Yanzhao Zhang and Dingkun Long and Pengjun Xie and Meishan Zhang},
  year={2023},
  eprint={2308.03281},
  archivePrefix={arXiv},
  primaryClass={cs.CL},
  url={https://arxiv.org/abs/2308.03281}, 
}

Alibaba-NLP/gte-base-en-v1.5

作者 Alibaba-NLP

sentence-similarity transformers
↓ 382.6K ♥ 69

创建时间: 2024-04-20 02:53:42+00:00

更新时间: 2024-11-15 14:10:57+00:00

在 Hugging Face 上查看

文件 (18)

.gitattributes
1_Pooling/config.json
README.md
config.json
model.safetensors
modules.json
onnx/model.onnx ONNX
onnx/model_bnb4.onnx ONNX
onnx/model_fp16.onnx ONNX
onnx/model_int8.onnx ONNX
onnx/model_q4.onnx ONNX
onnx/model_quantized.onnx ONNX
onnx/model_uint8.onnx ONNX
sentence_bert_config.json
special_tokens_map.json
tokenizer.json
tokenizer_config.json
vocab.txt