Hola a todos. Soy Joaquín Ruiz, consultor y experto en Inteligencia Artificial afincado en Zaragoza, desde donde ayudo a empresas de toda España a implementar soluciones reales y escalables de IA.
Si llevas tiempo trabajando en el ecosistema de la Inteligencia Artificial, seguro que estás familiarizado con la arquitectura RAG (Retrieval-Augmented Generation). Sin embargo, en mis consultorías de IA, he detectado un muro de cristal con el que todas las empresas acaban chocando: el RAG tradicional se rompe cuando la respuesta requiere conectar información dispersa. Hoy vamos a romper ese muro. En este post, te voy a enseñar cómo construir un sistema GraphRAG 100% en local, corriendo en tu propia CPU (sin necesidad de costosas GPUs ni APIs de terceros) utilizando Llama 3.1, Neo4j y LangChain.
Aquí tienes el vídeo completo donde programo el código paso a paso y te muestro el grafo en tiempo real. ¡No olvides darle LIKE, compartir y suscribirte a mi canal!
1. El Problema: La “Ceguera Relacional” del RAG Tradicional
El RAG clásico funciona vectorizando el texto; es decir, corta los documentos en fragmentos y los convierte en coordenadas matemáticas. Cuando un usuario hace una pregunta, el sistema busca por similitud semántica. Esto es fantástico para recuperar datos aislados, pero falla estrepitosamente en el razonamiento de múltiples saltos (multi-hop reasoning).
Imaginemos un caso clínico o un misterio:
- El documento A dice: “Carlos Gómez tiene problemas respiratorios”.
- El documento B dice: “Carlos trabaja en la fábrica ElectroCorp”.
- El documento C dice: “ElectroCorp sufrió una fuga del químico NeoTox-88”.
Si le preguntas a un RAG tradicional “¿Qué causó la enfermedad de Carlos?”, el sistema buscará fragmentos con las palabras “Carlos” o “enfermedad”. Jamás recuperará el documento C sobre la fuga química, porque carecen de similitud semántica directa. La IA no puede “conectar los puntos”.
2. La Solución: GraphRAG y los Grafos de Conocimiento
GraphRAG (Graph Retrieval-Augmented Generation) soluciona esto introduciendo estructura. En lugar de guardar fragmentos de texto planos, utiliza un modelo de lenguaje para leer los documentos y extraer entidades (nodos) y relaciones (aristas).
De este modo, creamos un Grafo de Conocimiento donde “Carlos” se conecta a “ElectroCorp”, y “ElectroCorp” se conecta a la “fuga tóxica”. Cuando hacemos la misma pregunta, el sistema aterriza en el nodo de Carlos y navega por las conexiones de forma determinista para encontrar la causa raíz.
Este enfoque no solo reduce drásticamente las alucinaciones del modelo , sino que en entornos empresariales complejos ha demostrado multiplicar por 3.4 la precisión de las respuestas frente al RAG convencional.
3. Construyendo nuestro GraphRAG Local (El Stack Tecnológico)
Como experto en IA, siempre busco la optimización de recursos. Para este tutorial, he diseñado una arquitectura de coste cero que puedes correr en tu portátil:
- Gestor de paquetes (uv): Sustituimos el
piptradicional poruv, una herramienta escrita en Rust que resuelve e instala dependencias en milisegundos. - Base de Datos (Neo4j en Docker): Levantamos un contenedor local de Neo4j exponiendo los puertos 7474 (interfaz) y 7687 (conexión Bolt) para almacenar nuestro grafo de forma nativa.
- Motor de Inferencia (Ollama + Llama 3.1): Utilizamos la versión cuantizada de Llama 3.1 (8B) a través de Ollama. Esto nos permite ejecutar un modelo altamente capaz directamente en la CPU y la RAM de nuestro equipo.
- Orquestación (LangChain): Es el pegamento que unirá todo el flujo de trabajo.
La magia del código: Extracción y Consulta
El salto cualitativo de un RAG a un GraphRAG ocurre gracias a dos módulos clave de LangChain:
LLMGraphTransformer: Obligamos a Llama 3.1 (con la temperatura a 0 para que sea determinista) a analizar el texto, extraer las entidades y generar los nodos y aristas que inyectaremos en Neo4j.GraphCypherQAChain: En la fase de consulta, la IA no hace una búsqueda semántica ciega. Toma la pregunta del usuario y escribe una consulta nativa en lenguaje Cypher para navegar por el grafo de Neo4j y devolver la respuesta exacta.
4. El debate arquitectónico: ¿LangChain o LangGraph?
Muchos ingenieros y desarrolladores en España me preguntan por qué no utilizo LangGraph para este proyecto, dado que es la tendencia actual para crear agentes autónomos.
La respuesta está en la latencia del hardware local. LangGraph está diseñado para flujos de trabajo no lineales y sistemas multi-agente donde la IA piensa, ejecuta, evalúa su propio resultado y entra en bucles cíclicos.
Si ejecutamos esos ciclos iterativos en una CPU casera con un modelo local, los tiempos de inferencia se dispararían, haciendo que el sistema tarde minutos en responder. Para este prototipo local con recursos limitados, el enfoque secuencial y lineal de LangChain (recuperar, procesar y responder) es infinitamente más eficiente y predecible. Una vez llevemos este sistema a la nube con GPUs dedicadas, evolucionar hacia un enrutamiento agéntico con LangGraph será el siguiente paso lógico.
¿Hablamos de IA?
Si estás buscando un experto en Inteligencia Artificial en Zaragoza o necesitas consultoría para implementar arquitecturas avanzadas como GraphRAG en tu empresa en cualquier parte de España, no dudes en contactarme. La estructuración del conocimiento es el verdadero foso defensivo de las empresas en la era de la IA generativa.
Puedes encontrar todo el código fuente de este tutorial en el enlace de mi repositorio de GitHub detallado en la descripción del vídeo.
Nos vemos en el próximo post, que la IA te acompañe!
