Stella Base Zh V2
模型概述
該模型主要用於中文文本的語義相似度計算、特徵提取和多任務評估,適用於金融問答、自然語言推理等多種場景。
模型特點
多任務評估支持
支持多種中文文本相似度任務和評估基準,包括螞蟻金融問答、ATEC、BQ等。
高性能語義相似度計算
在多個數據集上表現出色,特別是在金融問答和自然語言推理任務中。
多種距離度量支持
支持餘弦相似度、歐氏距離和曼哈頓距離等多種相似度度量方式。
模型能力
語義文本相似度計算
文本特徵提取
文本對分類
文本聚類
檢索任務
重排序任務
使用案例
金融領域
金融問答系統
用於金融領域的問答系統,計算問題與答案之間的語義相似度。
在螞蟻金融問答數據集上表現良好
醫療領域
醫療問答檢索
用於醫療領域的問答檢索系統。
在CMedQA數據集上平均準確率達到84.69%
電商領域
商品評論分類
用於電商平臺的商品評論分類。
在亞馬遜中文評論分類任務中準確率為39.64%
🚀 stella模型
stella是一個通用的文本編碼模型,可用於文本編碼、檢索和語義匹配等任務。它有多種版本,能適應不同的應用場景和需求。
🚀 快速開始
安裝依賴
運行以下代碼前,請確保你已經安裝了必要的庫:
pip install torch numpy mteb sentence-transformers transformers sklearn
代碼示例
以下是使用stella-base-zh-v2
模型進行文本編碼和相似度計算的示例代碼:
# 對於短對短數據集,下面是通用的使用方式
from sentence_transformers import SentenceTransformer
sentences = ["數據1", "數據2"]
model = SentenceTransformer('infgrad/stella-base-zh-v2')
print(model.max_seq_length)
embeddings_1 = model.encode(sentences, normalize_embeddings=True)
embeddings_2 = model.encode(sentences, normalize_embeddings=True)
similarity = embeddings_1 @ embeddings_2.T
print(similarity)
你也可以直接使用transformers
庫:
from transformers import AutoModel, AutoTokenizer
from sklearn.preprocessing import normalize
model = AutoModel.from_pretrained('infgrad/stella-base-zh-v2')
tokenizer = AutoTokenizer.from_pretrained('infgrad/stella-base-zh-v2')
sentences = ["數據1", "數據ABCDEFGH"]
batch_data = tokenizer(
batch_text_or_text_pairs=sentences,
padding="longest",
return_tensors="pt",
max_length=1024,
truncation=True,
)
attention_mask = batch_data["attention_mask"]
model_output = model(**batch_data)
last_hidden = model_output.last_hidden_state.masked_fill(~attention_mask[..., None].bool(), 0.0)
vectors = last_hidden.sum(dim=1) / attention_mask.sum(dim=1)[..., None]
vectors = normalize(vectors, norm="l2", axis=1, )
print(vectors.shape) # 2,768
✨ 主要特性
- 多種模型選擇:提供了
stella-large-zh-v2
、stella-base-zh-v2
、stella-large-zh
和stella-base-zh
等多種模型,以滿足不同的需求。 - 無需前綴文本:
stella-base-zh-v2
和stella-large-zh-v2
模型使用簡單,在任何使用場景中都不需要加前綴文本。 - 支持向量可變維度:部分模型支持向量可變維度,如
stella-mrl-large-zh-v3.5-1792d
模型。 - 中英雙語支持:部分模型支持中英雙語,如puff系列模型。
📦 安裝指南
使用sentence-transformers
庫加載模型:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer('infgrad/stella-base-zh-v2')
💻 使用示例
基礎用法
from sentence_transformers import SentenceTransformer
sentences = ["這是一個示例句子", "這是另一個示例句子"]
model = SentenceTransformer('infgrad/stella-base-zh-v2')
embeddings = model.encode(sentences)
print(embeddings)
高級用法
from transformers import AutoModel, AutoTokenizer
from sklearn.preprocessing import normalize
import torch
model = AutoModel.from_pretrained('infgrad/stella-base-zh-v2')
tokenizer = AutoTokenizer.from_pretrained('infgrad/stella-base-zh-v2')
sentences = ["高級用法示例句子", "用於演示更復雜的場景"]
batch_data = tokenizer(
batch_text_or_text_pairs=sentences,
padding="longest",
return_tensors="pt",
max_length=1024,
truncation=True,
)
attention_mask = batch_data["attention_mask"]
model_output = model(**batch_data)
last_hidden = model_output.last_hidden_state.masked_fill(~attention_mask[..., None].bool(), 0.0)
vectors = last_hidden.sum(dim=1) / attention_mask.sum(dim=1)[..., None]
vectors = normalize(vectors, norm="l2", axis=1, )
print(vectors.shape)
📚 詳細文檔
模型信息
屬性 | 詳情 |
---|---|
模型類型 | 通用的文本編碼模型 |
支持模型 | stella-large-zh-v2、stella-base-zh-v2、stella-large-zh、stella-base-zh等 |
訓練數據 | 開源訓練數據(wudao_base_200GB、m3e和simclue),並使用LLM在通用語料庫上構造了一批(question, paragraph)和(sentence, paragraph)數據 |
損失函數 | 對比學習損失函數、帶有難負例的對比學習損失函數(基於bm25和向量難負例)、EWC(Elastic Weights Consolidation)、cosent loss |
模型權重初始化 | stella-base-zh和stella-large-zh分別以piccolo-base-zh和piccolo-large-zh作為基礎模型,512 - 1024的位置嵌入使用層次分解位置編碼的初始化策略 |
訓練策略 | 每種類型的數據使用一個迭代器,分別計算損失 |
模型參數
模型名稱 | 模型大小 (GB) | 維度 | 序列長度 | 語言 | 檢索是否需要指令? |
---|---|---|---|---|---|
stella-large-zh-v2 | 0.65 | 1024 | 1024 | 中文 | 否 |
stella-base-zh-v2 | 0.2 | 768 | 1024 | 中文 | 否 |
stella-large-zh | 0.65 | 1024 | 1024 | 中文 | 是 |
stella-base-zh | 0.2 | 768 | 1024 | 中文 | 是 |
C-MTEB排行榜(中文)
模型名稱 | 模型大小 (GB) | 維度 | 序列長度 | 平均 (35) | 分類 (9) | 聚類 (4) | 成對分類 (2) | 重排 (4) | 檢索 (8) | STS (8) |
---|---|---|---|---|---|---|---|---|---|---|
stella-large-zh-v2 | 0.65 | 1024 | 1024 | 65.13 | 69.05 | 49.16 | 82.68 | 66.41 | 70.14 | 58.66 |
stella-base-zh-v2 | 0.2 | 768 | 1024 | 64.36 | 68.29 | 49.4 | 79.95 | 66.1 | 70.08 | 56.92 |
stella-large-zh | 0.65 | 1024 | 1024 | 64.54 | 67.62 | 48.65 | 78.72 | 65.98 | 71.02 | 58.3 |
stella-base-zh | 0.2 | 768 | 1024 | 64.16 | 67.77 | 48.7 | 76.09 | 66.95 | 71.07 | 56.54 |
長文本評測
現有數據集存在長度大於512的文本過少,且即便大於512,對於檢索而言也只需要前512的文本內容的問題,導致無法準確評估模型的長文本編碼能力。為了解決這個問題,整理了6份長文本測試集:
- CMRC2018,通用百科
- CAIL,法律閱讀理解
- DRCD,繁體百科,已轉簡體
- Military,軍工問答
- Squad,英文閱讀理解,已轉中文
- Multifieldqa_zh,清華的大模型長文本理解能力評測數據[9]
除了Military數據集,提供了其他5個測試數據的下載地址:https://drive.google.com/file/d/1WC6EWaCbVgz-vPMDFH4TwAMkLyh5WNcN/view?usp=sharing
評測指標為Recall@5,結果如下:
數據集 | piccolo-base-zh | piccolo-large-zh | bge-base-zh | bge-large-zh | stella-base-zh | stella-large-zh |
---|---|---|---|---|---|---|
CMRC2018 | 94.34 | 93.82 | 91.56 | 93.12 | 96.08 | 95.56 |
CAIL | 28.04 | 33.64 | 31.22 | 33.94 | 34.62 | 37.18 |
DRCD | 78.25 | 77.9 | 78.34 | 80.26 | 86.14 | 84.58 |
Military | 76.61 | 73.06 | 75.65 | 75.81 | 83.71 | 80.48 |
Squad | 91.21 | 86.61 | 87.87 | 90.38 | 93.31 | 91.21 |
Multifieldqa_zh | 81.41 | 83.92 | 83.92 | 83.42 | 79.9 | 80.4 |
Average | 74.98 | 74.83 | 74.76 | 76.15 | 78.96 | 78.24 |
新聞動態
- [2024-04-06] 開源puff系列模型,專門針對檢索和語義匹配任務,更多的考慮泛化性和私有通用測試集效果,向量維度可變,中英雙語。
- [2024-02-27] 開源stella-mrl-large-zh-v3.5-1792d模型,支持向量可變維度。
- [2024-02-17] 開源stella v3系列、dialogue編碼模型和相關訓練數據。
- [2023-10-19] 開源stella-base-en-v2,使用簡單,不需要任何前綴文本。
- [2023-10-12] 開源stella-base-zh-v2和stella-large-zh-v2,效果更好且使用簡單,不需要任何前綴文本。
- [2023-09-11] 開源stella-base-zh和stella-large-zh
歡迎去本人主頁查看最新模型,並提出您的寶貴意見!
🔧 技術細節
訓練環境
- 硬件:單卡A100 - 80GB
- 環境:torch1.13.*;transformers-trainer + deepspeed + gradient-checkpointing
訓練參數
- 學習率:1e - 6
- batch_size:base模型為1024,額外增加20%的難負例;large模型為768,額外增加20%的難負例
- 數據量:第一版模型約100萬,其中用LLM構造的數據約有200K。LLM模型大小為13b。v2系列模型到了2000萬訓練數據。
📄 許可證
文檔中未提及許可證相關信息。
📋 ToDoList
- 評測的穩定性:評測過程中發現Clustering任務會和官方的結果不一致,大約有±0.0x的小差距,原因是聚類代碼沒有設置random_seed,差距可以忽略不計,不影響評測結論。
- 更高質量的長文本訓練和測試數據:訓練數據多是用13b模型構造的,肯定會存在噪聲。測試數據基本都是從mrc數據整理來的,所以問題都是factoid類型,不符合真實分佈。
- OOD的性能:雖然近期出現了很多向量編碼模型,但是對於不是那麼通用的domain,這一眾模型包括stella、openai和cohere,它們的效果均比不上BM25。
📖 參考資料
- https://www.scidb.cn/en/detail?dataSetId=c6a3fe684227415a9db8e21bac4a15ab
- https://github.com/wangyuxinwhy/uniem
- https://github.com/CLUEbenchmark/SimCLUE
- https://arxiv.org/abs/1612.00796
- https://kexue.fm/archives/8847
- https://huggingface.co/sensenova/piccolo-base-zh
- https://kexue.fm/archives/7947
- https://github.com/FlagOpen/FlagEmbedding
- https://github.com/THUDM/LongBench
⚠️ 重要提示
因為長文本評測數據數量稀少,所以構造時也使用了train部分,如果自行評測,請注意模型的訓練數據以免數據洩露。
💡 使用建議
stella-base-zh和stella-large-zh用法和piccolo完全一致,即在檢索重排任務上給query和passage加上
查詢:
和結果:
。對於短短匹配不需要做任何操作。stella-base-zh-v2和stella-large-zh-v2使用簡單,任何使用場景中都不需要加前綴文本。
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