Llevando la inteligencia visión-lenguaje a RAG con ColPali

Alguna vez ha intentado crear una aplicación RAG (Recuperación-Generación Aumentada), probablemente esté familiarizado con los desafíos que plantean las tablas y las imágenes. Este artículo explora cómo abordar estos formatos utilizando Vision Language Models, específicamente con el modelo ColPali.

Pero primero, ¿qué es exactamente RAG y por qué las tablas y las imágenes lo hacen tan difícil?

RAG y análisis

Imagina que te enfrentas a una pregunta como:

¿Cuál es la política de nuestra empresa para el manejo de reembolsos?

Un LLM (modelo de lenguaje grande) básico probablemente no podrá responder a esto, ya que dicha información es específica de la empresa y, por lo general, no se incluye en los datos de capacitación del modelo.

Es por eso que un enfoque común es conectar el LLM a una base de conocimientos, como una carpeta de SharePoint que contenga varios documentos internos. Esto permite que el modelo recupere e incorpore contexto relevante, permitiéndole responder preguntas que requieren conocimientos especializados. Esta técnica se conoce como generación aumentada de recuperación (RAG) y, a menudo, implica trabajar con documentos como archivos PDF.

Sin embargo, extraer la información correcta de una base de conocimientos amplia y diversa requiere un preprocesamiento exhaustivo de los documentos. Los pasos comunes incluyen:

Análisis: análisis de documentos en textos e imágenes, a menudo con la ayuda de herramientas de reconocimiento óptico de caracteres (OCR) como Tesseract. Las tablas se suelen convertir en textos Preservación de la estructura: mantener la estructura del documento, incluidos encabezados y párrafos, convirtiendo el texto extraído a un formato que retenga el contexto, como Markdown Chunking: dividir o fusionar pasajes de texto, de modo que los contextos se puedan introducir en la ventana de contexto sin que los pasajes parezcan inconexos. Enriquecimiento: proporcionar metadatos adicionales, por ejemplo, extraer palabras clave o proporcionar un resumen de los fragmentos para facilitar el descubrimiento. Opcionalmente, también subtitular imágenes con textos descriptivos a través de LLM multimodal para que las imágenes puedan buscarse. Incrustación: incruste los textos (y potencialmente también las imágenes con incrustación multimodal) y guárdelos en una base de datos vectorial.

Como puedes imaginar, el proceso es muy complicado, implica mucha experimentación y es muy frágil. Peor aún, incluso si intentáramos hacerlo lo mejor que pudiéramos, es posible que este análisis no funcione después de todo.

Por qué el análisis a menudo se queda corto

Las tablas y las imágenes suelen existir en archivos PDF. La siguiente imagen muestra cómo se analizan normalmente para el consumo de LLM:

Fuente: Imagen del autor.

Los textos se fragmentan Las tablas se convierten en textos, todo lo que contiene se copia sin preservar los límites de la tabla. Las imágenes se introducen en un LLM multimodal para la generación de un resumen de texto o, alternativamente, la imagen original se introduce en un modelo de incrustación multimodal sin necesidad de generar un resumen de texto.

Sin embargo, hay dos problemas inherentes a este enfoque tradicional.

#1. Las tablas complejas no pueden interpretarse simplemente como textos
Tomando esta tabla como ejemplo, nosotros, como humanos, interpretaríamos que un cambio de temperatura de >2˚C a 2,5˚C tiene implicaciones para la salud. Un aumento de 2,3˚C para 2080 pone a 270 millones de personas en riesgo de contraer malaria.

Fuente: Los impactos y costos del cambio climático

Sin embargo, si convertimos esta tabla en un texto, se vería así: Cambio de temperatura Dentro del objetivo de la CE <(2˚C) >2˚C a 2,5˚C >3C Salud A nivel mundial se estima que Un aumento de 2,3oC para 2080 Un aumento de 3,3oC para 2080 un aumento de temperatura promedio de hasta 270 millones en riesgo pondría a 330…

El resultado es un bloque de texto desordenado sin significado discernible. Incluso para un lector humano, es imposible extraer información significativa de él. Cuando este tipo de texto se introduce en un modelo de lenguaje grande (LLM), tampoco produce una interpretación precisa.

#2. Disociación entre textos e imágenes
La descripción de la imagen suele incluirse en los textos y son inseparables unos de otros. Tomando lo siguiente como ejemplo, sabemos que el gráfico representa los “Costos modelados del cambio climático con diferentes tasas puras de preferencia temporal y esquemas de tasas de descuento decrecientes (sin ponderación de capital)”

Fuente: Los impactos y costos del cambio climático

Sin embargo, a medida que se analiza, la descripción de la imagen (texto analizado) se disociará de la imagen (gráfico analizado). Por lo tanto, podemos esperar que durante RAG la imagen no se recupere como entrada cuando planteemos una pregunta como “¿cuál es el costo del cambio climático?”

Por lo tanto, incluso si intentamos diseñar soluciones que conserven la mayor cantidad de información posible durante el análisis, a menudo se quedan cortas cuando nos enfrentamos a escenarios del mundo real.

Dado lo crítico que es el análisis en las aplicaciones RAG, ¿significa esto que los agentes RAG están destinados a fallar cuando trabajan con documentos complejos? En absoluto. Con ColPali, tenemos un enfoque más refinado y eficaz para manejarlos.

¿Qué es ColPali?

La premisa central de ColPali es simple: los humanos leen el PDF como páginas, no como “fragmentos”, por lo que tiene sentido tratar el PDF como tal: en lugar de pasar por el complicado proceso de análisis, simplemente convertimos las páginas del PDF en imágenes y las usamos como contexto para que el LLM proporcione una respuesta.

Ahora bien, la idea de incrustar imágenes utilizando modelos multimodales no es nueva: es una técnica común. Entonces, ¿qué hace que ColPali se destaque? La clave radica en su inspiración en ColBERT, un modelo que incorpora entradas en múltiples vectores, lo que permite una búsqueda más precisa y eficiente.

Antes de profundizar en las capacidades de ColPali, permítanme hacer una breve digresión para explicar de qué se trata ColBERT.

ColBERT: incrustación granular y contextual para textos

ColBERT es una técnica de incrustación y reclasificación de texto que aprovecha múltiples vectores para mejorar la precisión de la búsqueda de textos.

Consideremos este caso: tenemos esta pregunta: ¿Paul es vegano? Necesitamos identificar qué texto contiene la información relevante.

Resaltados en amarillo están los textos que contienen información sobre Pablo.

Idealmente, deberíamos identificar el fragmento de texto A como el más relevante. Pero si utilizamos un modelo de incrustación de un solo vector (text-ada-002), devolverá el fragmento de texto B.

La razón radica en cómo funcionan los codificadores bicodificadores de un solo vector, como text-ada-002. Intentan comprimir una oración completa en un solo vector, sin codificar palabras individuales de manera consciente del contexto. Por el contrario, ColBERT incorpora cada palabra con conciencia contextual, lo que da como resultado una representación multivectorial más rica que captura información más matizada.

Los números en los vectores son ilustrativos y no representan los valores reales.

ColPali: el hermano de ColBERT para el manejo de imágenes tipo documento

ColPali sigue una filosofía similar pero la aplica a imágenes tipo documento. Así como ColBERT descompone el texto e incrusta cada palabra individualmente, ColPali divide una imagen en parches y genera incrustaciones para cada parche. Este enfoque preserva más detalles contextuales de la imagen, lo que permite una interpretación más precisa y significativa.

Además de una mayor precisión de recuperación, los beneficios de ColPali incluyen:

Explicabilidad: ColPali permite la comparación a nivel de palabra entre la consulta y los parches de imágenes individuales de un documento. Esto nos permite comprender y justificar claramente por qué un documento en particular se considera más relevante. Esfuerzo de desarrollo reducido y mayor solidez: al eliminar la necesidad de procesos de preprocesamiento complejos, como fragmentación, OCR y análisis de diseño, ColPali reduce significativamente el tiempo de desarrollo y minimiza los posibles puntos de falla. Mejoras de rendimiento: los procesos de integración y recuperación son más rápidos, lo que da como resultado una mejor capacidad de respuesta general del sistema.

Ahora que sabes qué es ColPali, profundicemos en el código y veamos si ColPali puede resolver los desafíos que mencionamos anteriormente.

Ilustración

Mi código se puede encontrar en mi Github. Algunas palabras al respecto:

Instancia: ejecutar el código requiere una máquina con GPU A100 Modelo de incrustación: ColPali tiene varias variantes, estoy usando vidore/colqwen2-v0.1 para demostración. Puede consultar la tabla de clasificación aquí y cambiar a otros modelos Agente:
– LLM: estoy usando OpenRouter para consumir LLM y el agente funciona con GPT-4o. Puede sustituirlo por cualquier LLM multimodal que pueda tomar imágenes como entrada.
– Orquestación: LangGraph se utiliza para desarrollar la biblioteca del agente utilizada para convertir PDF en imágenes: pdf2image, que es un contenedor para poppler. Así que asegúrese de tener también poppler instalado Datos de muestra: “The Impacts and Costs of Climate Change” escrito por Paul Watkiss et al, que está disponible públicamente aquí

Resultados

El código es bastante sencillo, por lo que en su lugar llegaré a una conclusión: ¿Qué tan bien puede ColPali lidiar con los problemas que hemos visto en “¿Por qué el análisis a menudo falla?” ¿sección?

#1. Las tablas complejas no pueden interpretarse simplemente como textos

Pregunta: ¿Cuál es el impacto en la salud si la temperatura aumenta 3 grados por encima del nivel preindustrial?

Respuesta: Si la temperatura aumenta 3 grados centígrados por encima de los niveles preindustriales, el impacto en la salud sería significativo. En concreto, se estima que para la década de 2080, hasta 330 millones de personas estarían en riesgo de padecer malaria. Se trata de un aumento sustancial en comparación con la década de 1920, cuando el número de personas en riesgo oscilaba entre 50 y 100 millones.

¡Esto se menciona correctamente en esta tabla en el PDF!

Fuente: Página 3 de Los impactos y costos del cambio climático

#2. Disociación entre textos e imágenes

Pregunta: ¿Cuál es el costo modelado del cambio climático, según el modelo decreciente del Libro Verde?

Respuesta: Según el modelo decreciente del Libro Verde, el coste modelado del cambio climático es de 7,2 euros/tCO2.

La respuesta correcta debería ser 7,4 euros/tCO2, ¡pero podemos ver que está cerca de ser correcta!

Fuente: Página 46 de Los impactos y costos del cambio climático.

Conclusión

Los canales RAG tradicionales luchan con el contenido no textual. ColPali trata cada página PDF como una imagen, lo que le permite procesar diseños visuales, tablas, cuadros y gráficos incrustados, formatos que los analizadores de texto estándar a menudo distorsionan o ignoran.

ColPali aporta inteligencia visión-lenguaje a RAG, haciéndolo mucho más capaz de manejar la realidad desordenada y multimodal de los documentos empresariales.