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