🚀 Bloomz-560m 再ランキング
この再ランキングモデルは、cmarkea/bloomz-560m-dpo-chat モデルをベースに構築されており、質問(クエリ)とコンテキスト間の意味的な対応関係を測定することを目的としています。正規化されたスコアリングにより、ODQA(Open-Domain Question Answering)のコンテキストにおいて、リトリーバが出力したクエリ/コンテキストのマッチングをフィルタリングするのに役立ちます。さらに、リトリーバよりも効率的なモデリングアプローチを用いて結果を並べ替えることができます。ただし、このモデリングタイプは計算コストが高いため、直接的なデータベース検索には適していません。
このモデルは言語に依存しないように開発されており、フランス語と英語の両方をサポートしています。したがって、単言語(英語またはフランス語)のコンテキストでの動作に影響されることなく、クロス言語のコンテキストでも効果的にスコアリングすることができます。
📦 インストール
このセクションでは、必要な依存関係をインストールする方法を説明します。以下のコマンドを使用して、transformers
ライブラリをインストールしてください。
pip install transformers
💻 使用例
基本的な使用法
from transformers import pipeline
reranker = pipeline(
task='text-classification',
model='cmarkea/bloomz-560m-reranking',
top_k=None
)
query: str
contexts: List[str]
similarities = reranker(
[
dict(
text=context,
text_pair=query
)
for context in contexts
]
)
score_label_1 = [
next(item['score'] for item in entry if item['label'] == 'LABEL_1')
for entry in similarities
]
contexts_reranked = sorted(
zip(score_label_1, contexts),
key=lambda x: x[0],
reverse=True
)
score, contexts_cleaned = zip(
*filter(
lambda x: x[0] >= 0.8,
contexts_reranked
)
)
📚 ドキュメント
データセット
トレーニングデータセットは、クエリ/ポジティブ/ハードネガティブのトリプレットから構成される mMARCO データセットで構成されています。さらに、"train" スプリットの SQuAD データを追加し、クエリ/ポジティブ/ハードネガティブのトリプレットを形成しています。SQuAD のハードネガティブデータを生成するために、クエリと同じテーマのコンテキストであるが、異なるクエリセットからのものを考慮しました。したがって、ネガティブサンプルはクエリと同じテーマに属していますが、おそらく質問の答えを含んでいません。
最後に、トリプレットを平坦化して、クエリ/コンテキストの文のペアを取得します。クエリ/ポジティブの場合はラベル 1 を、クエリ/ネガティブの場合はラベル 0 を付けます。ペアの各要素(クエリとコンテキスト)では、フランス語または英語の言語がランダムかつ均等に選択されます。
評価
再ランキングモデルの性能を評価するために、SQuAD データセットの "validation" スプリットを使用します。各段落の最初の質問と、オラクルモデリングでトップ 1 にランク付けされるべき段落を構成するコンテキストを選択します。興味深いことに、テーマの数は限られており、クエリと一致しない対応するテーマの各コンテキストはハードネガティブと見なされます(テーマ外の他のコンテキストはシンプルなネガティブです)。したがって、以下の表を作成することができます。各テーマには、コンテキストの数と関連するクエリが表示されます。
テーマ名 |
コンテキスト数 |
テーマ名 |
コンテキスト数 |
Normans |
39 |
Civil_disobedience |
26 |
Computational_complexity_theory |
48 |
Construction |
22 |
Southern_California |
39 |
Private_school |
26 |
Sky_(United_Kingdom) |
22 |
Harvard_University |
30 |
Victoria_(Australia) |
25 |
Jacksonville,_Florida |
21 |
Huguenot |
44 |
Economic_inequality |
44 |
Steam_engine |
46 |
University_of_Chicago |
37 |
Oxygen |
43 |
Yuan_dynasty |
47 |
1973_oil_crisis |
24 |
Immune_system |
49 |
European_Union_law |
40 |
Intergovernmental_Panel_on_Climate_Change |
24 |
Amazon_rainforest |
21 |
Prime_number |
31 |
Ctenophora |
31 |
Rhine |
44 |
Fresno,_California |
28 |
Scottish_Parliament |
39 |
Packet_switching |
23 |
Islamism |
39 |
Black_Death |
23 |
Imperialism |
39 |
Geology |
25 |
Warsaw |
49 |
Pharmacy |
26 |
French_and_Indian_War |
46 |
Force |
44 |
|
|
評価コーパスは、ランク付けする必要のある 1204 ペアのクエリ/コンテキストで構成されています。
まず、クエリとコンテキストが同じ言語(フランス語/フランス語)である場合の評価スコアを計算しました。
次に、クエリがフランス語でコンテキストが英語のクロス言語のコンテキストでモデルを評価しました。
観察されたように、クロス言語のコンテキストはモデルの動作に大きな影響を与えません。モデルが検索結果の再ランキングとフィルタリングに使用される場合、0.8 のしきい値を適用して、リトリーバが出力したコンテキストをフィルタリングすることができます。これにより、RAG タイプのアプリケーションのコンテキストに存在するノイズの問題を軽減することができます。
📄 ライセンス
このモデルは、bigscience-bloom-rail-1.0 ライセンスの下で提供されています。
📖 引用
@online{DeBloomzReranking,
AUTHOR = {Cyrile Delestre},
ORGANIZATION = {Cr{\'e}dit Mutuel Ark{\'e}a},
URL = {https://huggingface.co/cmarkea/bloomz-3b-reranking},
YEAR = {2024},
KEYWORDS = {NLP ; Transformers ; LLM ; Bloomz},
}