Vietnamese Document Embedding
針對越南語的文檔嵌入模型,支持最長8096個標記的上下文,基於gte-multilingual訓練
下載量 77.61k
發布時間 : 8/15/2024
模型概述
這是一個專門為越南語訓練的長文本嵌入模型,能夠生成精確且上下文相關的句子嵌入,適用於越南語文本的語義相似度計算和文檔檢索等任務。
模型特點
長文本支持
支持最長8096個標記的上下文,適合處理越南語長文檔
多階段訓練
經過XNLI自然語言推理和STS語義相似性兩階段訓練,提升模型性能
先進損失函數
採用多負例排序損失、Matryoshka2dLoss和相似度損失進行訓練
模型能力
越南語文本嵌入
句子相似度計算
文檔檢索
語義特徵提取
使用案例
文本檢索
越南語文檔檢索
使用該模型為越南語文檔生成嵌入,實現高效的文檔檢索系統
語義分析
越南語句子相似度計算
計算越南語句子之間的語義相似度,用於問答系統或聊天機器人
在STS Benchmark上達到82.45的平均斯皮爾曼得分
🚀 越南語文檔嵌入模型
本項目提供的 vietnamese-document-embedding 是一個專門為越南語設計的文檔嵌入模型,其上下文長度可達 8096 個標記。該模型基於 gte-multilingual 構建,使用多負排名損失、Matryoshka2dLoss 和相似性損失進行訓練,能夠為越南語生成精確且與上下文相關的句子嵌入。
🚀 快速開始
使用此模型前,請確保你已經安裝了 sentence-transformers:
pip install -U sentence-transformers
然後,你可以按照以下方式使用該模型:
from sentence_transformers import SentenceTransformer
sentences = ["Hà Nội là thủ đô của Việt Nam", "Đà Nẵng là thành phố du lịch"]
model = SentenceTransformer('dangvantuan/vietnamese-document-embedding', trust_remote_code=True)
embeddings = model.encode(sentences)
print(embeddings)
✨ 主要特性
- 長文本處理能力:支持上下文長度達 8096 個標記的長文本嵌入。
- 針對性訓練:專門針對越南語進行訓練,能夠更好地處理越南語句子的語義。
- 多損失訓練:使用多負排名損失、Matryoshka2dLoss 和相似性損失進行訓練,提高模型的性能。
📦 安裝指南
使用此模型前,請確保你已經安裝了 sentence-transformers:
pip install -U sentence-transformers
💻 使用示例
基礎用法
from sentence_transformers import SentenceTransformer
sentences = ["Hà Nội là thủ đô của Việt Nam", "Đà Nẵng là thành phố du lịch"]
model = SentenceTransformer('dangvantuan/vietnamese-document-embedding', trust_remote_code=True)
embeddings = model.encode(sentences)
print(embeddings)
高級用法
from sentence_transformers import SentenceTransformer
from sentence_transformers.readers import InputExample
from datasets import load_dataset
def convert_dataset(dataset):
dataset_samples = []
for df in dataset:
score = float(df['score']) / 5.0 # Normalize score to range 0 ... 1
inp_example = InputExample(texts=[df['sentence1'], df['sentence2']], label=score)
dataset_samples.append(inp_example)
return dataset_samples
# Loading the dataset for evaluation
vi_sts = load_dataset("doanhieung/vi-stsbenchmark")["train"]
df_dev = vi_sts.filter(lambda example: example['split'] == 'dev')
df_test = vi_sts.filter(lambda example: example['split'] == 'test')
# Convert the dataset for evaluation
# For Dev set:
dev_samples = convert_dataset(df_dev)
val_evaluator = EmbeddingSimilarityEvaluator.from_input_examples(dev_samples, name='sts-dev')
val_evaluator(model, output_path="./")
# For Test set:
test_samples = convert_dataset(df_test)
test_evaluator = EmbeddingSimilarityEvaluator.from_input_examples(test_samples, name='sts-test')
test_evaluator(model, output_path="./")
📚 詳細文檔
模型描述
vietnamese-document-embedding 是一個針對越南語的文檔嵌入模型,其上下文長度可達 8096 個標記。該模型基於 gte-multilingual 構建,使用多負排名損失、Matryoshka2dLoss 和相似性損失進行訓練。
完整模型架構
SentenceTransformer(
(0): Transformer({'max_seq_length': 8192, 'do_lower_case': False}) with Transformer model: VietnameseModel
(1): Pooling({'word_embedding_dimension': 768, 'pooling_mode_cls_token': True, 'pooling_mode_mean_tokens': False, 'pooling_mode_max_tokens': False, 'pooling_mode_mean_sqrt_len_tokens': False, 'pooling_mode_weightedmean_tokens': False, 'pooling_mode_lasttoken': False, 'include_prompt': True})
(2): Normalize()
)
訓練和微調過程
該模型經過了嚴格的四階段訓練和微調過程,每個階段都旨在提高其為越南語生成精確且與上下文相關的句子嵌入的能力。以下是這些階段的概述:
階段 1:在數據集 XNLI 上訓練 NLI
- 數據集:XNLI-vn
- 方法:使用多負排名損失和 Matryoshka2dLoss 進行訓練。此階段重點提高模型辨別和排名句子語義細微差別的能力。
階段 2:在 STS 基準上進行語義文本相似性微調
- 數據集:STSB-vn
- 方法:使用配置了 'sentence-transformers' 庫的 Siamese BERT-Networks 針對語義文本相似性基準進行微調。此階段提高了模型在捕捉各種越南語文本語義相似性方面的精度。
評估
該模型可以在 Vienamese data of stsb 上進行如下評估:
from sentence_transformers import SentenceTransformer
from sentence_transformers.readers import InputExample
from datasets import load_dataset
def convert_dataset(dataset):
dataset_samples = []
for df in dataset:
score = float(df['score']) / 5.0 # Normalize score to range 0 ... 1
inp_example = InputExample(texts=[df['sentence1'], df['sentence2']], label=score)
dataset_samples.append(inp_example)
return dataset_samples
# Loading the dataset for evaluation
vi_sts = load_dataset("doanhieung/vi-stsbenchmark")["train"]
df_dev = vi_sts.filter(lambda example: example['split'] == 'dev')
df_test = vi_sts.filter(lambda example: example['split'] == 'test')
# Convert the dataset for evaluation
# For Dev set:
dev_samples = convert_dataset(df_dev)
val_evaluator = EmbeddingSimilarityEvaluator.from_input_examples(dev_samples, name='sts-dev')
val_evaluator(model, output_path="./")
# For Test set:
test_samples = convert_dataset(df_test)
test_evaluator = EmbeddingSimilarityEvaluator.from_input_examples(test_samples, name='sts-test')
test_evaluator(model, output_path="./")
語義文本相似性 STS 基準 所有數據集的指標
Spearman 分數
模型 | [STSB] | [STS12] | [STS13] | [STS14] | [STS15] | [STS16] | [SICK] | 平均值 |
---|---|---|---|---|---|---|---|---|
dangvantuan/vietnamese-embedding | 84.84 | 79.04 | 85.30 | 81.38 | 87.06 | 79.95 | 79.58 | 82.45 |
dangvantuan/vietnamese-embedding-LongContext | 85.25 | 75.77 | 83.82 | 81.69 | 88.48 | 81.5 | 78.2 | 82.10 |
🔧 技術細節
該模型基於 gte-multilingual 構建,使用多負排名損失、Matryoshka2dLoss 和相似性損失進行訓練。模型的完整架構包括一個 Transformer 層、一個池化層和一個歸一化層。在訓練和微調過程中,模型經過了嚴格的四階段訓練,每個階段都針對越南語的特點進行了優化。
📄 許可證
本項目採用 Apache-2.0 許可證。
引用
@article{reimers2019sentence,
title={Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks},
author={Nils Reimers, Iryna Gurevych},
journal={https://arxiv.org/abs/1908.10084},
year={2019}
}
@article{zhang2024mgte,
title={mGTE: Generalized Long-Context Text Representation and Reranking Models for Multilingual Text Retrieval},
author={Zhang, Xin and Zhang, Yanzhao and Long, Dingkun and Xie, Wen and Dai, Ziqi and Tang, Jialong and Lin, Huan and Yang, Baosong and Xie, Pengjun and Huang, Fei and others},
journal={arXiv preprint arXiv:2407.19669},
year={2024}
}
@article{li2023towards,
title={Towards general text embeddings with multi-stage contrastive learning},
author={Li, Zehan and Zhang, Xin and Zhang, Yanzhao and Long, Dingkun and Xie, Pengjun and Zhang, Meishan},
journal={arXiv preprint arXiv:2308.03281},
year={2023}
}
@article{li20242d,
title={2d matryoshka sentence embeddings},
author={Li, Xianming and Li, Zongxi and Li, Jing and Xie, Haoran and Li, Qing},
journal={arXiv preprint arXiv:2402.14776},
year={2024}
}
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