Vision is All You Need: Building an Intelligent Document Retrieval System Using Visual Language Models (Visión RAG)
Últimos recursos sobre IAActualizado hace 7 meses Círculo de intercambio de inteligencia artificial 1.8K 00
Introducción general
Vision-is-all-you-need es un innovador proyecto de demostración del sistema visual RAG (Retrieval Augmented Generation) que abre nuevos caminos en la aplicación del modelado del lenguaje visual (VLM) al ámbito del tratamiento de documentos. A diferencia de los métodos tradicionales de fragmentación de texto, el sistema utiliza directamente el modelo de lenguaje visual para procesar las imágenes de página de los archivos PDF, convirtiéndolas en forma vectorial para su almacenamiento. El sistema adopta ColPali como modelo de lenguaje visual central, junto con la base de datos vectorial QDrant para lograr una recuperación eficaz, e integra el modelo GPT4 o GPT4-mini para las preguntas y respuestas inteligentes. El proyecto realiza completamente todo el proceso, desde la importación de documentos PDF, la conversión de imágenes y el almacenamiento vectorial hasta la recuperación inteligente, y proporciona una cómoda interfaz API y una interfaz front-end fácil de usar, lo que supone una solución totalmente nueva para el campo del procesamiento inteligente de documentos.

Dirección de demostración: https://softlandia-ltd-prod--vision-is-all-you-need-web.modal.run/
Lista de funciones
- Incrustación de páginas PDF: Convierte las páginas de un archivo PDF en imágenes y las incrusta como vectores utilizando un modelo de lenguaje visual.
- Almacenamiento de bases de datos vectoriales: Utiliza Qdrant como base de datos vectorial para almacenar vectores de imágenes incrustadas.
- Búsqueda de consultasEl usuario puede buscar vectores similares a la imagen incrustada y generar una respuesta.
- Interfaz APIProporcionar una interfaz API RESTful para facilitar las operaciones de carga, consulta y recuperación de archivos.
- Interacción frontal: a través de Reaccione La interfaz front-end interactúa con la API para ofrecer una experiencia fácil de usar.
Utilizar la ayuda
Proceso de instalación
- Instalación de Python 3.11 o posterior::
pip install modal
modal setup
- Configuración de variables de entorno: Crear un
.env
y añada lo siguiente:
OPENAI_API_KEY=your_openai_api_key
HF_TOKEN=your_huggingface_token
- ejemplo de funcionamiento::
modal serve main.py
ejemplo de uso
- Cargar archivos PDFAbra su navegador, vaya a la URL proporcionada por Modal y añada lo siguiente a la URL
/docs
. Haga clic enPOST /collections
seleccioneTry it out
para cargar el archivo PDF y ejecutarlo. - Consultar páginas similares: Uso
POST /search
envía imágenes de páginas y consultas a la API de OpenAI y devuelve la respuesta.
desarrollo front-end
- Instalación de Node.js::
cd frontend
npm install
npm run dev
- Configuración del entorno de front-endModificación
.env.development
añada la URL del backend:
VITE_BACKEND_URL=your_backend_url
- Front End de lanzamiento::
npm run dev
Procedimiento de funcionamiento detallado
- Incrustación de páginas PDF::
- utilizar
pypdfium
Convierte páginas PDF en imágenes. - Pasar la imagen a un modelo de lenguaje visual (por ejemplo, ColPali) para obtener el vector de incrustación.
- Almacena los vectores de incrustación en la base de datos de vectores Qdrant.
- utilizar
- Búsqueda de consultas::
- El usuario introduce una consulta y el vector de incrustación de la consulta se obtiene mediante un modelo de lenguaje visual.
- Buscar vectores de incrustación similares en la base de datos de vectores.
- La consulta y la mejor imagen coincidente se pasan a un modelo (por ejemplo, GPT4o) para generar una respuesta.
- Uso de la API::
- Cargar archivos PDF: a través de
POST /collections
Los puntos finales cargan archivos. - Consultar páginas similares: por
POST /search
El punto final envía una consulta y obtiene una respuesta.
- Cargar archivos PDF: a través de
- Interacción frontal::
- Utiliza la interfaz front-end de React para interactuar con la API.
- Ofrece funciones de carga de archivos, introducción de consultas y visualización de resultados.
Artículo de referencia: ¿construir un GAR? ¿Cansado de fragmentar? Puede que lo único que necesites sea visión.
En el corazón de la mayoría de las soluciones modernas de IA generativa (GenAI), hay algo llamado el RAG Los ingenieros de software del campo de la IA aplicada suelen referirse al método de Generación Mejorada por Recuperación (RAG) como "RAG". Los ingenieros de software del campo de la IA aplicada suelen referirse a ella como "RAG". Con la RAG, los modelos lingüísticos pueden responder a preguntas basadas en los datos propiedad de una organización.
La primera letra R de RAG significa Recuperar (recuperación), que hace referencia al proceso de búsqueda. Cuando un usuario formula una pregunta a un robot GenAI, el motor de búsqueda en segundo plano debe encontrar exactamente el material pertinente a la pregunta para generar una respuesta perfecta y sin alucinaciones.A y G se refieren a la introducción de los datos recuperados en el modelo lingüístico y a la generación de la respuesta final, respectivamente.
En este artículo, nos centramos en el proceso de recuperación, ya que es la parte más crítica, lenta y difícil de implementar en una arquitectura GAR. En primer lugar, exploraremos el concepto general de recuperación y, a continuación, presentaremos el mecanismo tradicional de recuperación RAG basado en trozos. La segunda parte del artículo se centra en un nuevo enfoque de la GAR basado en datos de imagen para la recuperación y la generación.
Breve historia de la recuperación de información
Google y otras grandes empresas de motores de búsqueda llevan décadas intentando resolver el problema de la recuperación de información; "intentando" es la palabra clave. La recuperación de información sigue sin ser tan sencilla como cabría esperar. Una de las razones es que los humanos procesamos la información de forma distinta a las máquinas. Traducir el lenguaje natural en consultas de búsqueda sensatas en diversos conjuntos de datos no es fácil. Los usuarios avanzados de Google pueden estar familiarizados con todas las técnicas posibles para manipular el motor de búsqueda. Pero el proceso sigue siendo engorroso, y los resultados de la búsqueda pueden ser bastante insatisfactorios.
Gracias a los avances en los modelos lingüísticos, la recuperación de información cuenta de repente con una interfaz de lenguaje natural. Sin embargo, los modelos lingüísticos no consiguen proporcionar información basada en hechos porque sus datos de entrenamiento reflejan una instantánea del mundo en el momento del entrenamiento. Además, el conocimiento está comprimido en el modelo, y el conocido problema de la ilusión es inevitable. Al fin y al cabo, los modelos lingüísticos no son motores de búsqueda, sino máquinas de razonamiento.
La ventaja de un modelo lingüístico es que se le pueden proporcionar muestras de datos e instrucciones y pedirle que responda basándose en estas entradas. La ChatGPT y casos de uso típicos para interfaces de IA conversacional similares. Pero la gente es perezosa, y con el mismo esfuerzo podría haber hecho la tarea usted mismo. Por eso necesitamos RAG: podemos simplemente hacer preguntas a una solución de IA aplicada y obtener respuestas basadas en información precisa. Al menos, en un mundo de búsqueda perfecta, ésta es la situación ideal.
¿Cómo funciona la recuperación en el GAR tradicional?
Los métodos de búsqueda de la GAR son tan variados como las propias implementaciones de la GAR. La búsqueda es siempre un problema de optimización, y no existe una solución genérica que pueda aplicarse a todos los escenarios: la arquitectura de IA debe adaptarse a cada solución específica, ya sea la búsqueda u otra funcionalidad.
Sin embargo, la solución de base típica es la denominada técnica de fragmentación (chunking). En este enfoque, la información almacenada en la base de datos (normalmente documentos) se divide en pequeños trozos, aproximadamente del tamaño de un párrafo. A continuación, cada trozo se convierte en un vector numérico mediante un modelo de incrustación asociado a un modelo lingüístico. Los vectores numéricos generados se almacenan en una base de datos vectorial específica.
A continuación se realiza una búsqueda sencilla en una base de datos vectorial:
- El usuario formula una pregunta.
- Generar un vector de incrustación a partir del problema.
- Realizar búsquedas semánticas en una base de datos vectorial.
- En la búsqueda semántica, la proximidad entre los vectores de las preguntas y los vectores de la base de datos se mide matemáticamente, teniendo en cuenta el contexto y el significado del bloque de texto.
- La búsqueda vectorial devuelve, por ejemplo, los 10 bloques de texto más coincidentes.
A continuación, el bloque de texto recuperado se inserta en el contexto (cue) del modelo lingüístico y se pide al modelo que genere la respuesta a la pregunta original. Estas dos etapas posteriores a la recuperación son las fases A y G de la GAR.
Las técnicas de fragmentación y otros tratamientos previos a la indexación pueden influir considerablemente en la calidad de la búsqueda. Existen decenas de métodos de preprocesamiento de este tipo, y la información también puede organizarse o filtrarse (lo que se denomina reordenación) después de la búsqueda. Además de las búsquedas vectoriales, también pueden utilizarse las búsquedas tradicionales por palabras clave o cualquier otra interfaz de programación para recuperar información estructurada. Algunos ejemplos son las técnicas text-to-SQL o text-to-API para generar nuevas consultas SQL o API basadas en las preguntas del usuario. Para los datos no estructurados, las técnicas de recuperación más utilizadas son el chunking y la búsqueda vectorial.
La fragmentación no está exenta de problemas. Tratar con distintos formatos de archivos y datos es engorroso y hay que escribir un código de fragmentación distinto para cada formato. Aunque existen bibliotecas de software estándar, no son perfectas. Además, hay que tener en cuenta el tamaño de los trozos y las zonas de solapamiento. Además, hay que tener en cuenta el tamaño de los trozos y las zonas de solapamiento. Por último, las imágenes, gráficos, tablas y otros datos plantean un reto en el que es fundamental comprender la información visual y el contexto que la rodea (encabezados, tamaño de letra y otras sutiles señales visuales). Y estas señales se pierden por completo con las técnicas de fragmentación.
¿Y si esta fragmentación es totalmente innecesaria y la búsqueda es como si un humano hojeara una página entera de un documento?
Las imágenes retienen la información visual
Los métodos de búsqueda basados en imágenes se han hecho posibles gracias al desarrollo de modelos multimodales avanzados. Una solución ejemplar de IA basada en datos de imagen es la solución de autoconducción de Tesla, que se basa totalmente en cámaras. La idea que subyace a este enfoque es que los seres humanos perciben su entorno principalmente a través de la visión.
El mismo concepto se aplica a la aplicación RAG. A diferencia del chunking, las páginas enteras se indexan directamente como imágenes, es decir, en el mismo formato en que las vería un ser humano. Por ejemplo, cada página de un documento PDF se introduce en un modelo de IA específico como una imagen (por ejemplo ColPali), el modelo crea representaciones vectoriales basadas en el contenido visual y el texto. A continuación, estos vectores se añaden a la base de datos de vectores. Podemos referirnos a esta nueva arquitectura RAG como el Recuperación visual Generación mejorada(Vision Retrieval-Augmented Generation, o V-RAG).
La ventaja de este enfoque puede ser una mayor precisión en la recuperación que los métodos tradicionales, ya que el modelo multimodal genera una representación vectorial que tiene en cuenta tanto los elementos textuales como los visuales. El resultado de la búsqueda serán las páginas completas del documento, que se introducen como imágenes en un potente modelo multimodal como GPT-4. El modelo puede referenciar directamente la información en gráficos o tablas.
V-RAG elimina la necesidad de extraer primero estructuras complejas (como diagramas o tablas) en texto, luego reconstruir ese texto en un nuevo formato, almacenarlo en una base de datos vectorial, recuperarlo, reordenarlo para formar pistas coherentes y, por último, generar respuestas. Se trata de una ventaja significativa cuando se trata de manuales antiguos, documentos con muchas tablas y cualquier formato de documento centrado en el ser humano en el que el contenido sea algo más que texto plano. La indexación también es mucho más rápida que los procesos tradicionales de detección de diseños y OCR.

Estadísticas de velocidad de indexación en ColPali Papers
No obstante, la extracción de texto de los documentos sigue siendo valiosa y puede proporcionar ayuda junto con la búsqueda de imágenes. Sin embargo, el chunking pronto será una de las muchas opciones disponibles como forma de implementar un sistema de búsqueda de IA.
Vision-RAG en la práctica: Paligemma, ColPali y bases de datos vectoriales
A diferencia de la RAG tradicional basada en texto, las implementaciones de V-RAG siguen necesitando acceso a modelos especializados y computación en GPU. La mejor aplicación de V-RAG es utilizar modelos desarrollados específicamente para este fin. ColPali.
ColPali se basa en el enfoque de búsqueda multivectorial introducido por el modelo ColBERT y el modelo de lenguaje multimodal Paligemma de Google.ColPali es un modelo de búsqueda multimodal, lo que significa que comprende no sólo el contenido textual, sino también los elementos visuales de un documento. De hecho, los desarrolladores de ColPali ampliaron el enfoque de búsqueda basado en texto de ColBERT para abarcar el ámbito visual, utilizando Paligemma.
Al crear una incrustación, ColPali divide cada imagen en una cuadrícula de 32 x 32, y cada imagen tiene aproximadamente 1024 trozos, cada uno representado por un vector de 128 dimensiones. El número total de chunks es de 1030, ya que cada imagen se adjunta también a un token de comando "describir imagen".
La consulta textual del usuario se convierte al mismo espacio de incrustación para comparar los trozos con la parte de la consulta en el proceso de búsqueda. El proceso de búsqueda propiamente dicho se basa en el método MaxSim de la este artículo Se describe detalladamente en. Este método de búsqueda se ha implementado en muchas bases de datos vectoriales que admiten la búsqueda multivectorial.
Vision is All You Need - Demostración y código de V-RAG
Hemos creado una demo de V-RAG y el código está disponible en el repositorio GitHub de Softlandia. la-visión-es-todo-lo-que-necesitas Encuéntrela en. ¡También puedes encontrar otras demos de IA Aplicada en nuestra cuenta!
Ejecutar ColPali requiere una GPU con mucha memoria, así que la forma más sencilla de hacerlo es en una plataforma en la nube que permita el uso de GPU. Por este motivo, elegimos la excelente plataforma Modal, que hace que el uso de GPU sin servidor sea sencillo y rentable.
A diferencia de la mayoría de las presentaciones académicas en línea de Jupyter Notebook, nuestra Visión es todo lo que necesita La demo proporciona una experiencia práctica única. Puedes clonar el repositorio, desplegarlo tú mismo y ejecutar el pipeline completo en GPUs en la nube en cuestión de minutos y de forma gratuita. Este ejemplo de ingeniería de IA de aplicaciones de extremo a extremo destaca por ofrecer una experiencia real que la mayoría de las demás demos no pueden igualar.
En esa demostración, también utilizamos el Qdrant La versión en memoria de Qdrant. Tenga en cuenta que al ejecutar la demo, los datos indexados desaparecen después de que el contenedor subyacente deje de existir.Qdrant soporta búsqueda multivectorial desde la versión 1.10.0. La demo sólo soporta archivos PDF, cuyas páginas se convierten en imágenes utilizando la librería pypdfium2. Además, utilizamos la biblioteca transformers y el colpali-engine creado por los desarrolladores de ColPali para ejecutar el modelo ColPali. También se utilizan otras bibliotecas, como opencv-python-headless (que es obra mía, por cierto).
La demo proporciona una interfaz HTTP para indexar y hacer preguntas. Además, hemos creado una interfaz de usuario sencilla con React. La interfaz de usuario también visualiza cada Ficha del mapa de atención, lo que facilita la visualización de las partes de la imagen que el modelo ColPali considera importantes.

Capturas de pantalla de la demo Vision is All You Need
¿Es realmente visión lo que necesitas?
A pesar del título de la demostración, los modelos de búsqueda como ColPali aún no son lo suficientemente buenos, especialmente para datos multilingües. Estos modelos suelen entrenarse con un número limitado de ejemplos, que casi siempre son archivos PDF de algún tipo específico. En consecuencia, la demo sólo admite archivos PDF.
Otro problema es el tamaño de los datos de imagen y de las incrustaciones calculadas a partir de ellos. Estos datos ocupan un espacio considerable y la búsqueda en grandes conjuntos de datos consume mucha más potencia de cálculo que las búsquedas vectoriales unidimensionales tradicionales. Este problema puede resolverse parcialmente cuantificando las incrustaciones en formas más pequeñas (incluso hasta binarias). Sin embargo, esto conlleva una pérdida de información y una ligera disminución de la precisión de la búsqueda. En nuestra demo, la cuantificación no se ha implementado todavía, ya que la optimización no es importante para la demo. Además, es importante tener en cuenta que Qdrant todavía no soporta directamente vectores binarios.Pero puede Cuantificación en QdrantQdrant optimizará los vectores internamente. Sin embargo, MaxSim basado en la distancia de Hamming aún no está soportado.
Por este motivo, se sigue recomendando realizar un filtrado inicial junto con búsquedas tradicionales basadas en palabras clave antes de utilizar ColPali para la recuperación final de páginas.
Los modelos de búsqueda multimodal seguirán evolucionando, al igual que los modelos de incrustación que tradicionalmente generan incrustaciones de texto. Estoy seguro de que OpenAI o una organización similar lanzará pronto un modelo de incrustación similar al de ColPali que llevará la precisión de la búsqueda al siguiente nivel. Sin embargo, esto pondrá patas arriba todos los sistemas actuales basados en el chunking y en los métodos tradicionales de búsqueda vectorial.
Sin una arquitectura de IA flexible, se quedará atrás
Los modelos lingüísticos, los métodos de búsqueda y otras innovaciones se están lanzando a un ritmo acelerado en el espacio de la IA. Más importante que estas innovaciones en sí es la capacidad de adoptarlas rápidamente, lo que proporciona una ventaja competitiva significativa a las empresas que son más rápidas que sus competidores.
Por tanto, la arquitectura de IA de su software, incluida la función de búsqueda, debe ser flexible y escalable para que pueda adaptarse rápidamente a las últimas innovaciones tecnológicas. A medida que se acelera el desarrollo, es fundamental que la arquitectura central de su sistema no se limite a una única solución, sino que admita una amplia gama de métodos de búsqueda, ya sea la búsqueda tradicional de texto, la búsqueda multimodal de imágenes o incluso modelos de búsqueda totalmente nuevos.
ColPali es sólo la punta del iceberg del futuro. Las soluciones GAR del futuro combinarán múltiples fuentes de datos y tecnologías de búsqueda, y solo una arquitectura ágil y personalizable permitirá su integración sin fisuras.
Para resolver este problema, ofrecemos los siguientes servicios:
- Evalúe el estado de su arquitectura de IA actual
- Profundizar en las tecnologías de IA con sus líderes tecnológicos y desarrolladores, incluidos los detalles a nivel de código.
- Examinamos los métodos de búsqueda, la escalabilidad, la flexibilidad arquitectónica, la seguridad y si la IA (generativa) se utiliza de acuerdo con las mejores prácticas.
- Sugiere mejoras y enumera los próximos pasos específicos para el desarrollo
- Implantar una capacidad de IA o una plataforma de IA como parte de su equipo
- Ingenieros especializados en inteligencia artificial para aplicaciones garantizan que sus proyectos de inteligencia artificial no se retrasen con respecto a otras tareas de desarrollo.
- Desarrollar productos de IA como equipo de desarrollo de productos subcontratado
- Ofrecemos soluciones completas basadas en IA de principio a fin
Ayudamos a nuestros clientes a obtener una importante ventaja competitiva acelerando la adopción de la IA y garantizando su perfecta integración. Si está interesado en obtener más información, póngase en contacto con nosotros para hablar sobre cómo podemos ayudar a su empresa a mantenerse a la vanguardia del desarrollo de la IA.
© declaración de copyright
El artículo está protegido por derechos de autor y no debe reproducirse sin autorización.
Artículos relacionados
Sin comentarios...