⏱️ Lectura: 12 min
El rag multimodal es la respuesta a una limitación incómoda del RAG clásico: los documentos del mundo real no son solo texto. Un PDF científico mezcla párrafos con figuras, tablas, fórmulas y, a veces, fragmentos de código. Cuando un sistema de Retrieval-Augmented Generation se restringe a texto plano, descarta entre 30% y 50% de la información útil de un documento técnico promedio. RAG-Anything, publicado por el grupo HKUDS de la Universidad de Hong Kong, ataca ese problema con un framework all-in-one que procesa cualquier tipo de contenido dentro de un único pipeline coherente.
📑 En este artículo
En este artículo desarmamos la arquitectura completa: cómo se construye el dual-graph que conecta entidades textuales con elementos visuales, cómo funciona el cross-modal hybrid retrieval, qué hace cada una de las cinco etapas del pipeline (parsing, análisis modal, extracción de conocimiento, indexación y consulta), y cómo se instala y utiliza desde Python en menos de diez líneas. Todo el material se basa en el paper arXiv 2510.12323 y los repositorios oficiales en GitHub.
Abstract: el problema del RAG limitado a texto
El RAG tradicional sigue una receta sencilla: dividir documentos en chunks, embeberlos con un modelo como text-embedding-3-large o bge-m3, almacenarlos en una base vectorial (FAISS, Qdrant, pgvector) y, en tiempo de consulta, recuperar los k más cercanos para inyectarlos en el contexto del LLM. Funciona bien para wikis, documentación técnica plana o transcripciones, pero falla cuando el conocimiento vive en formatos no textuales:
- Diagramas de arquitectura — un grafo dice más que mil palabras, pero el OCR los pierde.
- Tablas comparativas — la relación fila-columna desaparece al linealizarlas.
- Fórmulas matemáticas — LaTeX mal extraído rompe el contexto semántico.
- Figuras experimentales — un benchmark se entiende mirando la curva, no leyendo la leyenda.
RAG-Anything propone un sistema unificado donde cada modalidad mantiene su semántica original durante todo el flujo, en lugar de aplastarla a texto perdiendo información estructural.
Qué es RAG-Anything
RAG-Anything es una librería Python open-source ([raganything en PyPI](https://pypi.org/project/raganything/)) construida por el equipo del Hong Kong University Data Science Lab (HKUDS). Combina dos proyectos previos del mismo grupo:
- LightRAG — un framework RAG basado en grafos de conocimiento que combina retrieval por entidades y por relaciones.
- MinerU — un parser de documentos PDF/DOCX desarrollado por OpenDataLab que preserva layout, tablas y figuras con alta fidelidad.
La novedad técnica de RAG-Anything está en cómo orquesta ambos sistemas y añade una capa de análisis modal especializado: cada figura se describe con un Vision-Language Model (VLM), cada tabla se serializa preservando su estructura relacional y cada fórmula se normaliza a LaTeX antes de entrar al grafo de conocimiento.
Cómo funciona: arquitectura dual-graph
El corazón conceptual del sistema es la estructura dual-graph. En lugar de un único grafo de conocimiento, RAG-Anything mantiene dos grafos interconectados:
Grafo textual
Equivalente al de LightRAG: nodos son entidades extraídas del texto (personas, conceptos, organizaciones, métodos), aristas son relaciones semánticas (causa, parte-de, equivalente-a). Se construye con extracción guiada por LLM sobre los chunks textuales del documento.
Grafo modal
Cada elemento no textual (imagen, tabla, ecuación) se convierte en un nodo modal con tres atributos:
- Embedding visual — del VLM, captura la apariencia.
- Caption generado — descripción textual producida por el VLM.
- Contexto local — los párrafos cercanos donde aparece el elemento.
Las aristas entre ambos grafos se llaman cross-modal links y se generan cuando una entidad textual es mencionada en el caption de una figura, o cuando una tabla referencia un concepto del cuerpo del documento. Esa conectividad bidireccional permite saltar de “¿qué dice la Figura 3?” a “¿qué entidades del paper aparecen en la Figura 3?” en un solo hop.
💭 Clave: el dual-graph no es decoración arquitectónica. Es lo que permite que una query como “compará el rendimiento de los modelos en la tabla 2” recupere simultáneamente la tabla, su descripción textual y los párrafos que la contextualizan.
Cross-modal hybrid retrieval
En el momento de la consulta, RAG-Anything ejecuta tres búsquedas en paralelo y fusiona resultados:
- Vector search textual — sobre los embeddings de chunks.
- Graph traversal — sobre el grafo de entidades, expandiendo desde las entidades nombradas en la query.
- Modal retrieval — busca elementos visuales relevantes vía similaridad de embedding o coincidencia de caption.
Los resultados se rerankean con scoring híbrido y se inyectan al LLM como contexto. Cuando el modelo es un VLM (GPT-4o, Claude 3.5 Sonnet, Qwen2-VL), las imágenes se pasan como entrada nativa; cuando es un LLM solo-texto, se usa el caption generado.
El pipeline de 5 etapas
Estructuralmente, el flujo desde un PDF hasta una respuesta atraviesa cinco fases bien definidas.
flowchart LR
A[PDF/DOCX] --> B[1. Parsing<br/>MinerU]
B --> C[2. Análisis modal<br/>VLM + parsers]
C --> D[3. Extracción de<br/>conocimiento]
D --> E[4. Indexación<br/>dual-graph]
E --> F[5. Query<br/>retrieval híbrido]
F --> G[Respuesta]
Etapa 1: Parsing
MinerU procesa el documento de entrada y produce un JSON estructurado con bounding boxes, tipos de elemento (texto, imagen, tabla, fórmula) y orden de lectura. Soporta PDF, DOCX, PPTX y formatos de imagen (PNG, JPG con OCR).
Etapa 2: Análisis modal
Cada elemento se rutea al procesador adecuado: el texto va a un chunker semántico, las imágenes a un VLM que produce descripciones detalladas, las tablas a un serializador que preserva la estructura relacional, las fórmulas a un normalizador LaTeX.
Etapa 3: Extracción de conocimiento
Sobre los chunks de texto se aplica extracción de entidades y relaciones guiada por LLM (mismo enfoque que LightRAG). Sobre los elementos modales, se generan tripletas a partir de los captions visuales.
Etapa 4: Indexación
Se construyen los dos grafos, se calculan embeddings para nodos textuales y modales, y se establecen los cross-modal links. Todo se persiste en almacenamiento configurable (por defecto, JSON+NumPy local; opcionalmente Neo4j, Milvus, PostgreSQL).
Etapa 5: Query
El retrieval híbrido recupera contexto relevante y se invoca al LLM (o VLM) generador de la respuesta final.
Implementación práctica
RAG-Anything se distribuye como paquete PyPI estándar. La instalación trae todas las dependencias necesarias incluyendo MinerU.
Instalación
pip install raganything
# Variables de entorno (OpenAI por defecto)
export OPENAI_API_KEY="sk-..."
export OPENAI_BASE_URL="https://api.openai.com/v1"
Indexar un PDF con texto, imágenes y tablas
import asyncio
from raganything import RAGAnything, RAGAnythingConfig
from raganything.llm import openai_complete_if_cache, openai_embed
from functools import partial
config = RAGAnythingConfig(
working_dir="./rag_storage",
parser="mineru",
parse_method="auto",
enable_image_processing=True,
enable_table_processing=True,
enable_equation_processing=True,
)
llm = partial(openai_complete_if_cache, "gpt-4o-mini")
vlm = partial(openai_complete_if_cache, "gpt-4o")
embed = partial(openai_embed, model="text-embedding-3-large")
rag = RAGAnything(
config=config,
llm_model_func=llm,
vision_model_func=vlm,
embedding_func=embed,
)
async def main():
await rag.process_document_complete(
file_path="./papers/transformer.pdf",
output_dir="./parsed",
parse_method="auto",
)
asyncio.run(main())
Esto ejecuta el pipeline completo: MinerU parsea, el VLM describe figuras, el LLM extrae entidades, y el dual-graph se persiste en ./rag_storage.
Consulta multimodal
async def consultar():
respuesta = await rag.aquery(
"¿Qué muestra la Figura 1 sobre la atención multi-cabeza? "
"Compará con los resultados de la Tabla 2.",
mode="hybrid", # combina vector + graph + modal
)
print(respuesta)
asyncio.run(consultar())
El modo hybrid activa las tres rutas de retrieval simultáneamente. Otros modos disponibles son local (solo entidades cercanas), global (relaciones de alto nivel), naive (vector simple) y mix (híbrido + agente).
💡 Tip: para documentos grandes (papers de más de 50 páginas), conviene usarparse_method="ocr"en vez deauto: aumenta el tiempo de parsing pero captura figuras escaneadas que el modo automático puede saltarse.
Benchmarks reportados
El paper arXiv 2510.12323 evalúa RAG-Anything en cuatro datasets: DocBench (documentos técnicos), MMLongBench-Doc (documentos largos multimodales), PaperQA (preguntas sobre papers científicos) y FinanceBench (informes financieros).
Los resultados, comparados contra baselines de RAG solo-texto (vanilla RAG con GPT-4) y otros sistemas multimodales (M3DocRAG, ColPali), muestran mejoras consistentes:
- +18% accuracy promedio en preguntas que requieren información de tablas o figuras.
- +12% en F1 sobre el bench30%k global comparado con RAG vanilla.
- Reducción del 30% en tokens de contexto inyectado al LLM gracias al retrieval dirigido por grafo.
Las mejoras son especialmente marcadas (más de 25%) en preguntas multi-hop que requieren cruzar información entre texto y figuras, lo que valida empíricamente la hipótesis del dual-graph.
Casos de uso reales
- Búsqueda en literatura científica — equipos de investigación que indexan miles de papers y necesitan encontrar resultados específicos en figuras y tablas.
- Análisis de informes financieros — los 10-K y 10-Q de la SEC son PDFs con tablas densas; RAG-Anything las preserva.
- Documentación técnica empresarial — manuales con diagramas de arquitectura, especificaciones de hardware, esquemas eléctricos.
- Educación — sistemas de tutoría que pueden razonar sobre los gráficos de un libro de texto.
- Compliance y legal — contratos con anexos visuales, regulaciones con flujogramas.
Ventajas y desventajas
Ventajas
- End-to-end — un solo paquete cubre desde el PDF hasta la respuesta.
- Modelo-agnóstico — funciona con OpenAI, Anthropic, Ollama local, vLLM y cualquier endpoint compatible.
- Open-source con licencia MIT — uso comercial sin restricciones.
- Storage configurable — desde JSON local para prototipos hasta Neo4j+Milvus para producción.
- Construido sobre componentes maduros — LightRAG y MinerU son proyectos consolidados.
Desventajas
- Costo de indexación — el análisis modal con VLM es caro; un paper de 20 páginas puede consumir entre 0,30 y 1,50 USD de API.
- Latencia de parsing — MinerU sobre un PDF complejo tarda minutos, no segundos.
- Calidad dependiente del VLM — captions pobres degradan el cross-modal retrieval.
- Sin soporte nativo para video o audio todavía — el roadmap los menciona pero no están implementados.
- Complejidad operacional — más componentes que un RAG vanilla, más superficie de fallo.
⚠️ Ojo: si tu corpus es 100% texto plano (chats, transcripciones, código fuente), RAG-Anything es overkill. Usá LightRAG directamente o un RAG vectorial clásico.
Limitaciones y trabajo futuro
Los autores reconocen explícitamente tres limitaciones en la sección 7 del paper:
- Dependencia del parser — errores de MinerU se propagan al pipeline completo.
- Cross-modal links incompletos — el matching entre entidades textuales y elementos visuales aún se basa en heurísticas que fallan con captions ambiguos.
- Escalabilidad del grafo — para corpus de millones de documentos hace falta sharding del graph storage, no incluido out-of-the-box.
El roadmap contempla soporte para video (con frame sampling y descripción temporal), audio (transcripción + identificación de hablantes) y un mecanismo de aprendizaje continuo del grafo a partir del feedback del usuario.
Conclusiones
RAG-Anything es la evolución natural del rag multimodal: en lugar de tratar imágenes y tablas como ciudadanos de segunda clase que se aplanan a texto, las eleva a nodos de primera clase con su propio embedding, su propia descripción y enlaces explícitos al texto que las contextualiza. La arquitectura dual-graph y el retrieval híbrido cross-modal no son trucos arquitectónicos: son la forma correcta de razonar sobre documentos que mezclan modalidades.
Para equipos que ya tienen un RAG vanilla en producción y notan que las preguntas sobre figuras o tablas devuelven respuestas pobres, RAG-Anything ofrece un upgrade incremental sin reescribir todo el stack. Para proyectos nuevos sobre corpus técnicos o científicos, es probablemente el mejor punto de partida open-source disponible en 2026.
📖 Resumen en Telegram: Ver resumen
Preguntas frecuentes
¿RAG-Anything reemplaza a LightRAG?
No. RAG-Anything extiende LightRAG agregando soporte multimodal. Si tu corpus es solo texto, LightRAG por sí solo es más liviano y rápido. RAG-Anything tiene sentido cuando hay imágenes, tablas o fórmulas relevantes.
¿Necesito un VLM caro como GPT-4o para usarlo?
No es obligatorio. Podés usar VLMs open-source como Qwen2-VL-7B vía Ollama o vLLM. La calidad de los captions baja, pero el sistema funciona. También podés desactivar enable_image_processing si solo te interesan tablas y texto.
¿Qué storage usa por defecto?
Por defecto persiste en JSON+NumPy en el directorio working_dir. Para producción se recomienda Neo4j para el grafo, Milvus o Qdrant para los embeddings, y PostgreSQL para los chunks textuales. La configuración se hace mediante el objeto RAGAnythingConfig.
¿Cuánto cuesta indexar 1000 papers?
Estimando 20 páginas por paper con figuras y tablas, y usando GPT-4o-mini para extracción + GPT-4o para captions visuales, ronda los 300-800 USD según la densidad multimodal. Con modelos locales (Qwen2-VL + Llama 3.1) el costo es solo de cómputo GPU.
¿Funciona offline con modelos locales?
Sí. RAG-Anything soporta cualquier endpoint compatible con la API de OpenAI, incluyendo Ollama, vLLM y LM Studio. Solo hay que apuntar OPENAI_BASE_URL al servidor local y elegir el modelo correspondiente.
¿Cómo se compara con LlamaIndex multimodal o LangChain?
LlamaIndex y LangChain ofrecen primitivas multimodales pero requieren orquestar manualmente el parsing, el captioning y el grafo. RAG-Anything trae todo ensamblado y agrega el dual-graph, que ninguna de las dos librerías generalistas implementa por defecto.
Referencias
- HKUDS/RAG-Anything — repositorio oficial del framework con documentación, ejemplos y código fuente.
- arXiv 2510.12323 — paper técnico de RAG-Anything con arquitectura completa y benchmarks.
- HKUDS/LightRAG — framework de RAG basado en grafos, base sobre la que se construye RAG-Anything.
- raganything en PyPI — paquete oficial para instalación con pip.
- opendatalab/MinerU — parser de documentos PDF/DOCX usado en la etapa 1 del pipeline.
📱 ¿Te gusta este contenido? Únete a nuestro canal de Telegram @programacion donde publicamos a diario lo más relevante de tecnología, IA y desarrollo. Resúmenes rápidos, contenido fresco todos los días.
0 Comentarios