Volver a la Biblioteca
Arquitectura

Guía de Implementación de GraphRAG: De Documentos de Texto a Recuperación por Grafo de Conocimiento en Producción

Última actualización: 26 de agosto de 2026

La investigación GraphRAG de Microsoft demostró un 86% de exhaustividad en consultas complejas multi-entidad, frente al 57% de vector RAG tradicional en el mismo conjunto de evaluación — una brecha de 29 puntos porcentuales que aparece siempre que una pregunta requiere recorrer relaciones, no solo coincidir texto. La brecha existe porque el conocimiento de producto es un grafo: dependencias, versiones, compatibilidad, sustitutos, niveles de precios y restricciones de disponibilidad regional son relaciones, no embeddings. Sin embargo, la mayoría de los equipos empiezan con RAG tradicional porque el coste de construcción de GraphRAG ha sido históricamente de 12-16 semanas frente a 6-8 semanas para recuperación basada solo en vectores. Dos herramientas de código abierto publicadas en el último año — el paquete Python neo4j-graphrag de Neo4j con su SimpleKGPipeline y el GraphRAG SDK 1.0 (independiente del LLM, abril 2026) — reducen sustancialmente ese coste de construcción, haciendo GraphRAG viable en semanas, no meses. Esta guía recorre el pipeline de cinco etapas que convierte documentos no estructurados en un sistema de producción de recuperación por grafo de conocimiento: diseño de esquema, extracción de entidades, detección de comunidades, recuperación por grafo e integración de agentes. Identifica las trampas de coste, el riesgo de degradación de gobernanza y el punto de decisión donde RAG tradicional obtiene el 85% del resultado con el 30% del esfuerzo.

Puntos clave

  • 86% de exhaustividad frente al 57% de vector RAGMicrosoft GraphRAG (Edge et al., 2024) midió la recuperación basada en grafo frente a vector RAG en consultas complejas multi-entidad. La brecha de 29 puntos es la ventaja estructural de recorrer relaciones en lugar de coincidir embeddings.
  • 77.6% de mejora en precisión de recuperación y 28.6% de reducción en tiempo de resolución — el despliegue en producción de GraphRAG de LinkedIn en tickets de Jira midió ambas métricas frente a vector RAG de referencia. La estructura del grafo capturó lo que la búsqueda vectorial perdió.
  • GraphRAG hace que los agentes de IA sean un 80% más veraces — el informe de Neo4j sobre reducción de alucinaciones descubrió que la recuperación estructurada por grafo ancla el modelo en relaciones verificadas, reduciendo respuestas fabricadas. GraphRAG no es solo mejor recuperación; es una técnica de mitigación de alucinaciones.
  • RAG tradicional alcanza el 85-90% del rendimiento de GraphRAG con el 30% del esfuerzo — GraphRAG requiere 12-16 semanas desde cero frente a 6-8 semanas para RAG tradicional, y las actualizaciones de grafo por consulta son O(N) por ticket frente a O(1) por documento. El umbral del 85% es el punto de decisión.
  • SimpleKGPipeline y GraphRAG SDK 1.0 reducen la construcción a semanas — el paquete Python neo4j-graphrag incluye un SimpleKGPipeline que maneja división de texto, extracción de entidades, embedding y construcción del grafo en un único pipeline asíncrono. El GraphRAG SDK 1.0 es independiente del LLM, soportando OpenAI, Anthropic, Google, Cohere y más de 100 modelos locales a través de una interfaz unificada.

El pipeline de cinco etapas

Un sistema GraphRAG de producción tiene cinco etapas. Cada etapa tiene un punto de decisión que afecta al coste, la precisión y la carga de mantenimiento. Las etapas son secuenciales pero iterativas — la extracción de entidades alimenta la detección de comunidades, que alimenta la recuperación, y el esquema que gobierna las tres se refina a medida que el corpus revela nuevos tipos de entidad.

El pipeline convierte texto no estructurado en un grafo de conocimiento consultable, luego recupera subgrafos que anclan la respuesta del LLM en relaciones verificadas:

Pipeline de Implementación GraphRAG De texto no estructurado a recuperación por grafo de conocimiento en producción — cinco etapas 1 Diseño de Esquema Definir tipos de nodo, tipos de relación y patrones antes de la extracción Tipos de nodo Product, Component, Supplier, PriceTier, Region, Document Tipos de relación SUBSTITUTE_OF, DEPENDS_ON, COMPATIBLE_WITH, SUPPLIED_BY Patrones (extracción restringida) (Product, SUBSTITUTE_OF, Product) (Product, DEPENDS_ON, Component) 2 Extracción de Entidades El LLM extrae entidades y relaciones de cada fragmento, guiado por el esquema Extracción guiada por LLM Cada fragmento analizado; entidades y relaciones extraídas según plantilla de prompt Resolución de entidades Fusionar duplicados: "Jon" y "Jon Marquez" resueltos a un nodo Trampa de coste Llamadas LLM por fragmento = total fragmentos. 1,000 fragmentos = 1,000 llamadas LLM 3 Detección de Comunidades y Resumen Agrupar entidades relacionadas en comunidades; resumir cada comunidad para consultas globales Algoritmo de Leiden Agrupa entidades en clústeres por conectividad; permite razonamiento multinivel Resúmenes de comunidad El LLM genera un resumen por comunidad; impulsa la búsqueda global Búsqueda local vs global Local: recorrer subgrafo específico. Global: consultar resúmenes de comunidad 4 Recuperación por Grafo Recorrer el grafo mediante consultas Cypher/GQL; combinar traversal de grafo con similitud vectorial Consultas Cypher / GQL Recorridos de grafo deterministas; la consulta devuelve relaciones verificadas Recuperación híbrida Traversal de grafo + similitud vectorial; fusión de resultados clasificados Auditabilidad Humano puede trazar la ruta: Ticket -> Product -> Tier -> Region 5 Integración de Agente vía MCP Exponer consultas de grafo como herramientas MCP tipadas; el agente llama a la recuperación como una herramienta más Módulo MCP expone herramientas de grafo rag_query, get_substitutes, check_dependency como herramientas tipadas Log de auditoría por consulta Cada consulta de grafo registrada con entrada, salida y nodos de origen Riesgo de degradación de gobernanza Restricciones de RAG en contextos compactables son vulnerables 86% de exhaustividad vs 57% vector RAG — Neo4j SimpleKGPipeline + GraphRAG SDK 1.0 hacen la construcción viable en semanas

Etapa 1: Diseño de esquema — la decisión que determina la calidad de extracción

El esquema es el contrato entre el dominio y el pipeline de extracción. Define qué tipos de nodo existen, qué tipos de relación los conectan y qué patrones entidad-relación son válidos. Un esquema flexible (sin restricciones) produce un grafo ruidoso con cientos de tipos de entidad espurios. Un esquema estricto (patrones restringidos) produce un grafo limpio pero puede perder relaciones que el esquema no anticipó.

El paquete Python neo4j-graphrag de Neo4j permite pasar un objeto de esquema a SimpleKGPipeline con tres campos: node_types, relationship_types y patterns. El campo de patrones es la restricción — indica al LLM qué triples entidad-relación-entidad son válidos. Para un grafo de soporte de producto B2B, el esquema podría ser:

  • Tipos de nodo: Product, Component, Supplier, PriceTier, CustomerSegment, Region, Document, Ticket
  • Tipos de relación: SUBSTITUTE_OF, DEPENDS_ON, COMPATIBLE_WITH, SUPPLIED_BY, PRICED_IN, AVAILABLE_IN, RESOLVED_BY
  • Patrones: (Product, SUBSTITUTE_OF, Product), (Product, DEPENDS_ON, Component), (Product, SUPPLIED_BY, Supplier), (Product, PRICED_IN, PriceTier), (Product, AVAILABLE_IN, Region), (Ticket, RESOLVED_BY, Document)

El esquema es la primera trampa de coste. Un esquema demasiado estrecho pierde relaciones importantes (el LLM extrae "Product A es fabricado por Vendor X" pero Vendor no es un tipo de nodo definido, así que la relación se descarta). Un esquema demasiado amplio produce ruido (el LLM extrae cada sustantivo como entidad, inundando el grafo con nodos inútiles). La solución es iterativa: empezar con un esquema restringido basado en las preguntas que el grafo debe responder, ejecutar la extracción en un corpus de muestra, inspeccionar el grafo en busca de relaciones perdidas y ruido, luego refinar. Dos o tres iteraciones son típicas antes de que el esquema se estabilice.

Etapa 2: Extracción de entidades — el centro de coste

La extracción de entidades es donde el LLM hace el trabajo — y donde el coste se acumula. Cada fragmento de texto se envía al LLM con un prompt que le pide extraer entidades y relaciones que coincidan con el esquema. El pipeline de indexación GraphRAG de Microsoft usa un enfoque basado en LLM: cada fragmento se analiza usando un LLM para extraer entidades nombradas y relaciones guiado por una plantilla de prompt. El GraphRAG SDK 1.0 de FalkorDB proporciona la misma extracción basada en LLM pero es independiente del modelo — soporta OpenAI, Anthropic, Google, Cohere, modelos locales de código abierto y más de 100 otros a través de una interfaz unificada, lo que significa que el coste de extracción se puede optimizar eligiendo un modelo más barato para extracción y un modelo más potente para respuesta a consultas.

La aritmética de coste es directa: 1,000 fragmentos de texto requieren 1,000 llamadas LLM para extracción de entidades. Con el precio de GPT-5.6 Sol de $4 por millón de tokens de entrada y $20 por millón de tokens de salida, un corpus de 1,000 fragmentos con 500 tokens por fragmento y 200 tokens de salida de extracción por fragmento cuesta aproximadamente $4 en tokens de entrada y $4 en tokens de salida — unos $8 para la pasada de extracción. Un corpus de 10,000 fragmentos cuesta $80. La extracción es un coste único por construcción del corpus, pero se repite cuando el corpus cambia. Aquí es donde las economías de inferencia de la elección del modelo importan: usar un modelo open-weight más barato para extracción (p. ej., Qwen3.8 Max a $2 por millón de tokens de salida) reduce a la mitad el coste de tokens de salida sin afectar materialmente la calidad de extracción para extracción estructurada de entidad-relación.

La resolución de entidades sigue a la extracción. El LLM puede extraer "Jon" de un fragmento y "Jon Marquez" de otro — ambos refiriéndose a la misma persona. El SimpleKGPipeline maneja esto automáticamente fusionando entidades con la misma etiqueta y propiedad de nombre. Para sistemas de producción, a menudo se necesita lógica de resolución de entidades personalizada — coincidencia difusa en nombres, desambiguación basada en contexto o revisión manual para entidades de alto valor. Omitir la resolución de entidades produce un grafo con nodos duplicados, lo que rompe el recorrido de relaciones (la consulta recorre desde "Jon" pero la respuesta está conectada a "Jon Marquez").

Etapa 3: Detección de comunidades — el habilitador de consultas globales

La detección de comunidades es lo que hace a GraphRAG capaz de responder preguntas globales que el RAG tradicional no puede. El enfoque GraphRAG de Microsoft (Edge et al., 2024) introdujo el paradigma "de local a global": después de que las entidades se extraen y el grafo se construye, un algoritmo de detección de comunidades (Leiden o Louvain) agrupa entidades relacionadas en clústeres, y un LLM genera un resumen para cada comunidad. Estos resúmenes de comunidad habilitan la búsqueda global — preguntas como "¿cuáles son los temas principales en todo este corpus?" — que vector RAG no puede responder porque recupera fragmentos aislados sin estructura temática.

El flujo de trabajo práctico:

  1. Ejecutar detección de comunidades (algoritmo de Leiden) en el grafo entidad-relación. El algoritmo particiona el grafo en clústeres de entidades densamente conectadas. Memgraph 3.0 incluye Leiden como algoritmo integrado, y Neo4j lo proporciona vía la librería Graph Data Science.
  2. Para cada comunidad, enviar las entidades y relaciones de la comunidad al LLM para generar un resumen. Esta es una segunda pasada de coste LLM — una llamada por comunidad, no por fragmento, así que típicamente es más barata que la pasada de extracción.
  3. Almacenar los resúmenes de comunidad junto al grafo. En tiempo de consulta, la búsqueda global recupera los resúmenes de comunidad más relevantes y los usa para responder preguntas temáticas. La búsqueda local recorre subgrafos específicos para preguntas específicas de entidad.

Los dos modos de búsqueda sirven a diferentes preguntas. La búsqueda local responde "¿qué productos son compatibles con SKU X?" recorriendo el grafo desde el nodo SKU. La búsqueda global responde "¿cuáles son los principales riesgos de cadena de suministro en nuestro catálogo de productos?" consultando resúmenes de comunidad que agregan a través de cientos de entidades. RAG tradicional no puede responder ninguna — la búsqueda vectorial recupera fragmentos individuales, no resúmenes temáticos.

Etapa 4: Recuperación por grafo — consultas deterministas, no estimaciones semánticas

La recuperación por grafo es donde GraphRAG diverge más del RAG tradicional. El RAG tradicional embebe la consulta, busca en un índice vectorial los fragmentos más similares y los devuelve. GraphRAG recorre el grafo mediante consultas deterministas — Cypher para Neo4j, GQL para cualquier base de datos de grafos — que devuelven relaciones verificadas, no aproximaciones semánticas.

La capa de recuperación típicamente combina dos estrategias:

  1. Traversal de grafo — una consulta Cypher recorre desde un nodo de entidad hasta sus relaciones. Para una pregunta de soporte "¿puede el cliente Y obtener el precio al por mayor del producto X en la región Z?", la consulta recorre: Product X -> PRICED_IN -> BulkTier, Product X -> AVAILABLE_IN -> Region Z, CustomerSegment Y -> QUALIFIES_FOR -> BulkTier. Si el recorrido tiene éxito, la respuesta está anclada en relaciones de grafo verificadas. Si falta algún enlace, el grafo lo dice explícitamente — a diferencia de la búsqueda vectorial, que devuelve un fragmento similar pero incorrecto.

  2. Similitud vectorial — para preguntas que no requieren recorrido de relaciones, la búsqueda vectorial sobre embeddings de fragmentos (almacenados junto al grafo) maneja la coincidencia semántica. El GraphRAG SDK 1.0 combina ambos: "recuperación multipath que combina traversal de grafo y búsqueda semántica, con fusión de resultados clasificados entre estrategias de recuperación." Este enfoque híbrido usa el grafo para preguntas estructurales y vectores para preguntas semánticas, enrutando automáticamente según el tipo de consulta.

La ventaja de auditabilidad es el beneficio de depuración. Cuando una consulta de grafo devuelve la respuesta incorrecta, un humano puede trazar la ruta (Ticket -> Product -> Tier -> Segment -> Region -> Stockout) y ver exactamente qué relación faltaba o era incorrecta. Cuando una búsqueda vectorial devuelve la respuesta incorrecta, el humano ve un fragmento de texto sin ruta que trazar. La documentación de GraphRAG de Neo4j lo enmarca como "GraphRAG restaura lo que los vectores descartan — conocimiento explícito que un humano puede leer." La mejora del 77.6% en precisión de recuperación que LinkedIn midió en producción se basa en esta auditabilidad: cuando el grafo está equivocado, se puede encontrar y corregir el error; cuando el vector está equivocado, se está adivinando.

Etapa 5: Integración de agente — módulos MCP y degradación de gobernanza

La etapa final expone la recuperación por grafo a un agente de IA como una herramienta MCP tipada. El agente no escribe consultas Cypher directamente — llama a una herramienta como rag_query(question: string) -> answer o get_substitutes(sku: string) -> list[Product] que el módulo MCP traduce a consultas de grafo internamente. Esto sigue el patrón del MCP Module Code Standard: definiciones de herramientas tipadas, validación de entrada, logs de auditoría por llamada y límites de tasa.

El riesgo de degradación de gobernanza es la consideración de diseño que la mayoría de tutoriales de GraphRAG omiten. Cuando un grafo de conocimiento se usa como capa de recuperación para un agente, las restricciones y políticas del grafo se convierten en parte del contexto del agente. Si el contexto es compactable — y todos los contextos lo son, dada la economía de los agentes de larga duración — las restricciones cargadas desde el grafo pueden ser descartadas silenciosamente durante la compactación. Un agente que verificaba correctamente "¿está este producto disponible en la región Z?" contra el grafo puede dejar de verificar después de un evento de compactación de contexto, porque la restricción estaba en el contexto, no en el código. La solución es arquitectónica: las restricciones críticas deben ser impuestas por el código del módulo MCP, no por el contexto del agente. El módulo rechaza la llamada a la herramienta si la restricción se viola, independientemente de lo que diga el contexto del agente. Este es el mismo patrón que la arquitectura de kill-switch impone: la gobernanza que depende de que el agente recuerde comportarse es gobernanza que falla bajo compactación.

El punto de decisión: cuándo construir GraphRAG vs RAG tradicional

No todo problema de recuperación necesita un grafo de conocimiento. El marco de decisión se construye sobre una pregunta: ¿requiere la consulta recorrer relaciones que la similitud vectorial no puede representar?

Criterio RAG tradicional GraphRAG
Tiempo de construcción 6-8 semanas 12-16 semanas desde cero; 4-8 semanas con SimpleKGPipeline o GraphRAG SDK
Actualización por consulta O(1) por documento O(N) por subgrafo de entidad afectada
Exhaustividad 57% en consultas multi-entidad 86% en consultas multi-entidad
Precisión de recuperación Línea base +77.6% (producción LinkedIn)
Tasa de alucinación Línea base -80% (informe Neo4j)
Auditabilidad Fragmento de texto, sin ruta Ruta de grafo trazable por humano
Driver de coste Tamaño del índice vectorial Llamadas LLM por fragmento para extracción
Tipo de pregunta "Encontrar texto similar" "Recorrer relaciones: sustitutos, dependencias, compatibilidad"
Cuándo elegir 70% de consultas son similitud semántica 30% de consultas requieren recorrido de relaciones

El umbral del 85%: RAG tradicional alcanza el 85-90% del rendimiento de GraphRAG con el 30% del esfuerzo cuando la mayoría de consultas son búsquedas de similitud semántica. GraphRAG se convierte en la elección correcta cuando la consulta requiere recorrer relaciones que la búsqueda vectorial aplana — compatibilidad de producto, cadenas de sustitución, resolución de dependencias, razonamiento multihop. Para un equipo de soporte que responde "encuentra el documento sobre autenticación de API," RAG tradicional es suficiente. Para un equipo de soporte que responde "qué versión de API es compatible con esta dependencia de producto, y cuál es el sustituto si no está disponible en esta región," GraphRAG es la única estrategia de recuperación que devuelve la respuesta correcta.

Trampas de coste y cómo evitarlas

La trampa de coste de extracción. La extracción de entidades requiere una llamada LLM por fragmento. Un corpus de 50,000 documentos con 10 fragmentos por documento son 500,000 llamadas LLM. A $8 por 1,000 fragmentos, eso son $4,000 solo para la pasada de extracción. La solución: usar un modelo más barato para extracción (la extracción estructurada de entidad-relación es una tarea bien delimitada que no necesita un modelo frontera) y un modelo más potente para respuesta a consultas. La arquitectura independiente del LLM del GraphRAG SDK 1.0 soporta esta división — diferentes modelos para extracción y recuperación.

La trampa de resolución de entidades. Sin resolución de entidades, el grafo contiene nodos duplicados que rompen el recorrido. "Product A" extraído de un documento y "ProductA" extraído de otro son dos nodos, no uno. El SimpleKGPipeline maneja la resolución básica (misma etiqueta y nombre), pero los sistemas de producción necesitan coincidencia difusa y revisión manual para entidades de alto valor. Presupuestar para esto — no es opcional.

La trampa de degradación de gobernanza. Las restricciones del grafo cargadas en el contexto del agente son vulnerables a la compactación de contexto. La solución es arquitectónica: imponer las restricciones críticas en el código del módulo MCP, no en el contexto del agente. Una restricción que el agente "sabe" es una restricción que puede olvidarse; una restricción que el código impone es una restricción que se mantiene.

La trampa de mantenimiento. GraphRAG no es construir-una-vez. Cuando el corpus cambia, el pipeline de extracción debe re-ejecutarse para los documentos afectados, y el grafo debe actualizarse. Las actualizaciones de grafo por consulta son O(N) — actualizar una entidad puede requerir re-extraer relaciones para todas las entidades conectadas. La actualización por consulta de RAG tradicional es O(1) — un documento cambia, un vector se re-embebe. Para un corpus que cambia frecuentemente, el coste de mantenimiento de GraphRAG puede exceder el coste de construcción en un año.

Lectura relacionada


Un distribuidor industrial de mercado medio que ejecuta NetSuite necesita un grafo de conocimiento GraphRAG que codifique 3,500 sustitutos form-fit-function, dependencias de producto y tiempos de entrega de proveedores en un catálogo de 12,000 SKU. El grafo se construye con el SimpleKGPipeline de Neo4j — esquema diseñado a partir de las preguntas que el grafo debe responder, extracción de entidades con un modelo optimizado en coste, detección de comunidades para consultas temáticas y recuperación por grafo expuesta como herramientas MCP tipadas con logs de auditoría. El agente llama a get_substitutes(sku) y check_dependency(sku, component) como herramientas; el módulo impone las restricciones de disponibilidad en el código, no en el contexto del agente. Tiempo de construcción: 6 semanas con el SDK, no 16 semanas desde cero. El comprador humano aprueba reabastecimientos superiores a $5,000; el agente maneja el resto. Las roturas de stock caen 63%, $840K en capital de trabajo se libera y el conocimiento de sustitución sobrevive a la próxima retirada de producto.

Solicitar una construcción con alcance definido

Una semana de discovery. Obtienes un inventario de sistemas, mapa de flujos de trabajo y alcance fijo — construyas con nosotros o no.

¿Quieres esto construido para tus sistemas?

Cada documento aquí viene de trabajo real de producción. Si tienes un sistema objetivo y un flujo en mente, podemos definir un proyecto en una semana.

Solicitar un proyecto

Descubrimiento de una semana. Obtienes un inventario de sistemas, mapa de flujos y alcance fijo — decidas o no construir con nosotros.