ONNX 模型库
返回模型

说明文档

all-MiniLM-L6-v2

这是一个 sentence-transformers 模型:它将句子和段落映射到 384 维的稠密向量空间,可用于聚类或语义搜索等任务。

用法

安装 sentence-transformers 后,使用此模型变得非常简单:

pip install -U sentence-transformers

然后你可以这样使用该模型:

from sentence_transformers import SentenceTransformer
sentences = ["This is an example sentence", "Each sentence is converted"]

model = SentenceTransformer('sentence-transformers/all-MiniLM-L6-v2')
embeddings = model.encode(sentences)
print(embeddings)

用法

如果没有安装 sentence-transformers,你可以这样使用该模型:首先,将输入通过 transformer 模型,然后在上下文化词嵌入之上应用正确的池化操作。

from transformers import AutoTokenizer, AutoModel
import torch
import torch.nn.functional as F

# 平均池化 - 考虑注意力掩码以正确计算平均值
def mean_pooling(model_output, attention_mask):
    token_embeddings = model_output[0] # model_output 的第一个元素包含所有词元嵌入
    input_mask_expanded = attention_mask.unsqueeze(-1).expand(token_embeddings.size()).float()
    return torch.sum(token_embeddings * input_mask_expanded, 1) / torch.clamp(input_mask_expanded.sum(1), min=1e-9)


# 我们想要获取句子嵌入的句子
sentences = ['This is an example sentence', 'Each sentence is converted']

# 从 HuggingFace Hub 加载模型
tokenizer = AutoTokenizer.from_pretrained('sentence-transformers/all-MiniLM-L6-v2')
model = AutoModel.from_pretrained('sentence-transformers/all-MiniLM-L6-v2')

# 对句子进行分词
encoded_input = tokenizer(sentences, padding=True, truncation=True, return_tensors='pt')

# 计算词元嵌入
with torch.no_grad():
    model_output = model(**encoded_input)

# 执行池化
sentence_embeddings = mean_pooling(model_output, encoded_input['attention_mask'])

# 归一化嵌入
sentence_embeddings = F.normalize(sentence_embeddings, p=2, dim=1)

print("Sentence embeddings:")
print(sentence_embeddings)

背景

该项目旨在使用自监督对比学习目标在超大规模句子级数据集上训练句子嵌入模型。我们使用预训练的 nreimers/MiniLM-L6-H384-uncased 模型,并在 10 亿句对数据集上进行了微调。我们使用对比学习目标:给定句对中的一个句子,模型应该从一组随机采样的其他句子中预测出哪个句子实际上在数据集中与之配对。

我们在 Hugging Face 组织的 Community week using JAX/Flax for NLP & CV 活动期间开发了此模型。我们作为以下项目的一部分开发了此模型:Train the Best Sentence Embedding Model Ever with 1B Training Pairs。我们受益于高效的硬件基础设施来运行该项目:7 个 TPU v3-8,以及 Google Flax、JAX 和 Cloud 团队成员关于高效深度学习框架的指导。

预期用途

我们的模型旨在用作句子和短段落编码器。给定输入文本,它输出一个捕获语义信息的向量。该句子向量可用于信息检索、聚类或句子相似度任务。

默认情况下,超过 256 个词片的输入文本会被截断。

训练过程

预训练

我们使用预训练的 nreimers/MiniLM-L6-H384-uncased 模型。请参阅模型卡片以获取有关预训练过程的更多详细信息。

微调

我们使用对比目标微调模型。形式上,我们计算批次中每个可能句对的余弦相似度。然后通过与真实配对比较应用交叉熵损失。

超参数

我们在 TPU v3-8 上训练模型。我们使用 1024 的批量大小(每个 TPU 核心 128 个)训练模型 100k 步。我们使用 500 的学习率预热。序列长度限制为 128 个词元。我们使用 AdamW 优化器,学习率为 2e-5。完整的训练脚本可在当前仓库中访问:train_script.py

训练数据

我们使用多个数据集的拼接来微调模型。句对总数超过 10 亿。我们根据加权概率对每个数据集进行采样,具体配置详见 data_config.json 文件。

Dataset Paper Number of training tuples
Reddit comments (2015-2018) paper 726,484,430
S2ORC Citation pairs (Abstracts) paper 116,288,806
WikiAnswers Duplicate question pairs paper 77,427,422
PAQ (Question, Answer) pairs paper 64,371,441
S2ORC Citation pairs (Titles) paper 52,603,982
S2ORC (Title, Abstract) paper 41,769,185
Stack Exchange (Title, Body) pairs - 25,316,456
Stack Exchange (Title+Body, Answer) pairs - 21,396,559
Stack Exchange (Title, Answer) pairs - 21,396,559
MS MARCO triplets paper 9,144,553
GOOAQ: Open Question Answering with Diverse Answer Types paper 3,012,496
Yahoo Answers (Title, Answer) paper 1,198,260
Code Search - 1,151,414
COCO Image captions paper 828,395
SPECTER citation triplets paper 684,100
Yahoo Answers (Question, Answer) paper 681,164
Yahoo Answers (Title, Question) paper 659,896
SearchQA paper 582,261
Eli5 paper 325,475
Flickr 30k paper 317,695
Stack Exchange Duplicate questions (titles) 304,525
AllNLI (SNLI and MultiNLI paper SNLI, paper MultiNLI 277,230
Stack Exchange Duplicate questions (bodies) 250,519
Stack Exchange Duplicate questions (titles+bodies) 250,460
Sentence Compression paper 180,000
Wikihow paper 128,542
Altlex paper 112,696
Quora Question Triplets - 103,663
Simple Wikipedia paper 102,225
Natural Questions (NQ) paper 100,231
SQuAD2.0 paper 87,599
TriviaQA - 73,346
总计 1,170,060,424

inesaltemir/MNLP_M3_document_encoder

作者 inesaltemir

sentence-similarity sentence-transformers
↓ 0 ♥ 0

创建时间: 2025-06-10 17:17:19+00:00

更新时间: 2025-06-10 17:30:09+00:00

在 Hugging Face 上查看

文件 (30)

.gitattributes
1_Pooling/config.json
README.md
config.json
config_sentence_transformers.json
data_config.json
model.safetensors
modules.json
onnx/model.onnx ONNX
onnx/model_O1.onnx ONNX
onnx/model_O2.onnx ONNX
onnx/model_O3.onnx ONNX
onnx/model_O4.onnx ONNX
onnx/model_qint8_arm64.onnx ONNX
onnx/model_qint8_avx512.onnx ONNX
onnx/model_qint8_avx512_vnni.onnx ONNX
onnx/model_quint8_avx2.onnx ONNX
openvino/openvino_model.bin
openvino/openvino_model.xml
openvino/openvino_model_qint8_quantized.bin
openvino/openvino_model_qint8_quantized.xml
pytorch_model.bin
rust_model.ot
sentence_bert_config.json
special_tokens_map.json
tf_model.h5
tokenizer.json
tokenizer_config.json
train_script.py
vocab.txt