una imagen vale más que mil palabras. Sin embargo, muy pocos chatbots empresariales pueden devolver imágenes basadas en sus documentos fuente de manera confiable.
¿Porqué es eso?
La razón es que, aunque esto sería una mejora significativa con respecto a la experiencia del usuario de solo texto, es difícil hacerlo de manera confiable y consistente. Sin embargo, no faltan casos de uso en los que esto sería invaluable. Desde clientes de proyectos inmobiliarios hasta técnicos de servicio que consultan sobre los últimos parámetros de la máquina, los usuarios preferirían ver las imágenes de propiedades relevantes y específicas y las tablas de mantenimiento como parte de la respuesta. En cambio, lo mejor que podemos hacer es obtener una respuesta con enlaces a los documentos fuente (folletos, vídeos, manuales) y páginas web.
En este artículo, presentaré una canalización RAG de puntero proxy multimodal de código abierto, que puede lograr esto, principalmente, porque considera un documento como un árbol jerárquico de bloques semánticos, en lugar de una bolsa de palabras que debe dividirse a ciegas en fragmentos para responder una consulta.
Esta es una continuación de mis artículos anteriores sobre Proxy-Pointer RAG, donde exploré en profundidad el fundamento y la implementación de la arquitectura. Aquí exploraremos lo siguiente:
¿Por qué la respuesta multimodal es un problema difícil de resolver? ¿Y cuáles son las técnicas actuales que se pueden aplicar? Cómo lo logra Proxy-Pointer con total escalabilidad y costo mínimo con una canalización de solo texto: no se requieren incrustaciones multimodales. Un prototipo funcional con consultas de prueba para que pruebes usando el repositorio de código abierto.
Empecemos.
Multimodalidad y RAG Normal
Cuando pensamos en RAG multimodal, casi siempre significa que puede buscar en la base de conocimientos utilizando imágenes junto con una consulta de texto. Rara vez ocurre al revés. Para comprender las razones, veamos los posibles enfoques sobre cómo se hace esto generalmente:
Subtítulos de imagen
Ejecute un modelo OCR/Vision en las imágenes, convierta la imagen en un párrafo de texto e indexe en un fragmento junto con otro texto. Esto no es ideal, ya que la fragmentación de la ventana deslizante puede provocar que el título de la imagen se divida en fragmentos.
El problema central es una desalineación entre las unidades de recuperación y las unidades semánticas. El RAG tradicional recupera fragmentos arbitrarios, mientras que el significado (y especialmente las imágenes) pertenecen a secciones coherentes de un documento.
Cuando se recupera un fragmento, es posible que el LLM solo vea un título parcial (por ejemplo, para la Figura 5), lo que dificulta determinar si la imagen es realmente relevante para este fragmento o para uno adyacente que no se recuperó. Además, el sintetizador a menudo recibe múltiples fragmentos de diferentes documentos sin contexto compartido, que potencialmente contienen varios títulos de imágenes no relacionados. Esto dificulta que el LLM decida de manera confiable cuáles de las imágenes, si las hay, son relevantes para la consulta del usuario.
Incrustación multimodal
Otro enfoque consiste en incrustar imágenes y texto en un espacio vectorial compartido utilizando un modelo multimodal. Si bien esto permite la recuperación intermodal, presenta un desafío diferente. Las incorporaciones multimodales optimizan la similitud, no la conexión a tierra. Los artefactos visual o estructuralmente similares (como tablas financieras de diferentes empresas) pueden parecer casi idénticos en el espacio vectorial, incluso cuando solo uno es relevante para la consulta.
Sin el contexto de la estructura del documento, el sistema recupera candidatos basándose en la similitud, pero no puede determinar con seguridad qué imagen pertenece realmente a la respuesta. Como resultado, el LLM se ve obligado a elegir entre múltiples imágenes plausibles pero potencialmente incorrectas, lo que a menudo hace que sea más seguro no devolver ninguna que arriesgarse a mostrar la incorrecta.
Proxy-Pointer resuelve esto reemplazando la fragmentación basada en texto por una basada en árbol. No nos desglosamos por número de caracteres; nos fragmentamos según los límites seccionales. Si una sección contiene 3 párrafos y 2 imágenes, ninguno de los fragmentos va más allá y pasa a la siguiente sección. El LLM puede considerar cada sección como una unidad semántica totalmente independiente y puede emitir juicios sobre las imágenes que contienen con confianza.
Veamos cómo funcionará esto en la práctica.
Configuración del prototipo
Construí un chatbot multimodal a partir de 5 artículos de investigación sobre IA (todos con licencia CC-BY). Estos son CLIP, Nemobot, GaLore, VectorFusion y VectorPainter. Para la extracción de PDF, se utilizó Adobe PDF Extract API. Como es de esperar, los artículos contienen texto denso junto con un total de 270 imágenes (figuras, tablas, fórmulas) entre ellos, que Adobe podría extraer. El modelo de incrustación utilizado es gemini-embedding-001 (con dimensiones reducidas a 1536 desde el valor predeterminado 3072, lo que hace que la búsqueda sea más rápida y reduce el uso de memoria). Este es un modelo de incrustación de solo texto. No se utiliza ningún modelo de incrustación multimodal. Para todos los usos de LLM (filtro de ruido, reclasificador, sintetizador y filtro de visión final), se utiliza gemini-3.1-flash-lite-preview. El índice vectorial utilizado es FAISS.
Arquitectura de puntero proxy multimodal
En mis inmersiones profundas anteriores, compartí evidencia de que Proxy-Pointer RAG podría lograr una precisión del 100 % en documentos financieros 10-K al indexar "indicadores estratégicos" (rutas de navegación como "Finanzas > Elemento 1A > Factores de riesgo") en lugar de fragmentos sin procesar.
Para la salida multimodal, modificamos los pasos del proceso con la siguiente premisa: las imágenes (figuras, tablas, fórmulas, videoclips, etc.) se pueden extraer como archivos de artefactos (.jpg, .png, .svg, .mp4, etc.) y almacenarse junto con el contenido del documento. Esto es bastante sencillo si el documento fuente es una página web o XML. Para archivos PDF, aunque no es perfecto, un extractor como Adobe PDF Extract API, que se utiliza aquí, puede extraer las tablas y figuras como artefactos.
En el documento extraído, que en nuestro caso es una rebaja, cada cifra está presente como una ruta relativa, por ejemplo;  dentro del texto, que apunta al nombre de archivo real. A continuación se muestra una ilustración:
Además, inspirados en el rompecabezas Tangram que forma diferentes objetos utilizando un conjunto de elementos básicos, como se ilustra en la Fig. 2 (b), reformamos la tarea de síntesis como una reorganización de un conjunto de trazos extraídos de la imagen de referencia.  “La noche estrellada”  “Autorretrato” 
Lo que nos lleva a la siguiente información clave que utiliza Proxy-Pointer. En la práctica, el LLM no necesita ver la imagen en sí para determinar la relevancia. En cambio, sólo necesita saber que existe una imagen dentro de una sección específica del documento. Dado que la recuperación de Proxy-Pointer incluye secciones completas, en lugar de fragmentos fragmentados, el LLM puede confiar en el contexto completo de la sección para juzgar la relevancia. Esto convierte la selección de imágenes en una decisión condicional basada en el significado de la sección y la consulta del usuario, en lugar de un problema de búsqueda abierto basado en una coincidencia de similitud multimodal.
Así es exactamente como leen los humanos. No saltamos para ver todas las tablas y figuras mencionadas; primero usamos el contexto de la sección y nuestra consulta para decidir cuáles vale la pena mirar.
Aquí está el proceso de indexación:
Árbol esqueleto: como antes, analizamos los encabezados de Markdown en un árbol jerárquico con Python puro. Solo que ahora, se anida una matriz de figuras dentro de cada nodo, que anota cada figura encontrada dentro de ese nodo (sección) junto con la ruta. La ruta se utiliza para recuperar el archivo de imagen para su visualización. El resto de los campos se explican por sí mismos de la siguiente manera:
{ "title": "1 Introducción", "node_id": "0003", "line_num": 17, "figures": [ { "fig_id": "fig_1", "filename": "figures/fileoutpart0.png" }, { "fig_id": "fig_2", "filename": "tables/fileoutpart1.png" } ] },
Los siguientes 4 pasos siguen siendo esencialmente los mismos que antes:
Inyección de ruta de navegación: anteponga la ruta estructural completa (Abundante > 3. Metodología > 3.1. Convolución cero) a cada fragmento antes de incrustarlo.
Fragmentación guiada por estructura: divida el texto dentro de los límites de la sección, nunca a través de ellos
Filtrado de ruido: elimine las secciones que distraen (TOC, glosario, resúmenes ejecutivos, referencias) del índice mediante un LLM.
Contexto basado en punteros: utilice fragmentos recuperados como punteros para cargar la sección completa e ininterrumpida del documento (que ahora contiene rutas de imágenes dentro del texto) para el sintetizador.
El proceso de recuperación actualizado para la recuperación multimodal es el siguiente:
Etapa 1 (Recuerdo amplio): FAISS devuelve los 200 fragmentos principales incorporando similitudes. Estos se deduplican mediante `(doc_id, node_id)` para garantizar que estemos analizando secciones de documentos únicas, lo que da como resultado una lista corta de los 50 nodos candidatos principales. Este paso sigue siendo el mismo que antes.
Etapa 2 (Reclasificación estructural basada en anclajes): el reclasificador ahora recibe la ruta de navegación completa (como antes) + un fragmento semántico (150 caracteres) para cada uno de los 50 candidatos. Esto se introdujo porque, a diferencia de los 10-K financieros o los manuales técnicos, los artículos académicos suelen utilizar títulos genéricos y no descriptivos (como "3. Experimentos", "4. Optimización" o "5. Comparación"). Esto requiere que el LLM tenga una pequeña "pista semántica" para identificar con precisión cuál de esas secciones vagas contiene realmente las puntuaciones de precisión y similitud que solicita el usuario.
Etapa 3 (Síntesis y selección de imágenes conscientes del contexto): Synthesizer LLM revisa las k = 5 secciones finales y forma la respuesta de texto. Además, hace una llamada visual a las imágenes que se encuentran dentro para saber cuáles deben mostrarse. Escanea las secciones en busca de rutas de imágenes y selecciona una lista de un máximo de 6 imágenes que parecen más relevantes para la consulta. Además, el sintetizador también forma etiquetas de imágenes precisas para su visualización incluso si esa tabla o figura no tiene ningún título explícito del autor.
El proceso anterior puede proporcionar una precisión del 95% para la recuperación de imágenes en el punto de referencia de 20 preguntas que creé, según lo juzgado por Claude. He compartido algunos de los resultados en la siguiente sección. Los resultados completos están disponibles en el repositorio. Además, si desea refinar aún más los resultados, el siguiente paso es un filtro Vision opcional.
Etapa 4 (Filtro de visión: opcional): para obtener más refinamientos de las imágenes seleccionadas, se puede activar un paso de selección de Visión opcional en config.py. Aquí se le pide al LLM que vea las 6 imágenes usando sus capacidades de Visión, considere la consulta del usuario y la respuesta de texto y elimine cualquier imagen que no parezca relevante. Esto da como resultado imágenes precisas y seleccionadas que se muestran en la respuesta, pero agrega unos segundos de latencia. Esto no se utilizó para los resultados de las pruebas de referencia.
Finalmente, se crea una interfaz de usuario simple e iluminada para visualizar los resultados.
Resultados
Probé el bot en un conjunto de 20 preguntas, desde recuperación precisa hasta razonamiento entre documentos, razonamiento estructural, etc. Los resultados completos están presentes en mi repositorio de github. Los resultados son: 17 recuperaciones perfectas, 1 sin imagen recuperada, 2 recuperaciones parciales. Sin embargo, la observación más importante aquí es que no hay ningún caso en el que una imagen incorrecta de un documento no relacionado con la consulta se haya filtrado en los resultados, erosionando así la confianza en el bot. Esto es posible gracias a la precisión quirúrgica de Proxy-Pointer. Cuando la recuperación de imágenes no es adecuada, se debe a la variación de LLM y a razones del nodo secundario que analizo en la siguiente sección.
A continuación se muestra una instantánea de algunos resultados. Por motivos de brevedad, las respuestas de texto se truncan aquí:
Pregunta de recuperación precisa de datos: ¿Cuáles son los hiperparámetros utilizados para ajustar RoBERTa-Base para GaLore en diferentes tareas de GLUE?
Los hiperparámetros utilizados para ajustar RoBERTa-Base para GaLore en las tareas GLUE incluyen una duración de entrenamiento de 30 épocas, una longitud máxima de secuencia de 512 y un tamaño de lote de 32 f Fuentes: • Galore > D. Fine-Tuning Experiments > D.1. Detalles del ajuste fino en GLUE • Galore > Épocas • Galore > 5. Experimentos Lista de evidencia verificada por IA: • Galore – Tabla 7: Hiperparámetros del ajuste fino de la base RoBERTa para GaLore (Galore/tables/fileoutpart157.png)
Pregunta de razonamiento entre documentos: Tanto GaLore como CLIP-CITE abordan el desafío del entrenamiento de modelos eficiente. Compare el enfoque de proyección de gradiente de GaLore con la estrategia de ajuste fino de CLIP-CITE en términos de eficiencia de la memoria y preservación del conocimiento.
GaLore de eficiencia de la memoria: se centra en reducir la huella de memoria de los estados del optimizador (por ejemplo, Adam) proyectando gradientes en un subespacio de bajo rango. Al realizar un seguimiento únicamente de las estadísticas de gradiente de rango bajo, se evita almacenar matrices de rango completo. Es más eficiente en memoria que LoRA ..contd Fuentes: • Galore > 4. GaLore para entrenamiento eficiente en memoria > 4.2. Optimización de la memoria eficiente • En abundancia > 5. Experimentos > 5.4. Ajuste fino de memoria eficiente • CLIP > 4 experimentos > 4.3 Análisis adicional Lista de evidencia verificada por IA: • Galore – Tabla 1: Comparación entre GaLore y LoRA (Galore/tables/fileoutpart39.png) • CLIP – Tabla 5: Comparación de rendimiento y eficiencia del entrenamiento (CLIP/tables/fileoutpart18.png)
Consulta visual: describa las etapas del proceso de VectorFusion: cómo se muestrea primero la imagen rasterizada, luego se convierte a SVG y finalmente se ajusta utilizando la destilación de puntuación latente
La canalización VectorFusion genera SVG a través de tres etapas principales: Muestreo ráster: se muestrea una imagen ráster a partir de un modelo de difusión de texto a imagen previamente entrenado (por ejemplo, Difusión estable) utilizando un solucionador Runge-Kutta. Para garantizar la estética iconográfica, al texto de entrada se le añade un sufijo de aviso ..contd Fuentes: • VectorFusion > 4. Método: VectorFusion • VectorFusion > 4. Método: VectorFusion > 4.1. Una línea de base: texto a imagen a vector • VectorFusion > 4. Método: VectorFusion > 4.2. Muestreo de gráficos vectoriales mediante optimización Lista de evidencia verificada por IA: • VectorFusion – Figura 3: VectorFusion genera SVG en tres etapas. (VectorFusion/figures/fileoutpart29.png) • VectorFusion – Figura 5: Descripción general del procedimiento de optimización de destilación de puntuación latente de VectorFusion. (VectorFusion/figuras/fileoutpart33.png)
Pregunta visual: ¿Qué juegos se implementan en Nemobot y cómo se clasifican según la taxonomía de juegos de Shannon?
Nemobot implementa una variedad de juegos categorizados según la taxonomía de juegos de Shannon, que clasifica las máquinas según su lógica de toma de decisiones: Categoría 1: Máquinas basadas en diccionarios Tic Tac Toe: utiliza un sistema basado en diccionario donde el agente LLM genera dinámicamente movimientos óptimos para los estados del juego, comprimiendo efectivamente el diccionario estado-acción en sus capacidades de inferencia. ..cont. Fuentes: • NemoBot > II. JUEGOS CON MODELOS DE LENGUAJE GRANDE > Taxonomía de juegos de IA con LLM de A. Shannon • NemoBot > IV. EVALUACIÓN DE JUEGOS NEMOBOT > A. Juego basado en diccionario: Tic Tac Toe • NemoBot > I. INTRODUCCIÓN Lista de evidencia verificada por IA: • NemoBot – Tabla I: Juegos de Nemobot categorizados según la taxonomía de juegos de Shannon (NemoBot/tables/fileoutpart5.png)
Casos extremos y compensaciones de diseño
No determinismo LLM
Dado que la selección de imágenes la realiza el LLM, incluso con una temperatura = 0,0, las ejecuciones repetidas de la misma consulta pueden generar imágenes ligeramente diferentes. Dependiendo de nuestras preferencias, podemos sentir que algunos son más relevantes que otros.
Figuras de nodos secundarios
Es probable que las consultas específicas (por ejemplo, ¿Qué es la pérdida por destilación por visión?) encuentren secciones con el concepto particular y muestren la fórmula y las cifras precisas mucho mejor que las generales (por ejemplo, Compare Vectorfusion Pipeline con Vectorpainter). Es probable que las consultas amplias recuperen nodos (secciones) a nivel de encabezado, mientras que las figuras asociadas pueden residir dentro de nodos secundarios, que no caben dentro de la ventana de contexto k=5. Sin embargo, preguntar sobre cualquiera de los canales individualmente funcionaría bien, ya que los 5 espacios van a un solo documento, lo que pone en contexto los nodos secundarios adecuados (y, por lo tanto, las cifras relevantes).
Rutas de imágenes separadas
Este enfoque supone la ruta de la imagen (por ejemplo, ``) existe físicamente dentro de la sección recuperada. Si se hace referencia a una figura en el texto pero se almacena en una sección separada (por ejemplo, un Apéndice) que no se recupera, no aparecerá. Una solución práctica es nombrar los archivos de imagen de una manera que pueda derivarse (`table_1.jpg`, `figure_3.png`) para que el sintetizador pueda construir la ruta a partir de la referencia, en lugar de depender de nombres de extractores genéricos como `fileoutpart1.png`. Independientemente del enfoque, el principio básico se mantiene: no se necesita incrustación multimodal ni interpretación visual. El contexto de la sección completa es suficiente para que el LLM realice selecciones inteligentes de imágenes.
Repositorio de código abierto
Proxy-Pointer es completamente de código abierto (licencia MIT) y se puede acceder a él desde el repositorio de Proxy-Pointer Github. La canalización multimodal se está agregando al mismo repositorio además de la versión de solo texto existente.
Está diseñado para un inicio rápido de 5 minutos:
MultiModal/ ├── src/ │ ├── config.py # Selección de modelo (Gemini 3.1 Flash Lite) │ ├── agente/ │ │ └── mm_rag_bot.py # MultiModal RAG Logic │ ├── indexación/ │ │ ├── md_tree_builder.py # Generador de árbol de estructura │ │ └── build_md_index.py # Generador de índices vectoriales │ └── extracción/ │ └── extract_pdf.py # Adobe pdf Extracción a lógica MD ├── data/ # Centro de datos unificados │ ├── papeles_extraídos/ # Markdown y cifras procesadas │ └── pdf/ # PDF de origen original ├── resultados/ # Centro de evaluación comparativa │ ├── test_log.json # Resultados y métricas de 20 consultas │ └── test_queries.json # Preguntas de referencia ├── app.py # UI multimodal Streamlit └── run_test_suite.py # Ejecutor de referencia automatizado
Conclusiones clave
El RAG multimodal no es principalmente un problema de visión, sino un problema de alineación de recuperación.
El desafío no es extraer o incrustar imágenes, sino asociarlas con confianza con el contexto semántico correcto. La recuperación basada en fragmentos rompe la coherencia visual.
La fragmentación de ventanas deslizantes fragmenta los subtítulos y desconecta las imágenes de sus verdaderas unidades semánticas, lo que dificulta una selección confiable. Las incorporaciones multimodales introducen ambigüedad, no claridad.
Los artefactos visualmente similares (p. ej., tablas, diagramas) son difíciles de distinguir en el mismo espacio vectorial, lo que dificulta distinguir la relevancia sin una base estructural. La estructura es la capa que falta.
Tratar los documentos como unidades semánticas jerárquicas permite que las imágenes hereden el significado de su sección, lo que permite una selección segura. Proxy-Pointer replantea el problema.
En lugar de buscar imágenes directamente, recupera secciones y selecciona imágenes condicionalmente basándose en el contexto completo, lo que convierte un difícil problema de recuperación en una tarea de filtrado más sencilla. La precisión es más importante para las imágenes que para el texto.
Mostrar una imagen incorrecta puede ser más perjudicial que omitir una por completo, lo que hace que la precisión sea fundamental para los casos de uso empresarial.
Conclusión
Desde hace tiempo se considera que las respuestas multimodales son el siguiente paso en la evolución de los sistemas RAG. Sin embargo, a pesar de los avances en los modelos de visión y las incrustaciones multimodales, devolver de manera confiable imágenes relevantes junto con el texto sigue siendo un problema sin resolver.
La razón es sutil pero fundamental: los canales RAG tradicionales operan en fragmentos, mientras que el significado (especialmente el significado visual) vive en el nivel de la estructura completa del documento. Sin alinear la recuperación con unidades semánticas, incluso los modelos más avanzados tienen dificultades para realizar las asociaciones visuales correctas.
Proxy-Pointer MultiModal RAG aborda esta brecha actualizando la base de fragmentos planos a un contexto estructurado. Al recuperar secciones completas y tratar las rutas de las imágenes como punteros a artefactos dentro de ellas, se permiten respuestas multimodales precisas, escalables y rentables, sin depender de costosas incrustaciones multimodales.
El resultado es un paso adelante práctico: chatbots que no sólo narran, sino que muestran evidencia precisa, siempre basada en el contexto correcto.
Clona el repositorio. Pruebe sus propios documentos. Déjame saber tus pensamientos.
Conéctese conmigo y comparta sus comentarios en www.linkedin.com/in/partha-sarkar-lets-talk-AI
Todos los trabajos de investigación utilizados en este artículo están disponibles en CLIP, Nemobot, GaLore, VectorFusion y VectorPainter con licencia CC-BY. El código y los resultados de las pruebas comparativas son de código abierto bajo la licencia MIT. Las imágenes utilizadas en este artículo se generan con Google Gemini.