🚀 colbertv2-camembert-L4-mmarcoFR
このモデルは、セマンティック検索に使用できる軽量なフランス語用のColBERTv2モデルです。クエリとパッセージをトークンレベルの埋め込み行列にエンコードし、スケーラブルなベクトル類似度(MaxSim)演算子を使用して、クエリに文脈的に一致するパッセージを効率的に見つけます。
🚀 クイックスタート
このモデルは、セマンティック検索に使用できる軽量なフランス語用のColBERTv2モデルです。以下に、このモデルの使い方を紹介します。
✨ 主な機能
- クエリとパッセージをトークンレベルの埋め込み行列にエンコードする。
- スケーラブルなベクトル類似度(MaxSim)演算子を使用して、クエリに文脈的に一致するパッセージを効率的に見つける。
📦 インストール
RAGatouilleを使用する場合
まず、以下のライブラリをインストールする必要があります。
pip install -U ragatouille
ColBERT-AIを使用する場合
まず、以下のライブラリをインストールする必要があります。
pip install git+https://github.com/stanford-futuredata/ColBERT.git torch faiss-gpu==1.7.2
💻 使用例
RAGatouilleを使用する場合
from ragatouille import RAGPretrainedModel
index_name: str = "my_index"
documents: list = ["Ceci est un premier document.", "Voici un second document.", "etc."]
RAG = RAGPretrainedModel.from_pretrained("antoinelouis/colbertv2-camembert-L4-mmarcoFR")
RAG.index(name=index_name, collection=documents)
RAG = RAGPretrainedModel.from_index(index_name)
RAG.search(query="Comment effectuer une recherche avec ColBERT ?", k=10)
ColBERT-AIを使用する場合
from colbert import Indexer, Searcher
from colbert.infra import Run, RunConfig
n_gpu: int = 1
experiment: str = "colbert"
index_name: str = "my_index"
documents: list = ["Ceci est un premier document.", "Voici un second document.", "etc."]
with Run().context(RunConfig(nranks=n_gpu,experiment=experiment)):
indexer = Indexer(checkpoint="antoinelouis/colbertv2-camembert-L4-mmarcoFR")
indexer.index(name=index_name, collection=documents)
with Run().context(RunConfig(nranks=n_gpu,experiment=experiment)):
searcher = Searcher(index=index_name)
results = searcher.search(query="Comment effectuer une recherche avec ColBERT ?", k=10)
📚 ドキュメント
評価
このモデルは、mMARCO-frの小規模開発セットで評価されています。このセットは、880万件の候補パッセージのコーパスに対する6,980件のクエリで構成されています。平均逆順位(MRR)、正規化割引累積ゲイン(NDCG)、平均平均適合率(MAP)、およびさまざまなカットオフでの再現率(R@k)を報告しています。
以下は、同じデータセットでファインチューニングされた他の公開されているフランス語のColBERTモデルとの性能比較です。他のフランス語のニューラル検索器との比較については、DécouvrIRのリーダーボードを参照してください。
モデル |
#パラメータ(↓) |
サイズ |
次元 |
インデックス |
R@1000 |
R@500 |
R@100 |
R@10 |
MRR@10 |
colbertv2-camembert-L4-mmarcoFR |
54M |
0.2GB |
32 |
9GB |
91.9 |
90.3 |
81.9 |
56.7 |
32.3 |
FraColBERTv2 |
111M |
0.4GB |
128 |
28GB |
90.0 |
88.9 |
81.2 |
57.1 |
32.4 |
colbertv1-camembert-base-mmarcoFR |
111M |
0.4GB |
128 |
28GB |
89.7 |
88.4 |
80.0 |
54.2 |
29.5 |
注: インデックスは、ColBERTv2の残差圧縮メカニズムを使用した場合のmMARCO-frインデックス(880万件のパッセージ)のディスク上のサイズに対応します。
トレーニング
データ
msmarco-hard-negatives蒸留データセットを使用して、各クエリに対して12個の異なる密な検索器から採掘された62個の難しい負例をサンプリングします。次に、cross-encoder-ms-marco-MiniLM-L-6-v2-scoresデータセットを使用して、すべての(クエリ、段落)ペアの関連性スコアを収集します。最終的に、モデルのトレーニングに使用する1040万個の異なる64ウェイのタプル [クエリ, (正例, 正例スコア), (負例1, 負例1スコア), ..., (負例62, 負例62スコア)] が得られます。
実装
このモデルは、camembert-L4のチェックポイントから初期化され、クロスエンコーダのスコアをモデルに蒸留するためのKLダイバージェンス損失と、同じバッチ内の他のすべてのクエリに対応するパッセージに対する各クエリの正例スコアに適用されるバッチ内サンプリングソフトマックス交差エントロピー損失の組み合わせによって最適化されます(ColBERTv2のように)。モデルは、80GBのNVIDIA H100 GPU 1台で325,000ステップ、AdamWオプティマイザを使用してファインチューニングされます。バッチサイズは32、ピーク学習率は1e-5、最初の20,000ステップでウォームアップし、線形スケジューリングを使用します。埋め込み次元は32に設定され、質問とパッセージの最大シーケンス長はそれぞれ32トークンと160トークンに固定されています。関連性スコアの計算にはコサイン類似度を使用しています。
📄 ライセンス
このモデルはMITライセンスの下で提供されています。
🔧 技術詳細
属性 |
詳情 |
パイプラインタグ |
文の類似度 |
言語 |
フランス語 |
ライセンス |
MIT |
データセット |
unicamp-dl/mmarco |
評価指標 |
再現率 |
タグ |
colbert、パッセージ検索 |
ベースモデル |
antoinelouis/camembert-L4 |
ライブラリ名 |
RAGatouille |
推論 |
無効 |
📄 引用
@online{louis2024decouvrir,
author = 'Antoine Louis',
title = 'DécouvrIR: A Benchmark for Evaluating the Robustness of Information Retrieval Models in French',
publisher = 'Hugging Face',
month = 'mar',
year = '2024',
url = 'https://huggingface.co/spaces/antoinelouis/decouvrir',
}