🚀 MMLW-retrieval-e5-base
MMLW (muszę mieć lepszą wiadomość) は、ポーランド語用のニューラルテキストエンコーダーです。このモデルは、情報検索タスクに最適化されています。クエリとパッセージを768次元のベクトルに変換することができます。
🚀 クイックスタート
このモデルは、情報検索タスクに最適化されており、クエリとパッセージを768次元のベクトルに変換することができます。以下に、使い方の基本的な流れを示します。
✨ 主な機能
- ポーランド語のテキストをエンコードし、768次元のベクトルに変換することができます。
- 情報検索タスクに最適化されています。
- クエリとパッセージの類似度を計算することができます。
📦 インストール
このモデルは、sentence-transformers
ライブラリを使用して利用することができます。以下のコマンドでインストールできます。
pip install sentence-transformers
💻 使用例
基本的な使用法
from sentence_transformers import SentenceTransformer
from sentence_transformers.util import cos_sim
query_prefix = "query: "
answer_prefix = "passage: "
queries = [query_prefix + "Jak dożyć 100 lat?"]
answers = [
answer_prefix + "Trzeba zdrowo się odżywiać i uprawiać sport.",
answer_prefix + "Trzeba pić alkohol, imprezować i jeździć szybkimi autami.",
answer_prefix + "Gdy trwała kampania politycy zapewniali, że rozprawią się z zakazem niedzielnego handlu."
]
model = SentenceTransformer("sdadas/mmlw-retrieval-e5-base")
queries_emb = model.encode(queries, convert_to_tensor=True, show_progress_bar=False)
answers_emb = model.encode(answers, convert_to_tensor=True, show_progress_bar=False)
best_answer = cos_sim(queries_emb, answers_emb).argmax().item()
print(answers[best_answer])
高度な使用法
from sentence_transformers import SentenceTransformer
from sentence_transformers.util import cos_sim
query_prefix = "query: "
answer_prefix = "passage: "
queries = [query_prefix + "Jak dożyć 100 lat?"]
answers = [
answer_prefix + "Trzeba zdrowo się odżywiać i uprawiać sport.",
answer_prefix + "Trzeba pić alkohol, imprezować i jeździć szybkimi autami.",
answer_prefix + "Gdy trwała kampania politycy zapewniali, że rozprawią się z zakazem niedzielnego handlu."
]
model = SentenceTransformer("sdadas/mmlw-retrieval-e5-base")
queries_emb = model.encode(queries, convert_to_tensor=True, show_progress_bar=False)
answers_emb = model.encode(answers, convert_to_tensor=True, show_progress_bar=False)
best_answer = cos_sim(queries_emb, answers_emb).argmax().item()
print(answers[best_answer])
📚 ドキュメント
このモデルは、2段階の手順で開発されました。
- 最初のステップでは、多言語E5チェックポイントで初期化され、その後、6000万のポーランド語 - 英語のテキストペアの多様なコーパスで 多言語知識蒸留法 を用いて学習されました。蒸留の教師モデルとして 英語FlagEmbeddings (BGE) を利用しました。
- 2番目のステップでは、得られたモデルを ポーランド語MS MARCO のトレーニング分割で対照損失を用いて微調整しました。対照学習の効率を向上させるために、小規模モデルでは1152、ベースモデルでは768、大規模モデルでは288という大きなバッチサイズを使用しました。微調整は、12台のA100 GPUのクラスターで行われました。
🔧 技術詳細
- モデルの開発手順:2段階の手順で開発され、多言語知識蒸留法と対照損失を用いた微調整を行っています。
- 学習データ:6000万のポーランド語 - 英語のテキストペアのコーパスと ポーランド語MS MARCO のトレーニング分割を使用しています。
- 学習環境:12台のA100 GPUのクラスターで学習されています。
📄 ライセンス
このモデルは、Apache-2.0ライセンスの下で公開されています。
⚠️ 重要提示
2023-12-26: モデルを新しいバージョンに更新し、結果を改善しました。以前のバージョンは v1 タグを使用してダウンロードできます: AutoModel.from_pretrained("sdadas/mmlw-retrieval-e5-base", revision="v1")
⚠️ 重要提示
当社の密ベクトル検索器は、テキストをエンコードする際に特定の接頭辞と接尾辞の使用を必要とします。このモデルの場合、クエリには "query: " を、パッセージには "passage: " を接頭辞として付ける必要があります。
評価結果
このモデルは、ポーランド語情報検索ベンチマークで NDCG@10 が 56.09 を達成しています。詳細な結果は PIRB Leaderboard を参照してください。
謝辞
このモデルは、グダニスク工科大学のTASKセンターイニシアチブのもと、A100 GPUクラスターのサポートを受けて学習されました。
引用
@article{dadas2024pirb,
title={{PIRB}: A Comprehensive Benchmark of Polish Dense and Hybrid Text Retrieval Methods},
author={Sławomir Dadas and Michał Perełkiewicz and Rafał Poświata},
year={2024},
eprint={2402.13350},
archivePrefix={arXiv},
primaryClass={cs.CL}
}