ColPali : la recherche documentaire visuelle qui rend l’OCR obsolète ?
La majorité des pipelines RAG en production reposent sur un présupposé fragile : pour exploiter un PDF, il faut d’abord le transformer en texte. On enchaîne donc OCR, segmentation, nettoyage, extraction de tableaux, parfois une étape de mise en page. Chaque maillon ajoute du bruit, perd de l’information visuelle (colonnes, encadrés, schémas, signatures, logos), et nécessite une maintenance permanente. ColPali, publié en 2024 par l’équipe d’Illuin Technology et l’Université Paris Sciences et Lettres, propose une autre voie : indexer directement l’image de la page, sans OCR, et laisser un modèle de vision embarquer ce que l’œil voit. Le modèle est sous licence MIT, les poids sont publiés sur Hugging Face, et les benchmarks sont publics.
Le verrou que ColPali fait sauter
Sur des documents bureautiques classiques, un pipeline OCR + chunking texte fonctionne raisonnablement. Sur des documents réels d’organisation publique, de cabinet d’études, de bureau d’ingénierie, l’OCR atteint vite ses limites : tableaux financiers, formulaires complexes, plans, captures d’écran, schémas légendés, factures scannées de travers, anciens rapports en colonnes, notes manuscrites, infographies. Le contenu visuel porte une part de l’information qu’aucun extracteur texte ne récupère proprement. ColPali contourne le problème en court-circuitant l’étape OCR : la page est traitée comme une image, découpée en patches par un encodeur visuel, et chaque patch reçoit un embedding qui capture à la fois le texte rendu et la structure visuelle.
Comment ça marche, sans entrer dans la cuisine
ColPali combine deux idées déjà éprouvées séparément, ColBERT côté retrieval et PaliGemma côté vision, et les fusionne. Au lieu de produire un seul vecteur par page, le modèle produit une grille de vecteurs, un par patch d’image. Au moment de la recherche, la requête textuelle est elle aussi tokenisée en plusieurs vecteurs, et le score d’une page est la somme des meilleures correspondances entre chaque token de la requête et chaque patch de la page. C’est l’approche dite late interaction de ColBERT, transposée à la vision. Pratiquement, cela permet à une question sur un montant d’aller chercher exactement la cellule du tableau où ce montant figure, et à une question sur un schéma de pointer la zone illustrée correspondante.
Mise en place pratique
La bibliothèque de référence est colpali-engine, distribuée sur PyPI sous licence MIT. L’installation et la première indexation tiennent en quelques lignes :
from colpali_engine.models import ColPali, ColPaliProcessor
from pdf2image import convert_from_path
modele = ColPali.from_pretrained("vidore/colpali-v1.3")
processor = ColPaliProcessor.from_pretrained("vidore/colpali-v1.3")
pages = convert_from_path("rapport.pdf", dpi=150)
embeddings_pages = modele(**processor.process_images(pages))
requete = processor.process_queries(["quel est le montant total de la subvention ?"])
embeddings_req = modele(**requete)
scores = processor.score_multi_vector(embeddings_req, embeddings_pages)
Aucune passe OCR, aucun parseur de tableau, aucune règle métier sur la mise en page. Le pipeline d’ingestion se résume à : convertir le PDF en images de page, calculer les embeddings, les stocker. Côté infrastructure, une carte avec 16 Go de VRAM suffit largement pour indexer plusieurs milliers de pages par heure ; pour servir en lecture, le surcoût mémoire reste raisonnable grâce à la quantification 8 bits proposée nativement.
Stockage et passage à l’échelle
La grille de vecteurs par page consomme plus que les approches mono-vecteur classiques : compter environ 1 000 vecteurs de dimension 128 par page, soit quelques centaines de kilo-octets par page après quantification. Pour un corpus jusqu’à 100 000 pages, un stockage local en parquet ou un index dédié comme Vespa, Qdrant en mode multi-vecteur, ou plaid-x tient confortablement sur une machine de production. Au-delà, on bascule sur un index distribué ou sur la variante ColPali tensor compression qui réduit l’empreinte d’un facteur cinq sans dégradation significative des scores.
Le benchmark ViDoRe et ce qu’il dit vraiment
L’équipe de ColPali a publié en parallèle ViDoRe, un benchmark d’évaluation de retrieval documentaire visuel, couvrant rapports financiers, articles scientifiques, infographies, documents administratifs en plusieurs langues dont le français. Les résultats publics placent ColPali devant les pipelines OCR + BM25 et OCR + embeddings sur la quasi-totalité des sous-tâches, avec un écart particulièrement marqué sur les documents riches en tableaux et en schémas. L’écart se réduit sur les documents purement textuels où l’OCR fait correctement son travail, ce qui suggère une stratégie hybride : ColPali sur les documents visuellement complexes, embeddings texte classiques ailleurs, avec un routeur de requête en amont.
Ce que ça change pour un projet RAG côté Askem
Trois bénéfices se concrétisent rapidement sur les projets que l’on rencontre. D’abord, le coût d’ingestion s’effondre : plus de chaîne fragile OCR + extraction de tableaux + nettoyage, donc moins d’incidents et un temps d’intégration de nouveaux corpus divisé par cinq. Ensuite, la qualité de réponse s’améliore sur les documents que l’OCR maltraitait : rapports d’études, plans, formulaires, schémas, où ColPali récupère le contexte visuel que le texte seul n’expose pas. Enfin, la traçabilité progresse : on peut surligner la zone exacte de la page utilisée pour la réponse, ce que beaucoup de référents métier réclament dans les SI publics ou réglementés.
Limites à connaître avant de se lancer
ColPali ne dispense pas d’évaluer son pipeline avec un outil comme RAGAS. Le modèle hérite des biais de PaliGemma sur les langues moins représentées, et la qualité reste meilleure en anglais qu’en français, même si l’écart se réduit avec les versions successives. La taille de l’index multi-vecteur est un poste de coût à intégrer dès la conception. Enfin, ColPali ne remplace pas les briques aval : il faut toujours un LLM pour générer la réponse à partir des pages remontées, idéalement multimodal pour pouvoir lire l’image directement, comme Claude ou un modèle ouvert servi via vLLM.
Le lien avec Docling : complément, pas concurrent
ColPali ne remplace pas Docling, présenté ici dans un article précédent. Les deux outils règlent des problèmes différents et se combinent très bien. Docling est un extracteur : il transforme un PDF en représentation textuelle structurée (markdown hiérarchisé, tableaux, métadonnées), idéale pour bâtir un index texte classique, alimenter un moteur de recherche plein-texte, ou nourrir un LLM avec des passages propres. ColPali est un moteur de retrieval visuel : il court-circuite l’extraction et indexe directement l’image de la page, ce qui préserve la mise en page, les schémas et la structure visuelle des tableaux.
Dans un projet réel, la combinaison la plus robuste consiste à faire tourner Docling sur le corpus textuel courant, ColPali sur le sous-ensemble visuellement complexe (rapports d’études, formulaires, plans, infographies), et à fusionner les scores via un retrieval hybride.
Ce qu’il faut retenir
ColPali n’est pas un gadget de recherche, c’est un changement d’architecture pour le retrieval documentaire. Pour tout corpus où la mise en page porte du sens, c’est aujourd’hui la voie open source la plus solide pour bâtir un RAG fiable, traçable, et nettement moins fragile que les pipelines OCR historiques. À tester dès la phase POC, en parallèle d’une approche texte classique, sur un échantillon représentatif de documents réels.
