[Tarjeta de modelo] [Tabla de clasificación de ViDoRe] [Demostración] [Entrada de blog]
El Visual Document Retrieval Benchmark (ViDoRe) se introduce para evaluar el rendimiento de los sistemas de recuperación de documentos en documentos visualmente ricos en diversas tareas, dominios, idiomas y configuraciones. Se utilizó para evaluar el modelo ColPali, un recuperador impulsado por VLM que recupera documentos de manera eficiente en función de su contenido visual y consultas textuales mediante un mecanismo de interacción tardía.
Consejo
Si desea ajustar ColPali para su caso de uso específico, debe consultar el repositorio colpali
. Contiene todo el código base utilizado para entrenar el modelo presentado en nuestro artículo.
Usamos Python 3.11.6 y PyTorch 2.2.2 para entrenar y probar nuestros modelos, pero se espera que el código base sea compatible con Python>=3.9 y las versiones recientes de PyTorch.
El código base de evaluación depende de algunos paquetes de Python, que se pueden descargar usando el siguiente comando:
pip install vidore-benchmark
Consejo
Por defecto, el paquete vidore-benchmark
ya incluye las dependencias para los modelos de ColVision (por ejemplo, ColPali, ColQwen2...).
Para mantener un repositorio liviano, solo se instalaron los paquetes esenciales. En particular, debe especificar las dependencias para los modelos específicos que no sean Transformers que desea ejecutar (consulte la lista en pyproject.toml
). Por ejemplo, si vas a evaluar el recuperador BGE-M3:
pip install " vidore-benchmark[bge-m3] "
O si desea evaluar todos los perros perdigueros disponibles en el mercado:
pip install " vidore-benchmark[all-retrievers] "
La lista de perros perdigueros disponibles se puede encontrar aquí. Lea esta sección para aprender cómo crear, utilizar y evaluar su propio perro perdiguero.
Puede evaluar cualquier perro perdiguero disponible en el mercado en el punto de referencia ViDoRe. Por ejemplo, puede evaluar el modelo ColPali en el punto de referencia ViDoRe para reproducir los resultados de nuestro artículo.
vidore-benchmark evaluate-retriever
--model-class colpali
--model-name vidore/colpali-v1.2
--collection-name " vidore/vidore-benchmark-667173f98e70a1c0fa4db00d "
--split test
Nota: Debería recibir una advertencia sobre algunos pesos no inicializados. Este es un problema conocido en ColPali y hará que las métricas sean ligeramente diferentes de las reportadas en el documento. Estamos trabajando para solucionar este problema.
Alternativamente, puede evaluar su modelo en un único conjunto de datos. Si su recuperador utiliza incrustaciones visuales, puede utilizar cualquier ruta del conjunto de datos de la colección ViDoRe Benchmark, por ejemplo:
vidore-benchmark evaluate-retriever
--model-class colpali
--model-name vidore/colpali-v1.2
--dataset-name vidore/docvqa_test_subsampled
--split test
Si desea evaluar un recuperador que se basa en la recuperación de texto puro (sin incrustaciones visuales), debe utilizar los conjuntos de datos de ViDoRe Chunk OCR (línea de base) en su lugar:
vidore-benchmark evaluate-retriever
--model-class bge-m3
--model-name BAAI/bge-m3
--dataset-name vidore/docvqa_test_subsampled_tesseract
--split test
Ambos scripts generarán un archivo JSON particular en outputs/{model_name_all_metrics.json}
. Siga las instrucciones en la tabla de clasificación ViDoRe para comparar su modelo con los demás.
Puede utilizar la agrupación de tokens para reducir la longitud de las incrustaciones de documentos. En producción, esto reducirá significativamente la huella de memoria del recuperador, reduciendo así los costos y aumentando la velocidad. Puede utilizar la marca --use-token-pooling
para habilitar esta función:
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/
Para obtener más información sobre las opciones disponibles, ejecute:
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 )
Si necesita evaluar su propio modelo en el punto de referencia de ViDoRe, puede crear su propia instancia de VisionRetriever
para usarla con los scripts de evaluación de este paquete. Puede encontrar las instrucciones detalladas aquí.
Para procesar, visualizar y comparar fácilmente las métricas de evaluación de múltiples recuperadores, puede utilizar la clase EvalManager
. Supongamos que tiene una lista de archivos de métricas JSON generados previamente, por ejemplo :
data/metrics/
├── bisiglip.json
└── colpali.json
Los datos se almacenan en eval_manager.data
como un DataFrame de varias columnas con las siguientes columnas. Utilice los métodos get_df_for_metric
, get_df_for_dataset
y get_df_for_model
para obtener el subconjunto de datos que le interesan. Por ejemplo:
from vidore_benchmark . evaluation import EvalManager
eval_manager = EvalManager . from_dir ( "data/metrics/" )
df = eval_manager . get_df_for_metric ( "ndcg_at_5" )
ColPali: recuperación eficiente de documentos con modelos de lenguaje de visión
Autores: Manuel Faysse *, Hugues Sibille *, Tony Wu *, Bilel Omrani, Gautier Viaud, Céline Hudelot, Pierre Colombo (* indica contribución igual)
@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},
}
Si desea reproducir los resultados del artículo ColPali, lea el archivo REPRODUCIBILITY.md
para obtener más información.