[모델 카드] [ViDoRe 리더보드] [데모] [블로그 게시물]
ViDoRe(Visual Document Retrieval Benchmark)는 다양한 작업, 도메인, 언어 및 설정에 걸쳐 시각적으로 풍부한 문서에 대한 문서 검색 시스템의 성능을 평가하기 위해 도입되었습니다. 이는 후기 상호 작용 메커니즘을 사용하여 시각적 콘텐츠와 텍스트 쿼리를 기반으로 문서를 효율적으로 검색하는 VLM 기반 검색기인 ColPali 모델을 평가하는 데 사용되었습니다.
팁
특정 사용 사례에 맞게 ColPali를 세부적으로 조정하려면 colpali
저장소를 확인해야 합니다. 여기에는 우리 논문에 제시된 모델을 훈련하는 데 사용되는 전체 코드베이스가 포함되어 있습니다.
우리는 Python 3.11.6 및 PyTorch 2.2.2를 사용하여 모델을 학습하고 테스트했지만 코드베이스는 Python >=3.9 및 최신 PyTorch 버전과 호환될 것으로 예상됩니다.
평가 코드베이스는 다음 명령을 사용하여 다운로드할 수 있는 몇 가지 Python 패키지에 따라 다릅니다.
pip install vidore-benchmark
팁
기본적으로 vidore-benchmark
패키지에는 ColVision 모델(예: ColPali, ColQwen2...)에 대한 종속성이 이미 포함되어 있습니다.
경량 저장소를 유지하기 위해 필수 패키지만 설치했습니다. 특히 실행하려는 특정 비 Transformer 모델에 대한 종속성을 지정해야 합니다( 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}
에 하나의 특정 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
데이터는 다음 열이 포함된 다중 열 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 *, 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
파일에서 자세한 내용을 읽어보세요.