标签:
- 句子转换器
- 句子嵌入模型
- 句子相似度
语言:
- 英文
许可证: mit
E5-small-无监督版本
此模型与e5-small类似,但未经过监督微调。
通过弱监督对比预训练生成的文本嵌入。
王亮、杨楠、黄晓龙、焦彬星、杨林君、蒋大新、Rangan Majumder、韦福如,arXiv 2022
该模型包含12层网络结构,嵌入维度为384。
使用示例
以下示例展示如何对MS-MARCO段落排序数据集中的查询和段落进行编码:
import torch.nn.functional as F
from torch import Tensor
from transformers import AutoTokenizer, AutoModel
def average_pool(last_hidden_states: Tensor, attention_mask: Tensor) -> Tensor:
last_hidden = last_hidden_states.masked_fill(~attention_mask[..., None].bool(), 0.0)
return last_hidden.sum(dim=1) / attention_mask.sum(dim=1)[..., None]
input_texts = ['查询: 女性每日蛋白质摄入量',
'查询: 峰会定义',
"段落: 根据CDC指南,19至70岁女性日均蛋白质需求为46克。但如孕期或马拉松训练期需增量摄入。详见下方每日蛋白质摄入量表。",
"段落: 峰会定义(英语学习者版):1 山脉最高点 2 最高级别 3 政府首脑会议"]
tokenizer = AutoTokenizer.from_pretrained('intfloat/e5-small-unsupervised')
model = AutoModel.from_pretrained('intfloat/e5-small-unsupervised')
batch_dict = tokenizer(input_texts, max_length=512, padding=True, truncation=True, return_tensors='pt')
outputs = model(**batch_dict)
embeddings = average_pool(outputs.last_hidden_state, batch_dict['attention_mask'])
embeddings = F.normalize(embeddings, p=2, dim=1)
scores = (embeddings[:2] @ embeddings[2:].T) * 100
print(scores.tolist())
训练细节
详见论文https://arxiv.org/pdf/2212.03533.pdf
基准评估
参考unilm/e5复现BEIR和MTEB评估结果
Sentence Transformers支持
使用示例:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer('intfloat/e5-small-unsupervised')
input_texts = [
'查询: 女性蛋白质摄入量',
'查询: 峰会定义',
"段落: CDC建议19-70岁女性日均蛋白质摄入46克,孕期/马拉松训练期需增量。",
"段落: 峰会定义:1山脉顶点 2最高级别 3政府首脑会议"
]
embeddings = model.encode(input_texts, normalize_embeddings=True)
环境要求:pip install sentence_transformers~=2.2.2
贡献者:michaelfeil
常见问题
1. 必须添加"query: "和"passage: "前缀吗?
必须添加,否则会导致性能下降。使用原则:
- 非对称任务(如开放QA段落检索)需对应使用前缀
- 对称任务(如语义相似度)统一使用"query: "前缀
- 特征提取场景(如线性分类/聚类)使用"query: "前缀
2. 复现结果与模型卡存在细微差异?
因transformers
和pytorch
版本差异可能导致微小波动
引用文献
若研究有帮助,请引用:
@article{wang2022text,
title={Text Embeddings by Weakly-Supervised Contrastive Pre-training},
author={Wang, Liang and Yang, Nan and Huang, Xiaolong and Jiao, Binxing and Yang, Linjun and Jiang, Daxin and Majumder, Rangan and Wei, Furu},
journal={arXiv preprint arXiv:2212.03533},
year={2022}
}
局限性
仅支持英文文本,长文本会被截断至512个token