🚀 Stella-PL-retrieval
このモデルは、stella_en_1.5B_v5 をベースとしたテキストエンコーダで、ポーランド語の情報検索タスク向けにさらにファインチューニングされています。
このエンコーダはテキストを1024次元のベクトルに変換します。このモデルはポーランド語の情報検索タスクに特化して最適化されています。より汎用的なエンコーダが必要な場合、意味的類似度やクラスタリングなどの幅広いタスクに適した、最初のステップの蒸留バージョン sdadas/stella-pl を使用することをおすすめします。
🚀 クイックスタート
このモデルは、元の stella_en_1.5B_v5 と同じプロンプトを利用しています。
✨ 主な機能
- ポーランド語の情報検索タスクに最適化されたテキストエンコーダです。
- 多言語知識蒸留手法を用いてポーランド語に適応させ、対照損失でファインチューニングされています。
- テキストを1024次元のベクトルに変換します。
📦 インストール
このモデルを使用するには、sentence-transformers
ライブラリが必要です。以下のコマンドでインストールできます。
pip install sentence-transformers
💻 使用例
基本的な使用法
from sentence_transformers import SentenceTransformer
from sentence_transformers.util import cos_sim
model = SentenceTransformer(
"sdadas/stella-pl-retrieval",
trust_remote_code=True,
device="cuda",
model_kwargs={"attn_implementation": "flash_attention_2", "trust_remote_code": True}
)
model.bfloat16()
query_prefix = "Instruct: Given a web search query, retrieve relevant passages that answer the query.\nQuery: "
queries = [query_prefix + "Jak dożyć 100 lat?"]
answers = [
"Trzeba zdrowo się odżywiać i uprawiać sport.",
"Trzeba pić alkohol, imprezować i jeździć szybkimi autami.",
"Gdy trwała kampania politycy zapewniali, że rozprawią się z zakazem niedzielnego handlu."
]
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])
sim_prefix = "Instruct: Retrieve semantically similar text.\nQuery: "
sentences = [
sim_prefix + "Trzeba zdrowo się odżywiać i uprawiać sport.",
sim_prefix + "Warto jest prowadzić zdrowy tryb życia, uwzględniający aktywność fizyczną i dietę.",
sim_prefix + "One should eat healthy and engage in sports.",
sim_prefix + "Zakupy potwierdzasz PINem, który bezpiecznie ustalisz podczas aktywacji."
]
emb = model.encode(sentences, convert_to_tensor=True, show_progress_bar=False)
print(cos_sim(emb, emb))
📚 ドキュメント
検索の場合
クエリには "Instruct: Given a web search query, retrieve relevant passages that answer the query.\nQuery: " を接頭辞として付ける必要があります。
意味的類似度などの対称タスクの場合
両方のテキストに "Instruct: Retrieve semantically similar text.\nQuery: " を接頭辞として付ける必要があります。
注意事項
このモデルはカスタム実装を使用しているため、読み込む際に trust_remote_code=True
引数を追加する必要があります。また、attn_implementation
引数で有効にできる Flash Attention 2 を使用することをおすすめします。
🔧 技術詳細
- モデルタイプ:テキストエンコーダ
- 訓練データ:2000万のポーランド語 - 英語のテキストペアコーパスと140万のクエリからなるデータセット
- 訓練手法:多言語知識蒸留手法と対照損失によるファインチューニング
- 出力次元:1024次元
📄 ライセンス
このモデルは gemma ライセンスの下で提供されています。
評価結果
このモデルは、ポーランド語情報検索ベンチマークで NDCG@10 が 62.32 を達成しています。詳細な結果は PIRB Leaderboard を参照してください。
引用
@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}
}