🚀 ベトナム語文書埋め込みモデル
vietnamese-document-embedding は、ベトナム語用の文書埋め込みモデルで、コンテキスト長は最大8096トークンまで対応しています。このモデルは、ベトナム語に特化した長文埋め込みモデルで、gte-multilingual をベースに、Multi-Negative Ranking Loss、Matryoshka2dLoss、SimilarityLossを用いて学習されています。
📚 ドキュメント
モデルの詳細
vietnamese-document-embedding は、ベトナム語用の文書埋め込みモデルで、コンテキスト長は最大8096トークンまで対応しています。このモデルは、ベトナム語に特化した長文埋め込みモデルで、gte-multilingual をベースに、Multi-Negative Ranking Loss、Matryoshka2dLoss、SimilarityLossを用いて学習されています。
完全なモデルアーキテクチャ
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()
)
学習と微調整のプロセス
このモデルは、ベトナム語の文埋め込みを正確かつ文脈に沿って生成する能力を高めるために、厳格な4段階の学習と微調整のプロセスを経ています。以下に各段階の概要を示します。
段階1: データセットXNLIでのNLI学習
- データセット: XNLI-vn
- 方法: Multi-Negative Ranking LossとMatryoshka2dLossを用いた学習。この段階では、文の意味の微妙な違いを識別してランク付けするモデルの能力を向上させることに焦点を当てています。
段階2: STSベンチマークでの意味的テキスト類似性の微調整
- データセット: STSB-vn
- 方法: 'sentence-transformers'ライブラリで構成されたSiamese BERT-Networksを使用して、意味的テキスト類似性ベンチマークに特化した微調整。この段階では、様々なタイプのベトナム語テキストの意味的類似性を捉えるモデルの精度を磨きます。
📦 インストール
このモデルを使用するには、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
inp_example = InputExample(texts=[df['sentence1'], df['sentence2']], label=score)
dataset_samples.append(inp_example)
return dataset_samples
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')
dev_samples = convert_dataset(df_dev)
val_evaluator = EmbeddingSimilarityEvaluator.from_input_examples(dev_samples, name='sts-dev')
val_evaluator(model, output_path="./")
test_samples = convert_dataset(df_test)
test_evaluator = EmbeddingSimilarityEvaluator.from_input_examples(test_samples, name='sts-test')
test_evaluator(model, output_path="./")
🔧 技術詳細
Spearmanスコア
📄 ライセンス
このモデルは、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}
}