E5 Base Unsupervised
模型简介
该模型通过弱监督对比预训练获取文本嵌入,主要用于句子相似度计算和句子转换任务。
模型特点
弱监督对比预训练
采用弱监督对比学习方法进行预训练,提升文本嵌入质量。
前缀区分输入类型
通过'query:'和'passage:'前缀区分不同输入类型,优化检索任务表现。
归一化嵌入向量
输出经过归一化处理的嵌入向量,便于相似度计算。
模型能力
文本嵌入生成
句子相似度计算
信息检索
使用案例
信息检索
问答系统段落检索
用于检索与用户查询最相关的段落
能有效匹配查询与相关段落
语义分析
句子相似度计算
计算两个句子之间的语义相似度
提供归一化的相似度分数
🚀 E5-base-无监督模型
本模型与 e5-base 类似,但未经过有监督的微调。
通过弱监督对比预训练生成文本嵌入。 梁旺、杨楠、黄晓龙、焦秉兴、杨林军、蒋大新、兰甘·马朱姆德、魏富如,arXiv 2022
该模型有 12 层,嵌入维度为 768。
🚀 快速开始
本模型可用于对文本进行编码,下面将详细介绍其使用方法。
✨ 主要特性
- 与 e5-base 类似,但未经过有监督的微调。
- 模型有 12 层,嵌入维度为 768。
💻 使用示例
基础用法
以下是一个对 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]
# Each input text should start with "query: " or "passage: ".
# For tasks other than retrieval, you can simply use the "query: " prefix.
input_texts = ['query: how much protein should a female eat',
'query: summit define',
"passage: As a general guideline, the CDC's average requirement of protein for women ages 19 to 70 is 46 grams per day. But, as you can see from this chart, you'll need to increase that if you're expecting or training for a marathon. Check out the chart below to see how much protein you should be eating each day.",
"passage: 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."]
tokenizer = AutoTokenizer.from_pretrained('intfloat/e5-base-unsupervised')
model = AutoModel.from_pretrained('intfloat/e5-base-unsupervised')
# Tokenize the input texts
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'])
# normalize embeddings
embeddings = F.normalize(embeddings, p=2, dim=1)
scores = (embeddings[:2] @ embeddings[2:].T) * 100
print(scores.tolist())
高级用法
以下是使用 sentence_transformers
库的示例:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer('intfloat/e5-base-unsupervised')
input_texts = [
'query: how much protein should a female eat',
'query: summit define',
"passage: As a general guideline, the CDC's average requirement of protein for women ages 19 to 70 is 46 grams per day. But, as you can see from this chart, you'll need to increase that if you're expecting or training for a marathon. Check out the chart below to see how much protein you should be eating each day.",
"passage: 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."
]
embeddings = model.encode(input_texts, normalize_embeddings=True)
包依赖:
pip install sentence_transformers~=2.2.2
📚 详细文档
训练详情
请参考我们的论文 https://arxiv.org/pdf/2212.03533.pdf。
基准评估
请查看 unilm/e5 以复现该模型在 BEIR 和 MTEB 基准 上的评估结果。
常见问题解答
⚠️ 重要提示
以下是使用该模型时的常见问题解答。
💡 使用建议
在使用模型前,建议仔细阅读常见问题解答部分,以避免常见错误。
1. 是否需要在输入文本前添加 "query: " 和 "passage: " 前缀? 是的,模型是按照这种方式进行训练的,否则模型性能会下降。 以下是一些使用建议:
- 对于非对称任务,如开放问答中的段落检索、即席信息检索,应分别使用 "query: " 和 "passage: " 前缀。
- 对于对称任务,如语义相似度、释义检索,使用 "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 个词元。
📄 许可证
本模型采用 MIT 许可证。
贡献者:michaelfeil
Jina Embeddings V3
Jina Embeddings V3 是一个多语言句子嵌入模型,支持超过100种语言,专注于句子相似度和特征提取任务。
文本嵌入
Transformers 支持多种语言

J
jinaai
3.7M
911
Ms Marco MiniLM L6 V2
Apache-2.0
基于MS Marco段落排序任务训练的交叉编码器模型,用于信息检索中的查询-段落相关性评分
文本嵌入 英语
M
cross-encoder
2.5M
86
Opensearch Neural Sparse Encoding Doc V2 Distill
Apache-2.0
基于蒸馏技术的稀疏检索模型,专为OpenSearch优化,支持免推理文档编码,在搜索相关性和效率上优于V1版本
文本嵌入
Transformers 英语

O
opensearch-project
1.8M
7
Sapbert From PubMedBERT Fulltext
Apache-2.0
基于PubMedBERT的生物医学实体表征模型,通过自对齐预训练优化语义关系捕捉
文本嵌入 英语
S
cambridgeltl
1.7M
49
Gte Large
MIT
GTE-Large 是一个强大的句子转换器模型,专注于句子相似度和文本嵌入任务,在多个基准测试中表现出色。
文本嵌入 英语
G
thenlper
1.5M
278
Gte Base En V1.5
Apache-2.0
GTE-base-en-v1.5 是一个英文句子转换器模型,专注于句子相似度任务,在多个文本嵌入基准测试中表现优异。
文本嵌入
Transformers 支持多种语言

G
Alibaba-NLP
1.5M
63
Gte Multilingual Base
Apache-2.0
GTE Multilingual Base 是一个多语言的句子嵌入模型,支持超过50种语言,适用于句子相似度计算等任务。
文本嵌入
Transformers 支持多种语言

G
Alibaba-NLP
1.2M
246
Polybert
polyBERT是一个化学语言模型,旨在实现完全由机器驱动的超快聚合物信息学。它将PSMILES字符串映射为600维密集指纹,以数值形式表示聚合物化学结构。
文本嵌入
Transformers

P
kuelumbus
1.0M
5
Bert Base Turkish Cased Mean Nli Stsb Tr
Apache-2.0
基于土耳其语BERT的句子嵌入模型,专为语义相似度任务优化
文本嵌入
Transformers 其他

B
emrecan
1.0M
40
GIST Small Embedding V0
MIT
基于BAAI/bge-small-en-v1.5模型微调的文本嵌入模型,通过MEDI数据集与MTEB分类任务数据集训练,优化了检索任务的查询编码能力。
文本嵌入
Safetensors 英语
G
avsolatorio
945.68k
29
精选推荐AI模型
Llama 3 Typhoon V1.5x 8b Instruct
专为泰语设计的80亿参数指令模型,性能媲美GPT-3.5-turbo,优化了应用场景、检索增强生成、受限生成和推理任务
大型语言模型
Transformers 支持多种语言

L
scb10x
3,269
16
Cadet Tiny
Openrail
Cadet-Tiny是一个基于SODA数据集训练的超小型对话模型,专为边缘设备推理设计,体积仅为Cosmo-3B模型的2%左右。
对话系统
Transformers 英语

C
ToddGoldfarb
2,691
6
Roberta Base Chinese Extractive Qa
基于RoBERTa架构的中文抽取式问答模型,适用于从给定文本中提取答案的任务。
问答系统 中文
R
uer
2,694
98