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