[模型卡] [ViDoRe 排行榜] [示範] [部落格文章]
引入視覺文檔檢索基準 (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 基準測試上評估任何現成的檢索器。例如,您可以在 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
檔案以獲取更多資訊。