[การ์ดโมเดล] [กระดานผู้นำ ViDoRe] [สาธิต] [โพสต์บล็อก]
Visual Document Retrieval Benchmark (ViDoRe) ถูกนำมาใช้เพื่อประเมินประสิทธิภาพของระบบการดึงเอกสารบนเอกสารที่มีภาพสมบูรณ์ในงาน โดเมน ภาษา และการตั้งค่าต่างๆ ใช้เพื่อประเมินโมเดล ColPali ซึ่งเป็นรีทรีฟเวอร์ที่ขับเคลื่อนด้วย VLM ซึ่งดึงเอกสารอย่างมีประสิทธิภาพตามเนื้อหาภาพและการสืบค้นข้อความโดยใช้กลไกการโต้ตอบล่าช้า
เคล็ดลับ
หากคุณต้องการปรับแต่ง 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...)
เพื่อเก็บพื้นที่เก็บข้อมูลแบบไลท์เวท จึงมีการติดตั้งเฉพาะแพ็คเกจที่จำเป็นเท่านั้น โดยเฉพาะอย่างยิ่ง คุณต้องระบุการขึ้นต่อกันสำหรับโมเดลที่ไม่ใช่ Transformers ที่คุณต้องการเรียกใช้ (ดูรายการใน 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 และจะทำให้การวัดแตกต่างจากที่รายงานในรายงานเล็กน้อย เรากำลังดำเนินการแก้ไขปัญหานี้
หรือคุณสามารถประเมินแบบจำลองของคุณบนชุดข้อมูลเดียวได้ หาก Retriver ของคุณใช้การฝังภาพ คุณสามารถใช้พาธชุดข้อมูลใดก็ได้จากคอลเลกชัน 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 เพื่อเปรียบเทียบโมเดลของคุณกับรุ่นอื่นๆ
คุณสามารถใช้การรวมโทเค็นเพื่อลดความยาวของการฝังเอกสาร ในการผลิต สิ่งนี้จะช่วยลดพื้นที่หน่วยความจำของรีทรีฟเวอร์ได้อย่างมาก ซึ่งจะช่วยลดต้นทุนและเพิ่มความเร็ว คุณสามารถใช้แฟล็ก --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
เป็น DataFrame แบบหลายคอลัมน์โดยมีคอลัมน์ต่อไปนี้ ใช้เมธอด 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 *, Hugues 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
เพื่อดูข้อมูลเพิ่มเติม