[Карточка модели] [Таблица лидеров 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...).
Чтобы сохранить облегченный репозиторий, были установлены только необходимые пакеты. В частности, вы должны указать зависимости для конкретных моделей, не являющихся преобразователями, которые вы хотите запустить (см. список в 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
Если вы хотите оценить ретривер, основанный на извлечении чистого текста (без визуальных вложений), вместо этого вам следует использовать наборы данных из OCR ViDoRe Chunk (базовый уровень):
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: эффективный поиск документов с помощью языковых моделей Vision
Авторы: Мануэль Файсс *, Хьюг Сибилль *, Тони Ву *, Билель Омрани, Готье Вио, Селин Юдело, Пьер Коломбо (* означает равный вклад)
@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
для получения дополнительной информации.