[Kartu model] [Papan Peringkat ViDoRe] [Demo] [Entri Blog]
Benchmark Pengambilan Dokumen Visual (ViDoRe), diperkenalkan untuk mengevaluasi kinerja sistem pengambilan dokumen pada dokumen yang kaya secara visual di berbagai tugas, domain, bahasa, dan pengaturan. Ini digunakan untuk mengevaluasi model ColPali, sebuah retriever bertenaga VLM yang secara efisien mengambil dokumen berdasarkan konten visual dan kueri tekstualnya menggunakan mekanisme interaksi akhir.
Tip
Jika Anda ingin menyempurnakan ColPali untuk kasus penggunaan spesifik Anda, Anda harus memeriksa repositori colpali
. Ini berisi seluruh basis kode yang digunakan untuk melatih model yang disajikan dalam makalah kami.
Kami menggunakan Python 3.11.6 dan PyTorch 2.2.2 untuk melatih dan menguji model kami, tetapi basis kode diharapkan kompatibel dengan Python >=3.9 dan versi PyTorch terbaru.
Basis kode eval bergantung pada beberapa paket Python, yang dapat diunduh menggunakan perintah berikut:
pip install vidore-benchmark
Tip
Secara default, paket vidore-benchmark
sudah menyertakan dependensi untuk model ColVision (misalnya ColPali, ColQwen2...).
Untuk menjaga repositori tetap ringan, hanya paket-paket penting yang diinstal. Secara khusus, Anda harus menentukan dependensi untuk model non-Transformers tertentu yang ingin Anda jalankan (lihat daftar di pyproject.toml
). Misalnya, jika Anda ingin mengevaluasi retriever BGE-M3:
pip install " vidore-benchmark[bge-m3] "
Atau jika Anda ingin mengevaluasi semua retriever yang tersedia:
pip install " vidore-benchmark[all-retrievers] "
Daftar retriever yang tersedia dapat ditemukan di sini. Baca bagian ini untuk mempelajari cara membuat, menggunakan, dan mengevaluasi retriever Anda sendiri.
Anda dapat mengevaluasi semua jenis retriever yang tersedia di benchmark ViDoRe. Misalnya, Anda dapat mengevaluasi model ColPali pada benchmark ViDoRe untuk mereproduksi hasil dari makalah kami.
vidore-benchmark evaluate-retriever
--model-class colpali
--model-name vidore/colpali-v1.2
--collection-name " vidore/vidore-benchmark-667173f98e70a1c0fa4db00d "
--split test
Catatan: Anda akan mendapat peringatan tentang beberapa bobot yang tidak diinisialisasi. Ini adalah masalah umum di ColPali dan akan menyebabkan metriknya sedikit berbeda dari yang dilaporkan di koran. Kami sedang berupaya memperbaiki masalah ini.
Alternatifnya, Anda dapat mengevaluasi model Anda pada satu kumpulan data. Jika retriver Anda menggunakan penyematan visual, Anda dapat menggunakan jalur himpunan data apa pun dari koleksi ViDoRe Benchmark, misalnya:
vidore-benchmark evaluate-retriever
--model-class colpali
--model-name vidore/colpali-v1.2
--dataset-name vidore/docvqa_test_subsampled
--split test
Jika Anda ingin mengevaluasi retriever yang mengandalkan pengambilan teks murni (tanpa penyematan visual), Anda harus menggunakan himpunan data dari ViDoRe Chunk OCR (baseline):
vidore-benchmark evaluate-retriever
--model-class bge-m3
--model-name BAAI/bge-m3
--dataset-name vidore/docvqa_test_subsampled_tesseract
--split test
Kedua skrip akan menghasilkan satu file JSON tertentu di outputs/{model_name_all_metrics.json}
. Ikuti instruksi di Papan Peringkat ViDoRe untuk membandingkan model Anda dengan model lainnya.
Anda dapat menggunakan pengumpulan token untuk mengurangi panjang penyematan dokumen. Dalam produksi, hal ini akan mengurangi jejak memori retriever secara signifikan, sehingga mengurangi biaya dan meningkatkan kecepatan. Anda dapat menggunakan tanda --use-token-pooling
untuk mengaktifkan fitur ini:
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/
Untuk mendapatkan informasi lebih lanjut tentang opsi yang tersedia, jalankan:
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 )
Jika Anda perlu mengevaluasi model Anda sendiri pada benchmark ViDoRe, Anda dapat membuat instance VisionRetriever
Anda sendiri untuk digunakan dengan skrip evaluasi dalam paket ini. Anda dapat menemukan petunjuk rinci di sini.
Untuk memproses, memvisualisasikan, dan membandingkan metrik evaluasi beberapa retriever dengan mudah, Anda dapat menggunakan kelas EvalManager
. Asumsikan Anda memiliki daftar file metrik JSON yang dibuat sebelumnya, misalnya :
data/metrics/
├── bisiglip.json
└── colpali.json
Data disimpan di eval_manager.data
sebagai DataFrame multi-kolom dengan kolom berikut. Gunakan metode get_df_for_metric
, get_df_for_dataset
, dan get_df_for_model
untuk mendapatkan subset data yang Anda minati. Misalnya:
from vidore_benchmark . evaluation import EvalManager
eval_manager = EvalManager . from_dir ( "data/metrics/" )
df = eval_manager . get_df_for_metric ( "ndcg_at_5" )
ColPali: Pengambilan Dokumen yang Efisien dengan Model Bahasa Vision
Penulis: Manuel Faysse *, Hugues Sibille *, Tony Wu *, Bilel Omrani, Gautier Viaud, Céline Hudelot, Pierre Colombo (* menunjukkan kontribusi yang setara)
@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},
}
Jika Anda ingin memperbanyak hasil makalah ColPali, silakan baca file REPRODUCIBILITY.md
untuk informasi lebih lanjut.