[بطاقة النموذج] [لوحة المتصدرين ViDoRe] [العرض التوضيحي] [منشور المدونة]
تم تقديم مقياس استرجاع المستندات المرئية (ViDoRe) لتقييم أداء أنظمة استرداد المستندات على المستندات الغنية بصريًا عبر مختلف المهام والمجالات واللغات والإعدادات. تم استخدامه لتقييم نموذج ColPali، وهو مسترد يعمل بنظام VLM يقوم باسترداد المستندات بكفاءة بناءً على محتواها المرئي والاستعلامات النصية باستخدام آلية التفاعل المتأخر.
نصيحة
إذا كنت تريد ضبط ColPali لحالة الاستخدام المحددة الخاصة بك، فيجب عليك التحقق من مستودع colpali
. أنه يحتوي على قاعدة التعليمات البرمجية بأكملها المستخدمة لتدريب النموذج المقدم في ورقتنا.
استخدمنا Python 3.11.6 وPyTorch 2.2.2 لتدريب نماذجنا واختبارها، ولكن من المتوقع أن تكون قاعدة التعليمات البرمجية متوافقة مع Python >=3.9 وإصدارات PyTorch الحديثة.
تعتمد قاعدة تعليمات التقييم على عدد قليل من حزم بايثون، والتي يمكن تنزيلها باستخدام الأمر التالي:
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. على سبيل المثال، يمكنك تقييم نموذج ColPali على مقياس ViDoRe لإعادة إنتاج النتائج من بحثنا.
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
سيقوم كلا البرنامجين بإنشاء ملف JSON محدد في outputs/{model_name_all_metrics.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
يتم تخزين البيانات في 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: استرجاع المستندات بكفاءة باستخدام نماذج لغة الرؤية
المؤلفون: مانويل فايس *، هيوغ سيبيل *، توني وو *، بلال عمراني، غوتييه فيود، سيلين هوديلوت، بيير كولومبو (* تشير إلى مساهمة متساوية)
@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
لمزيد من المعلومات.