Acge Text Embedding
A
Acge Text Embedding
由aspire開發
ACGE 文本嵌入模型是一個用於生成文本嵌入向量的模型,支持多種自然語言處理任務。
下載量 27.12k
發布時間 : 3/9/2024
模型概述
該模型主要用於生成高質量的文本嵌入向量,適用於語義相似度計算、文本分類、聚類、檢索和重排序等任務。
模型特點
多任務支持
支持多種自然語言處理任務,包括語義相似度計算、文本分類、聚類、檢索和重排序。
高性能
在多個基準數據集上表現出色,尤其是在中文文本處理任務中。
模型能力
文本嵌入生成
語義相似度計算
文本分類
文本聚類
文本檢索
文本重排序
使用案例
語義相似度計算
句子相似度計算
計算兩個句子的語義相似度,適用於問答系統、推薦系統等場景。
在 AFQMC 數據集上,餘弦相似度皮爾遜值為 54.03。
文本分類
亞馬遜評論分類
對亞馬遜商品評論進行情感分類。
準確率為 48.54%,F1 分數為 46.60%。
文本聚類
句子聚類
將語義相似的句子聚類在一起。
在 CLSClusteringP2P 數據集上,V測量值為 47.08%。
文本檢索
醫療問答檢索
在醫療問答數據集中檢索相關答案。
在 Cmedqa 檢索數據集上,MAP@10 為 40.00%。
文本重排序
醫療問答重排序
對檢索結果進行重新排序以提高相關性。
在 CMedQAv1 數據集上,MAP 為 88.66%。
🚀 acge模型
acge模型是由合合信息技術團隊研發的一款通用文本編碼模型,屬於可變長度的向量化模型。合合信息是行業領先的人工智能及大數據科技企業,致力於通過智能文字識別及商業大數據領域的核心技術、C端和B端產品以及行業解決方案為全球企業和個人用戶提供創新的數字化、智能化服務。該模型的對外技術試用平臺為TextIn,其github開源鏈接為github。
若您有技術交流需求,請聯繫yanhui_he@intsig.net;若您有商務合作意向,請聯繫simon_liu@intsig.net。您還可以點擊圖片,掃描二維碼加入我們的微信社群。如果您想加入合合信息,從事“文檔解析”“文檔檢索”“文檔預研”相關工作,可以將簡歷投遞至min_du@intsig.net,也可直接添加HR微信詳細瞭解崗位內容。
acge模型採用了Matryoshka Representation Learning技術,如下圖所示:
建議使用的維度為1024或者1792。
屬性 | 詳情 |
---|---|
模型名稱 | acge-text-embedding |
模型大小 (GB) | 0.65 |
維度 | [1024, 1792] |
序列長度 | 1024 |
語言 | 中文 |
檢索是否需要指令 | 否 |
✨ 主要特性
- 通用性強:作為通用的文本編碼模型,能夠處理多種文本相關任務。
- 可變長度:支持可變長度的文本向量化,具有更好的靈活性。
- 技術先進:採用了Matryoshka Representation Learning技術,提升了模型性能。
📦 安裝指南
文檔未提及安裝相關內容,故跳過此章節。
💻 使用示例
基礎用法
在sentence-transformer
庫中的基本使用方法:
from sentence_transformers import SentenceTransformer
sentences = ["數據1", "數據2"]
model = SentenceTransformer('acge_text_embedding')
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)
高級用法
在sentence-transformer
庫中選取不同維度的使用方法:
from sklearn.preprocessing import normalize
from sentence_transformers import SentenceTransformer
sentences = ["數據1", "數據2"]
model = SentenceTransformer('acge_text_embedding')
embeddings = model.encode(sentences, normalize_embeddings=False)
matryoshka_dim = 1024
embeddings = embeddings[..., :matryoshka_dim] # Shrink the embedding dimensions
embeddings = normalize(embeddings, norm="l2", axis=1)
print(embeddings.shape)
# => (2, 1024)
📚 詳細文檔
指標評估
C-MTEB排行榜(中文)
測試時,由於數據的隨機性、顯卡以及推理的數據類型不同,每次推理的結果會存在差異。總共進行了4次測試,使用了不同的顯卡(A10、A100)和不同的數據類型,測試結果存放在result
文件夾中。最終選取了精度最低的一次測試作為最終精度測試。根據infgrad的建議,選取不同的輸入長度進行測試,當序列長度為512時測試效果最佳。
模型名稱 | GPU | 張量類型 | 模型大小 (GB) | 維度 | 序列長度 | 平均得分 (35) | 分類得分 (9) | 聚類得分 (4) | 成對分類得分 (2) | 重排序得分 (4) | 檢索得分 (8) | 語義文本相似度得分 (8) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
acge_text_embedding | NVIDIA TESLA A10 | bfloat16 | 0.65 | 1792 | 1024 | 68.91 | 72.76 | 58.22 | 87.82 | 67.67 | 72.48 | 62.24 |
acge_text_embedding | NVIDIA TESLA A100 | bfloat16 | 0.65 | 1792 | 1024 | 68.91 | 72.77 | 58.35 | 87.82 | 67.53 | 72.48 | 62.24 |
acge_text_embedding | NVIDIA TESLA A100 | float16 | 0.65 | 1792 | 1024 | 68.99 | 72.76 | 58.68 | 87.84 | 67.89 | 72.49 | 62.24 |
acge_text_embedding | NVIDIA TESLA A100 | float32 | 0.65 | 1792 | 1024 | 68.98 | 72.76 | 58.58 | 87.83 | 67.91 | 72.49 | 62.24 |
acge_text_embedding | NVIDIA TESLA A100 | float16 | 0.65 | 1792 | 768 | 68.95 | 72.76 | 58.68 | 87.84 | 67.86 | 72.48 | 62.07 |
acge_text_embedding | NVIDIA TESLA A100 | float16 | 0.65 | 1792 | 512 | 69.07 | 72.75 | 58.7 | 87.84 | 67.99 | 72.93 | 62.09 |
復現結果
C-MTEB:
import torch
import argparse
import functools
from C_MTEB.tasks import *
from typing import List, Dict
from sentence_transformers import SentenceTransformer
from mteb import MTEB, DRESModel
class RetrievalModel(DRESModel):
def __init__(self, encoder, **kwargs):
self.encoder = encoder
def encode_queries(self, queries: List[str], **kwargs) -> np.ndarray:
input_texts = ['{}'.format(q) for q in queries]
return self._do_encode(input_texts)
def encode_corpus(self, corpus: List[Dict[str, str]], **kwargs) -> np.ndarray:
input_texts = ['{} {}'.format(doc.get('title', ''), doc['text']).strip() for doc in corpus]
input_texts = ['{}'.format(t) for t in input_texts]
return self._do_encode(input_texts)
@torch.no_grad()
def _do_encode(self, input_texts: List[str]) -> np.ndarray:
return self.encoder.encode(
sentences=input_texts,
batch_size=512,
normalize_embeddings=True,
convert_to_numpy=True
)
def get_args():
parser = argparse.ArgumentParser()
parser.add_argument('--model_name_or_path', default="acge_text_embedding", type=str)
parser.add_argument('--task_type', default=None, type=str)
parser.add_argument('--pooling_method', default='cls', type=str)
parser.add_argument('--output_dir', default='zh_results',
type=str, help='output directory')
parser.add_argument('--max_len', default=1024, type=int, help='max length')
return parser.parse_args()
if __name__ == '__main__':
args = get_args()
encoder = SentenceTransformer(args.model_name_or_path).half()
encoder.encode = functools.partial(encoder.encode, normalize_embeddings=True)
encoder.max_seq_length = int(args.max_len)
task_names = [t.description["name"] for t in MTEB(task_types=args.task_type,
task_langs=['zh', 'zh-CN']).tasks]
TASKS_WITH_PROMPTS = ["T2Retrieval", "MMarcoRetrieval", "DuRetrieval", "CovidRetrieval", "CmedqaRetrieval",
"EcomRetrieval", "MedicalRetrieval", "VideoRetrieval"]
for task in task_names:
evaluation = MTEB(tasks=[task], task_langs=['zh', 'zh-CN'])
if task in TASKS_WITH_PROMPTS:
evaluation.run(RetrievalModel(encoder), output_folder=args.output_dir, overwrite_results=False)
else:
evaluation.run(encoder, output_folder=args.output_dir, overwrite_results=False)
🔧 技術細節
文檔未提及技術實現細節相關內容,故跳過此章節。
📄 許可證
文檔未提及許可證信息,故跳過此章節。
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