[モデルカード] [ViDoRe Leaderboard] [デモ] [ブログ投稿]
Visual Document Retrieval Benchmark (ViDoRe) は、さまざまなタスク、ドメイン、言語、設定にわたる視覚的に豊富なドキュメントに対するドキュメント検索システムのパフォーマンスを評価するために導入されました。これは、遅延インタラクション メカニズムを使用して、ビジュアル コンテンツとテキスト クエリに基づいてドキュメントを効率的に取得する VLM を利用した取得ツールである ColPali モデルを評価するために使用されました。
ヒント
特定のユースケースに合わせて ColPali を微調整したい場合は、 colpali
リポジトリを確認する必要があります。これには、論文で紹介したモデルをトレーニングするために使用されるコードベース全体が含まれています。
モデルのトレーニングとテストには Python 3.11.6 と PyTorch 2.2.2 を使用しましたが、コードベースは Python >=3.9 および最新の PyTorch バージョンと互換性があることが期待されています。
eval コードベースはいくつかの Python パッケージに依存しており、次のコマンドを使用してダウンロードできます。
pip install vidore-benchmark
ヒント
デフォルトでは、 vidore-benchmark
パッケージには ColVision モデル (ColPali、ColQwen2 など) の依存関係がすでに含まれています。
軽量のリポジトリを維持するために、必須のパッケージのみがインストールされました。特に、実行する特定の非トランスフォーマー モデルの依存関係を指定する必要があります ( pyproject.toml
のリストを参照)。たとえば、BGE-M3 レトリーバーを評価する場合:
pip install " vidore-benchmark[bge-m3] "
または、すべての既製レトリバーを評価したい場合は、次のようにします。
pip install " vidore-benchmark[all-retrievers] "
利用可能なレトリバーのリストはここでご覧いただけます。このセクションを読んで、独自のレトリバーを作成、使用、評価する方法を学びましょう。
ViDoRe ベンチマークでは、既製のレトリーバーを評価できます。たとえば、ViDoRe ベンチマークで ColPali モデルを評価し、論文の結果を再現できます。
vidore-benchmark evaluate-retriever
--model-class colpali
--model-name vidore/colpali-v1.2
--collection-name " vidore/vidore-benchmark-667173f98e70a1c0fa4db00d "
--split test
注:一部の初期化されていない重みについては警告が表示されます。これは ColPali の既知の問題であり、メトリクスが論文で報告されているものと若干異なることになります。この問題の修正に取り組んでいます。
あるいは、単一のデータセットでモデルを評価することもできます。リトリバーがビジュアル埋め込みを使用している場合は、ViDoRe Benchmark コレクションの任意のデータセット パスを使用できます。たとえば、次のようになります。
vidore-benchmark evaluate-retriever
--model-class colpali
--model-name vidore/colpali-v1.2
--dataset-name vidore/docvqa_test_subsampled
--split test
純粋なテキストの取得 (視覚的な埋め込みなし) に依存する取得プログラムを評価する場合は、代わりに ViDoRe Chunk OCR (ベースライン) のデータセットを使用する必要があります。
vidore-benchmark evaluate-retriever
--model-class bge-m3
--model-name BAAI/bge-m3
--dataset-name vidore/docvqa_test_subsampled_tesseract
--split test
どちらのスクリプトも、 outputs/{model_name_all_metrics.json}
に 1 つの特定の JSON ファイルを生成します。 ViDoRe Leaderboard の指示に従って、自分のモデルを他のモデルと比較します。
トークン プーリングを使用すると、ドキュメントの埋め込みの長さを短縮できます。運用環境では、これにより取得者のメモリ フットプリントが大幅に削減され、コストが削減され、速度が向上します。 --use-token-pooling
フラグを使用して、この機能を有効にできます。
vidore-benchmark evaluate-retriever
--model-class colpali
--model-name vidore/colpali-v1.2
--dataset-name vidore/docvqa_test_subsampled
--split test
--use-token-pooling
--pool-factor 3
vidore-benchmark retrieve-on-dataset
--model-class colpali
--model-name vidore/colpali-v1.2
--query " Which hour of the day had the highest overall electricity generation in 2019? "
--k 5
--dataset-name vidore/syntheticDocQA_energy_test
--split test
vidore-benchmark retriever_on_pdfs
--model-class siglip
--model-name google/siglip-so400m-patch14-384
--query " Which hour of the day had the highest overall electricity generation in 2019? "
--k 5
--data-dirpath data/my_folder_with_pdf_documents/
利用可能なオプションに関する詳細情報を取得するには、次を実行します。
vidore-benchmark --help
from datasets import load_dataset
from dotenv import load_dotenv
from vidore_benchmark . evaluation import evaluate_dataset
from vidore_benchmark . retrievers . jina_clip_retriever import JinaClipRetriever
load_dotenv ( override = True )
def main ():
"""
Example script for a Python usage of the Vidore Benchmark.
"""
my_retriever = JinaClipRetriever ( "jinaai/jina-clip-v1" )
dataset = load_dataset ( "vidore/syntheticDocQA_dummy" , split = "test" )
metrics = evaluate_dataset ( my_retriever , dataset , batch_query = 4 , batch_passage = 4 )
print ( metrics )
ViDoRe ベンチマークで独自のモデルを評価する必要がある場合は、 VisionRetriever
の独自のインスタンスを作成して、このパッケージ内の評価スクリプトで使用できます。詳細な手順はここでご覧いただけます。
複数の取得者の評価メトリクスを簡単に処理、視覚化、比較するには、 EvalManager
クラスを使用できます。以前に生成された JSON メトリック ファイルのリストがあると仮定します。例:
data/metrics/
├── bisiglip.json
└── colpali.json
データは、次の列を含む複数列の DataFrame としてeval_manager.data
に保存されます。 get_df_for_metric
、 get_df_for_dataset
、およびget_df_for_model
メソッドを使用して、関心のあるデータのサブセットを取得します。次に例を示します。
from vidore_benchmark . evaluation import EvalManager
eval_manager = EvalManager . from_dir ( "data/metrics/" )
df = eval_manager . get_df_for_metric ( "ndcg_at_5" )
ColPali: ビジョン言語モデルを使用した効率的なドキュメント検索
著者: Manuel Faysse *、 Huges Sibille *、 Tony Wu *、Bilel Omrani、Gautier Viaud、Céline Hudelot、Pierre Colombo (* は同等の貢献を示します)
@misc{faysse2024colpaliefficientdocumentretrieval,
title={ColPali: Efficient Document Retrieval with Vision Language Models},
author={Manuel Faysse and Hugues Sibille and Tony Wu and Bilel Omrani and Gautier Viaud and Céline Hudelot and Pierre Colombo},
year={2024},
eprint={2407.01449},
archivePrefix={arXiv},
primaryClass={cs.IR},
url={https://arxiv.org/abs/2407.01449},
}
ColPali 論文の結果を再現したい場合は、 REPRODUCIBILITY.md
ファイルで詳細を確認してください。