
Apporter l’intelligence vision-langage à RAG avec ColPali
Avez-vous déjà essayé de créer une application RAG (Retrieval-Augmented Generation), vous connaissez probablement les défis posés par les tableaux et les images. Cet article explore comment aborder ces formats à l’aide de modèles de langage Vision, en particulier avec le modèle ColPali.
Mais d’abord, qu’est-ce que RAG exactement – et pourquoi les tableaux et les images rendent-ils la tâche si difficile ?
RAG et analyse
Imaginez que vous soyez confronté à une question telle que :
Quelle est la politique de notre entreprise en matière de traitement des remboursements ?
Un LLM (Large Language Model) fondamental ne sera probablement pas en mesure de répondre à cette question, car ces informations sont spécifiques à l’entreprise et ne sont généralement pas incluses dans les données de formation du modèle.
C’est pourquoi une approche courante consiste à connecter le LLM à une base de connaissances, telle qu’un dossier SharePoint contenant divers documents internes. Cela permet au modèle de récupérer et d’incorporer un contexte pertinent, lui permettant ainsi de répondre à des questions qui nécessitent des connaissances spécialisées. Cette technique est connue sous le nom de Retrieval-Augmented Generation (RAG) et implique souvent de travailler avec des documents tels que des PDF.
Cependant, extraire les bonnes informations d’une base de connaissances vaste et diversifiée nécessite un prétraitement approfondi des documents. Les étapes courantes comprennent :
- Analyse: Analyse de documents en textes et images, souvent assistée par des outils de reconnaissance optique de caractères (OCR) comme Tesseract. Les tableaux sont le plus souvent convertis en textes
- Préservation des structures: Conserver la structure du document, y compris les titres et les paragraphes, en convertissant le texte extrait dans un format qui conserve le contexte, tel que Markdown
- Morceau: diviser ou fusionner des passages de texte, afin que les contextes puissent être introduits dans la fenêtre contextuelle sans que les passages semblent disjoints
- Enrichissant: Fournissez des métadonnées supplémentaires, par exemple extraire un mot-clé ou fournir un résumé des morceaux pour faciliter la découverte. En option, pour sous-titrer également les images avec des textes descriptifs via LLM multimodal pour rendre les images consultables
- Intégration: Incorporez les textes (et potentiellement les images aussi avec l’intégration multimodale), et stockez-les dans une base de données vectorielle
Comme vous pouvez l’imaginer, le processus est très compliqué, implique beaucoup d’expérimentation et est très fragile. Pire encore, même si nous essayions de le faire du mieux que nous pouvions, cette analyse pourrait ne pas fonctionner après tout.
Pourquoi l’analyse échoue souvent
Les tableaux et les images existent souvent dans les PDF. L’image ci-dessous montre comment ils sont généralement analysés pour la consommation de LLM :

- Textes sont fragmentés
- Tableaux sont transformés en textes, tout ce qu’ils contiennent est copié sans préserver les limites du tableau
- Images sont introduites dans un LLM multimodal pour la génération d’un résumé de texte, ou bien, l’image originale est introduite dans un modèle d’intégration multimodal sans avoir besoin de générer un résumé de texte
Cependant, une telle approche traditionnelle présente deux problèmes inhérents.
#1. Les tableaux complexes ne peuvent pas être simplement interprétés comme des textes
En prenant ce tableau comme exemple, nous, en tant qu’humains, interpréterions qu’un changement de température de >2˚C à 2,5˚C’s implication sur Santé est Une augmentation de 2,3°C d’ici 2080 expose jusqu’à 270 millions de personnes au risque de paludisme

Cependant, si nous transformons ce tableau en texte, cela ressemblerait à ceci : Temperature change Within EC target <(2˚C) >2˚C to 2.5˚C >3C Health Globally it is estimated that A rise of 2.3oC by 2080 puts A rise of 3.3oC by 2080 an average temperature rise up to 270 million at risk from would put up to 330...
Le résultat est un bloc de texte confus sans signification perceptible. Même pour un lecteur humain, il est impossible d’en extraire un quelconque aperçu significatif. Lorsque ce type de texte est introduit dans un Large Language Model (LLM), il ne parvient pas non plus à produire une interprétation précise.
#2. Dissociation entre textes et images
La description de l’image est souvent incluse dans les textes et ils sont indissociables les uns des autres. En prenant l’exemple ci-dessous, nous savons que le graphique représente les « coûts modélisés du changement climatique avec différents taux purs de préférence temporelle et des systèmes de taux d’actualisation dégressifs (pas de pondération des capitaux propres) »

Cependant, au fur et à mesure de l’analyse, la description de l’image (texte analysé) sera dissociée de l’image (graphique analysé). Nous pouvons donc nous attendre, lors du RAG, à ce que l’image ne soit pas récupérée en entrée lorsque nous soulevons une question telle que « quel est le coût du changement climatique ?

Ainsi, même si nous essayons de concevoir des solutions qui préservent autant d’informations que possible lors de l’analyse, elles échouent souvent face à des scénarios réels.
Étant donné l’importance critique de l’analyse dans les applications RAG, cela signifie-t-il que les agents RAG sont voués à l’échec lorsqu’ils travaillent avec des documents complexes ? Absolument pas. Avec ColPali, nous avons une approche plus raffinée et efficace pour les gérer.
Qu’est-ce que ColPali ?
Le principe de base de ColPali est simple : l’homme lit le PDF sous forme de pages, et non de « morceaux », il est donc logique de traiter le PDF comme tel : au lieu de passer par le processus compliqué d’analyse, nous transformons simplement les pages PDF en images et les utilisons comme contexte pour que LLM fournisse une réponse.

Désormais, l’idée d’intégrer des images à l’aide de modèles multimodaux n’est pas nouvelle : c’est une technique courante. Alors, qu’est-ce qui distingue ColPali ? La clé réside dans son inspiration de ColBERT, un modèle qui intègre les entrées dans des multi-vecteurs, permettant une recherche plus précise et efficace.
Avant de plonger dans les capacités de ColPali, permettez-moi une brève parenthèse pour expliquer en quoi consiste ColBERT.
ColBERT : intégration granulaire et contextuelle des textes
ColBERT est une technique d’intégration et de reclassement de texte qui s’appuie sur plusieurs vecteurs pour améliorer la précision de la recherche de textes.
Considérons ce cas : nous avons cette question : is Paul vegan?nous devons identifier quel mandrin de texte contient les informations pertinentes.

Idéalement, nous devrions identifier Text Chunk A comme le plus pertinent. Mais si nous utilisons un modèle d’intégration à vecteur unique (text-ada-002), il renverra Text Chunk B plutôt.
La raison réside dans le fonctionnement des bi-encodeurs à vecteur unique, comme text-ada-002. Ils tentent de compresser une phrase entière en un seul vecteur, sans coder les mots individuels de manière contextuelle. En revanche, ColBERT intègre chaque mot avec une conscience contextuellece qui se traduit par un plus riche, multi-vecteur représentation qui capture des informations plus nuancées.

ColPali : le frère de ColBERT pour la gestion d’images de type document
ColPali suit une philosophie similaire mais l’applique aux images de type document. Tout comme ColBERT décompose le texte et intègre chaque mot individuellement, ColPali divise une image en patchs et génère des intégrations pour chaque patch. Cette approche préserve davantage la les détails contextuels de l’image, permettant une interprétation plus précise et significative.

Outre une précision de récupération plus élevée, les avantages de ColPali incluent :
- Explicabilité: ColPali permet une comparaison au niveau des mots entre la requête et les patchs d’image individuels d’un document. Cela nous permet de comprendre et de justifier clairement pourquoi un document particulier est jugé plus pertinent.
- Effort de développement réduit et plus grande robustesse: En éliminant le besoin de pipelines de prétraitement complexes, tels que le découpage, l’OCR et l’analyse de mise en page, ColPali réduit considérablement le temps de développement et minimise les points de défaillance potentiels.
- Gains de performances: Les processus d’intégration et de récupération sont plus rapides, ce qui se traduit par une meilleure réactivité globale du système.
Maintenant que vous savez ce qu’est ColPali, plongeons-nous dans le code et voyons si ColPali peut résoudre les défis que nous avons mentionnés plus tôt !
Illustration
Mon code se trouve dans mon GitHub. Quelques mots à ce sujet :
- Exemple: L’exécution du code nécessite une machine avec GPU A100
- Modèle d’intégration: ColPali a un certain nombre de variantes, j’utilise
vidore/colqwen2-v0.1pour démonstration. Vous pouvez vous référer au classement ici et passer à d’autres modèles - Agent:
– LLM: J’utilise OpenRouter pour consommer LLM et l’agent est alimenté parGPT-4o. Vous pouvez le remplacer par n’importe quel LLM multimodal pouvant prendre une image en entrée
– Orchestration:LangGraphest utilisé pour développer l’agent - Bibliothèque utilisée pour convertir des PDF en images:
pdf2imagequi est un emballage pourpoppler. Alors s’il vous plaît, assurez-vous d’avoir égalementpopplerinstallé - Exemples de données: « Les impacts et les coûts du changement climatique » écrit par Paul Watkiss et al, qui est accessible au public ici
Résultats
Le code est assez simple, je vais donc passer à la conclusion : dans quelle mesure ColPali peut-il gérer les problèmes que nous avons vus dans la section « Pourquoi l’analyse échoue souvent ? » section?
#1. Les tableaux complexes ne peuvent pas être simplement interprétés comme des textes
Question: Quel est l’impact sur la santé si la température dépasse de 3 degrés le niveau préindustriel ?
Répondre: Si la température dépasse de 3 degrés Celsius les niveaux préindustriels, l’impact sur la santé serait important. Specifically, it is estimated that by the 2080s, up to 330 million people would be at risk from malaria. Il s’agit d’une augmentation substantielle par rapport aux années 1920, où le nombre de personnes menacées se situait entre 50 et 100 millions.
Ceci est correctement référencé dans ce tableau dans le PDF !

#2. Dissociation entre textes et images
Question: Quel est le coût modélisé du changement climatique, selon le modèle décroissant du Greenbook ?
Répondre: Selon le modèle dégressif du Greenbook, le coût modélisé du changement climatique est de 7,2 euros/tCO2
La bonne réponse devrait être 7,4 euros/tCO2, mais on voit qu’elle est proche de la bonne !

Conclusion
Les pipelines RAG traditionnels ont du mal avec le contenu non textuel. ColPali traite chaque page PDF comme une image, ce qui lui permet de traiter des mises en page visuelles, des tableaux, des graphiques et des graphiques intégrés — des formats que les analyseurs de texte standard déforment ou ignorent souvent.
ColPali apporte l’intelligence du langage visuel à RAG, le rendant bien plus capable de gérer la réalité désordonnée et multimodale des documents d’entreprise.



