🚀 リランカー
- 埋め込みモデルとは異なり、リランカーは質問と文書を入力として使用し、埋め込みではなく直接類似度を出力します。
- リランカーにクエリとパッセージを入力することで、関連性スコアを取得できます。
- このスコアはシグモイド関数によって[0,1]の浮動小数点数値にマッピングできます。
🚀 クイックスタート
✨ 主な機能
このリランカーは、クエリと文書を入力として受け取り、直接関連性スコアを出力することができます。これにより、ベトナム語のテキストランキングに特化した高精度な結果を得ることができます。
📦 インストール
FlagEmbeddingを使用する場合
pip install -U FlagEmbedding
Huggingface transformersを使用する場合
pip install -U transformers
💻 使用例
基本的な使用法
FlagEmbeddingを使用する場合
from FlagEmbedding import FlagReranker
reranker = FlagReranker('namdp-ptit/ViRanker',
use_fp16=True)
score = reranker.compute_score(['ai là vị vua cuối cùng của việt nam', 'vua bảo đại là vị vua cuối cùng của nước ta'])
print(score)
score = reranker.compute_score(['ai là vị vua cuối cùng của việt nam', 'vua bảo đại là vị vua cuối cùng của nước ta'],
normalize=True)
print(score)
scores = reranker.compute_score(
[
['ai là vị vua cuối cùng của việt nam', 'vua bảo đại là vị vua cuối cùng của nước ta'],
['ai là vị vua cuối cùng của việt nam', 'lý nam đế là vị vua đầu tiên của nước ta']
]
)
print(scores)
scores = reranker.compute_score(
[
['ai là vị vua cuối cùng của việt nam', 'vua bảo đại là vị vua cuối của nước ta'],
['ai là vị vua cuối cùng của việt nam', 'lý nam đế là vị vua đầu tiên của nước ta']
],
normalize=True
)
print(scores)
Huggingface transformersを使用する場合
import torch
from transformers import AutoModelForSequenceClassification, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained('namdp-ptit/ViRanker')
model = AutoModelForSequenceClassification.from_pretrained('namdp-ptit/ViRanker')
model.eval()
pairs = [
['ai là vị vua cuối cùng của việt nam', 'vua bảo đại là vị vua cuối cùng của nước ta'],
['ai là vị vua cuối cùng của việt nam', 'lý nam đế là vị vua đầu tiên của nước ta']
],
with torch.no_grad():
inputs = tokenizer(pairs, padding=True, truncation=True, return_tensors='pt', max_length=512)
scores = model(**inputs, return_dict=True).logits.view(-1, ).float()
print(scores)
📚 ドキュメント
微調整
データ形式
学習データはJSONファイルであり、各行は次のような辞書です。
{"query": str, "pos": List[str], "neg": List[str]}
query
はクエリで、pos
は正のテキストのリスト、neg
は負のテキストのリストです。クエリに負のテキストがない場合は、コーパス全体からランダムにサンプリングして負のテキストとして使用できます。
また、学習データ内の各クエリについて、LLMに'pos'内の文書の反対の文書を作成するように依頼することで、難しい負の例を生成しました。
パフォーマンス
以下は、MS MMarco Passage Reranking - Vi - Dev データセットで他のいくつかの事前学習済みクロスエンコーダと比較した結果の比較表です。
お問い合わせ
Email: phuongnamdpn2k2@gmail.com
LinkedIn: Dang Phuong Nam
Facebook: Phương Nam
プロジェクトのサポート
このプロジェクトが役に立ったと感じ、その継続的な開発をサポートしたい場合は、以下の方法で貢献できます。
- リポジトリにスターを付ける:リポジトリにスターを付けることで、あなたの感謝の意を示しましょう。あなたのサポートは、さらなる開発と改善につながります。
- 貢献する:あなたの貢献を歓迎します!バグの報告、プルリクエストの提出、新機能の提案などでお手伝いいただけます。
- 寄付する:財政的にサポートしたい場合は、寄付を検討してください。以下の方法で寄付できます。
- ヴェトコム銀行: 9912692172 - DANG PHUONG NAM
ご支援いただき、ありがとうございます!
引用
次のように引用してください。
@misc{ViRanker,
title={ViRanker: A Cross-encoder Model for Vietnamese Text Ranking},
author={Nam Dang Phuong},
year={2024},
publisher={Huggingface},
}