AI Quality & Evaluation

Aplicaciones Graph RAG: análisis a fondo para producción y stack recomendado

Cómo diseñar una aplicación Graph RAG para producción con construcción de grafos, recuperación híbrida, transferencias duraderas, criterios de evaluación y un stack práctico recomendado para ingenieros y PMs.

26 min de lectura

En resumen

  • Graph RAG es útil cuando las preguntas de tu producto requieren relaciones, trazabilidad de las fuentes, razonamiento de múltiples saltos o síntesis a nivel de corpus. No es automáticamente mejor que una aplicación vectorial RAG bien construida para búsquedas simples.
  • La unidad de producción no es «un grafo». Es un sistema repetible: conectores de fuentes, diseño del esquema, extracción de entidades, validación de relaciones, recuperación híbrida, recorrido del grafo, contratos de respuesta, evaluaciones, observabilidad y revisión humana.
  • Un buen stack predeterminado en 2026 es Neo4j para el grafo y la recuperación basada en grafos, Postgres para metadatos del producto, evaluaciones y estado de los workflows, almacenamiento de objetos para los artefactos originales de las fuentes, LlamaIndex para la ingesta en grafos de propiedades, LangGraph para transferencias duraderas, OpenAI Structured Outputs o una salida equivalente restringida por esquema para la extracción y las respuestas, y RAGAS junto con evaluaciones personalizadas del grafo para los controles de calidad.
  • Usa resúmenes de comunidades al estilo de Microsoft GraphRAG para preguntas globales como «¿Qué temas están surgiendo en este corpus?». Usa recuperación en grafos de propiedades al estilo de Neo4j/LlamaIndex para preguntas de producto como «¿Qué clientes se ven afectados por esta cadena de dependencias?».
  • Los PMs deben entregar el inventario de preguntas, los niveles de riesgo, las reglas sobre las fuentes de verdad, el contrato de respuesta y los criterios de lanzamiento. Los ingenieros deben devolver el esquema del grafo, los planes de recuperación, los resultados de las evaluaciones, ejemplos de trazas, el modelo de costos y el manual de operaciones.
  • Estar listo para producción significa que lo rutinario funciona: la reindexación es idempotente, los cambios del grafo están versionados, las citas apuntan a fragmentos estables de las fuentes, ningún efecto secundario ocurre sin comprobar las políticas y cada respuesta puede rastrearse hasta su evidencia.

Qué aprenderás aquí

  • Cuándo vale la pena asumir la arquitectura adicional de Graph RAG.
  • En qué se diferencia una aplicación Graph RAG de producción de un notebook de demostración.
  • Una arquitectura de referencia para ingesta, almacenamiento del grafo, recuperación, generación, evaluación y transferencia.
  • Un ejemplo concreto de soporte e inteligencia de clientes con esquema del grafo, flujo de recuperación y contrato de salida.
  • Un stack recomendado para Graph RAG en un MVP, un producto consolidado y un entorno empresarial.
  • Los artefactos de transferencia entre PMs e ingeniería que permiten revisar el proyecto antes de que alguien escriba código.
  • Los controles de calidad que exigiría antes de considerar que una aplicación Graph RAG está lista para producción.

Este artículo continúa Aplicaciones RAG en la práctica. El artículo anterior cubre chunks estructurados, recuperación híbrida, reranking y evaluación de RAG. Este profundiza en la capa específica de grafos: modelado de entidades y relaciones, recorrido del grafo, resúmenes de comunidades, transferencias duraderas de workflows y el stack que realmente recomendaría para una aplicación real.

La versión corta: Graph RAG es recuperación de relaciones

El RAG convencional suele partir de la similitud entre textos:

Question -> embedding search -> top chunks -> answer with citations

Graph RAG agrega una capa explícita de relaciones:

Question -> entities + intent
         -> graph lookup / traversal / community summaries
         -> evidence paths + source chunks
         -> answer with citations and graph reasoning

Esa capa adicional importa cuando los usuarios hacen preguntas como:

  • «¿Qué clientes empresariales quedan expuestos si este servicio se deja de ofrecer?».
  • «¿Por qué apareció esta afirmación en tres documentos de políticas diferentes?».
  • «¿Qué macros de soporte contradicen la política de reembolsos que entró en vigor el 1 de mayo?».
  • «¿Cuáles son los principales temas entre 5,000 escalaciones de clientes?».
  • «¿Qué proveedores, sistemas, equipos y contratos están relacionados con esta interrupción?».

Una búsqueda vectorial simple puede recuperar texto semánticamente similar. Un grafo puede recuperar evidencia conectada.

La salvedad importante: la recuperación mediante grafos no es magia. Agrega costos de extracción, mantenimiento del esquema, desviación del grafo y más formas de equivocarse. Úsala cuando la estructura de las relaciones forme parte de la respuesta.

Cuándo vale la pena usar Graph RAG

Consideraría usar Graph RAG cuando se cumplan al menos dos de estas condiciones:

SeñalQué significa
Preguntas de múltiples saltosLos usuarios necesitan respuestas que conecten varios documentos, entidades, sistemas o eventos.
Dominio con muchas entidadesLos clientes, proveedores, productos, tickets, políticas, SKUs, activos o personas son objetos de primer nivel.
La trazabilidad de las fuentes importaLos usuarios necesitan inspeccionar la ruta hacia la fuente, no solo leer un resumen plausible.
Síntesis a nivel de corpusLos PMs o analistas preguntan por temas, grupos, tendencias y contradicciones en todo un corpus.
Modelo de conocimiento reutilizableEl grafo servirá a varios workflows, no a un solo chatbot desechable.
Alto valor de correcciónCorregir una entidad o relación mejora muchas respuestas futuras.

Evitaría Graph RAG, al menos al principio, cuando la aplicación se dedica principalmente a consultar preguntas frecuentes, buscar en documentación, hacer resúmenes simples o actuar como un asistente de soporte acotado para el que ya funcionan los chunks padre-hijo junto con la búsqueda híbrida.

Qué aporta Microsoft GraphRAG

Microsoft Research presentó públicamente GraphRAG en abril de 2024 como un enfoque estructurado y jerárquico de RAG sobre conjuntos de datos privados. Su pipeline documentado extrae entidades, relaciones y afirmaciones de unidades de texto, construye un grafo, lo agrupa en comunidades mediante técnicas al estilo de Leiden, resume las comunidades de abajo hacia arriba y luego usa esas estructuras al consultar.

La distinción clave es el tipo de consulta:

  • Búsqueda local ayuda con preguntas sobre entidades específicas y su vecindario en el grafo.
  • Búsqueda global ayuda con preguntas integrales sobre un corpus mediante resúmenes de comunidades.
  • Búsqueda DRIFT combina la búsqueda local de entidades con el contexto de las comunidades.
  • Búsqueda básica sigue siendo útil cuando la pregunta se responde mejor con una recuperación vectorial top-k estándar.

Ese último punto es una lección de producción. Una aplicación Graph RAG madura debe elegir entre distintos modos de recuperación. No debe obligar a que cada consulta pase por la ruta más costosa.

La propia guía de inicio de Microsoft también advierte que GraphRAG puede consumir muchos recursos de LLM durante la indexación. Tómalo como una restricción de diseño, no como una nota al pie. La construcción del grafo suele ser la parte costosa.

Arquitectura de producción

Esta es la arquitectura de referencia de la que partiría:

                          +----------------------+
                          | Product question set |
                          | PM + domain owners   |
                          +----------+-----------+
                                     |
                                     v
+----------------+       +----------------------+       +-------------------+
| Source systems | ----> | Ingestion workers    | ----> | Raw artifact store|
| docs, tickets, |       | parse, clean, hash,   |       | PDFs, HTML, JSON, |
| CRM, wiki, DBs |       | version, chunk        |       | snapshots         |
+----------------+       +----------+-----------+       +-------------------+
                                     |
                                     v
                          +----------------------+
                          | Extraction contract  |
                          | entities, relations, |
                          | claims, source spans |
                          +----------+-----------+
                                     |
                    +----------------+----------------+
                    v                                 v
          +-------------------+             +-------------------+
          | Graph database    |             | Product database  |
          | entities, edges,  |             | tenants, jobs,    |
          | vectors, fulltext |             | evals, traces     |
          +---------+---------+             +---------+---------+
                    |                                 |
                    +----------------+----------------+
                                     v
                          +----------------------+
                          | Retrieval router     |
                          | vector, fulltext,    |
                          | Cypher, community    |
                          +----------+-----------+
                                     |
                                     v
                          +----------------------+
                          | Answer generator     |
                          | structured output,   |
                          | citations, refusal   |
                          +----------+-----------+
                                     |
                                     v
                          +----------------------+
                          | Evals + observability|
                          | faithfulness, graph  |
                          | recall, cost, drift  |
                          +----------------------+

Observa lo que no está en el centro: una interfaz de chat. La interfaz es solo un punto de entrada. El verdadero producto es el pipeline de conocimiento junto con el contrato de evidencia.

El stack recomendado

Este es el stack que recomendaría a la mayoría de los equipos que construyen una aplicación Graph RAG sólida en 2026.

CapaOpción predeterminada recomendadaPor qué
Aplicación/APIFastAPI o una capa de API en TypeScriptMantén la autenticación del producto, la gestión de tenants y los contratos de respuesta fuera del framework del modelo.
Transferencia de workflowsLangGraph con un checkpointer persistenteLa ejecución duradera, la revisión humana reanudable y el estado explícito del workflow son útiles cuando los trabajos del grafo toman minutos u horas.
Almacenamiento del grafoNeo4jModelo maduro de grafos de propiedades, Cypher, índices vectoriales, índices de texto completo y herramientas oficiales de GraphRAG para Python.
Almacenamiento de metadatosPostgresTenants, versiones de fuentes, trabajos de ingesta, ejecuciones de evaluaciones, aprobaciones, metadatos de trazas y estado del producto.
Almacenamiento de fuentes originalesAlmacenamiento de objetos al estilo de S3/R2/GCSMantén las instantáneas inmutables de las fuentes y los artefactos procesados separados del estado derivado del grafo.
Construcción del grafoLlamaIndex PropertyGraphIndex junto con extractores personalizadosBuena abstracción para nodos etiquetados, relaciones, metadatos y combinación de retrievers de grafos.
Recuperación del grafoRetrievers de Neo4j GraphRAG, especialmente los de recuperación híbrida y CypherCombina vectores, texto completo y recorrido del grafo en lugar de apostar por un solo método de recuperación.
Síntesis globalResúmenes de comunidades al estilo de Microsoft GraphRAGÚtiles para «temas en todo el corpus» y otras preguntas sobre el conjunto completo de datos.
Contratos de salidaOpenAI Structured Outputs, Pydantic, Zod o esquemas restringidos equivalentesTrata las entidades extraídas, los planes de recuperación y las respuestas finales como contratos tipados.
EvaluaciónRAGAS, trazas al estilo de LangSmith/LangWatch y evaluaciones personalizadas del grafoMide por separado la recuperación, la generación, la cobertura del grafo, las citas, la latencia y el costo.
DespliegueContenedores, colas, reindexación programada y controles de evaluación en CILos pipelines de grafos necesitan operaciones repetibles más que prompts ingeniosos.

Este no es el único stack válido. Es el que elegiría cuando un equipo pide una opción práctica con suficiente estructura para sobrevivir en producción.

Stack para MVP

Úsalo cuando el equipo esté validando si la recuperación mediante grafos mejora el producto:

  • LlamaIndex PropertyGraphIndex
  • Neo4j Aura o Neo4j local
  • OpenAI u otro modelo capaz de usar esquemas para la extracción
  • Un servicio pequeño en FastAPI
  • Un conjunto de evaluación de 50 a 100 preguntas
  • Revisión manual de muestras del grafo en Neo4j Browser

No construyas todavía una gran plataforma de ingesta. Demuestra que las relaciones mejoran la calidad de las respuestas.

Stack predeterminado para producción

Úsalo cuando los clientes vayan a depender de las respuestas:

  • Neo4j para recuperación mediante grafos, vectores y texto completo
  • Postgres para metadatos de la aplicación, evaluaciones y checkpoints de workflows
  • Almacenamiento de objetos para instantáneas de las fuentes originales
  • LangGraph para transferencias de workflows de ingesta y respuesta
  • LlamaIndex para construcción del grafo y componentes personalizados de recuperación
  • RAGAS o métricas equivalentes para fidelidad y calidad de recuperación
  • LangSmith, LangWatch, OpenTelemetry u otro almacén de trazas para depuración en producción
  • Controles en CI que ejecuten un conjunto fijo de evaluación antes de desplegar cambios en prompts, esquemas, retrievers o modelos

Stack empresarial

Úsalo cuando la aplicación trabaje con datos regulados, muchos equipos o workflows críticos:

  • Todo lo incluido en el stack de producción
  • Registro explícito del esquema del grafo y proceso de migración
  • Permisos detallados por fuente y aislamiento por tenant
  • Colas de aprobación humana para categorías de respuestas de alto riesgo
  • Registros de auditoría inmutables para versiones de fuentes, versiones del grafo, prompts, modelos y trazas de respuestas
  • Suites de red team y pruebas de abuso
  • Herramientas de reproducción offline para investigar incidentes
  • Presupuestos de costos por tenant, fuente y modo de recuperación

Graph RAG empresarial tiene menos que ver con «un grafo más grande» y más con «quién puede confiar en cada ruta de evidencia».

Ejemplo: inteligencia sobre escalaciones de clientes

Imagina que una empresa SaaS B2B quiere un asistente interno que responda:

¿Qué clientes empresariales probablemente se ven afectados por el incidente de sincronización de facturación y qué debería decirles el equipo de cuentas?

La respuesta podría requerir:

  • notas del incidente del equipo de ingeniería
  • datos sobre los responsables del servicio de facturación
  • contratos de clientes
  • telemetría de uso de funcionalidades
  • tickets de soporte
  • niveles de cuentas del CRM
  • soluciones alternativas conocidas
  • texto público de la página de estado

El RAG convencional puede recuperar algunos documentos similares. Graph RAG puede modelar las relaciones:

(Incident)-[:AFFECTS]->(Service)
(Service)-[:OWNS_DATA_FLOW]->(Integration)
(Customer)-[:USES]->(Feature)
(Feature)-[:DEPENDS_ON]->(Service)
(Customer)-[:HAS_CONTRACT]->(Contract)
(Contract)-[:HAS_SLA]->(SLA)
(Ticket)-[:MENTIONS]->(Incident)
(StatusUpdate)-[:COMMUNICATES]->(Incident)

Ahora la pregunta se convierte en un problema de grafos:

Incident: billing sync delayed
        |
        v
Affected service -> dependent features -> active customers
        |                                  |
        v                                  v
Known workaround                    contract tier + SLA
        |                                  |
        +---------------+------------------+
                        v
              recommended account message

La respuesta final no debería limitarse a decir «estos clientes podrían verse afectados». Debería devolver una respuesta estructurada:

{
  "answer": "Three enterprise customers are likely affected by the billing sync delay...",
  "affected_customers": [
    {
      "customer_id": "cust_123",
      "customer_name": "Northwind Enterprise",
      "risk_level": "high",
      "evidence_path": [
        "incident.billing-sync.2026-07-02",
        "service.billing-sync",
        "feature.invoice-export",
        "usage.cust_123.invoice-export",
        "contract.cust_123.enterprise-sla"
      ],
      "recommended_message": "Acknowledge the delay, confirm invoice exports are affected, offer the workaround, and commit to the next update window."
    }
  ],
  "citations": [
    {
      "source_id": "incident.billing-sync.2026-07-02",
      "span": "Root cause and affected services"
    },
    {
      "source_id": "contract.cust_123.enterprise-sla",
      "span": "Support response obligations"
    }
  ],
  "requires_human_review": true
}

Esa respuesta es útil para el producto porque los PMs pueden discutirla. También es útil para ingeniería porque cada campo se puede probar.

El esquema del grafo es una decisión de producto

La mayoría de los proyectos Graph RAG fallan silenciosamente en la capa del esquema. Extraen demasiadas entidades genéricas, demasiadas relaciones débiles o no tienen IDs estables.

Empieza por las preguntas que los usuarios necesitan responder y luego diseña un esquema de grafo que las soporte.

Para el ejemplo de escalaciones:

Node types:
  Customer
  Contract
  SLA
  Incident
  Service
  Feature
  Integration
  Ticket
  StatusUpdate
  Workaround

Relationship types:
  USES
  DEPENDS_ON
  AFFECTS
  HAS_CONTRACT
  HAS_SLA
  MENTIONS
  COMMUNICATES
  HAS_WORKAROUND
  OWNED_BY

Required properties:
  id
  source_id
  source_span
  confidence
  valid_from
  valid_to
  tenant_id
  extraction_run_id

Las propiedades importan tanto como las etiquetas de los nodos. Sin source_span, los usuarios no pueden auditar la respuesta. Sin valid_from y valid_to, las relaciones desactualizadas sobreviven para siempre. Sin tenant_id, el grafo se convierte en un riesgo de filtración de datos. Sin extraction_run_id, no puedes depurar una actualización incorrecta del grafo.

Ingesta: extrae menos, valida más

El ciclo de ingesta debe ser rutinario y reproducible:

Source snapshot
      |
      v
Parse + normalize
      |
      v
Chunk with stable IDs
      |
      v
Extract entities, relationships, claims
      |
      v
Validate against schema + source spans
      |
      v
Resolve identities + dedupe
      |
      v
Write graph changes
      |
      v
Run graph quality checks

Usa extracción restringida por esquema cuando sea posible. La documentación de Structured Outputs de OpenAI describe la conformidad con JSON Schema como una garantía más sólida que el modo JSON: el modo JSON produce JSON válido, mientras que Structured Outputs puede imponer un esquema proporcionado en los modelos compatibles. Incluso así, trata la salida como no confiable hasta que tu código la valide.

Un contrato mínimo de extracción podría verse así:

from pydantic import BaseModel, Field

class ExtractedEntity(BaseModel):
    id_hint: str
    label: str
    name: str
    source_id: str
    source_span: str
    confidence: float = Field(ge=0, le=1)

class ExtractedRelationship(BaseModel):
    source_id_hint: str
    target_id_hint: str
    type: str
    source_id: str
    source_span: str
    confidence: float = Field(ge=0, le=1)

class ExtractionResult(BaseModel):
    entities: list[ExtractedEntity]
    relationships: list[ExtractedRelationship]
    unsupported_claims: list[str]

Regla de producción: nunca permitas que el modelo invente IDs estables. Deja que proponga pistas de identidad; el código determinista resuelve esas pistas frente a los sistemas de origen conocidos.

Recuperación: enruta antes de recuperar

No construyas un único mega-retriever. Enruta la pregunta.

User question
     |
     v
+------------------+
| Retrieval router |
+--------+---------+
         |
         +--> Basic RAG: simple lookup, exact policy answer
         |
         +--> Local graph: entity neighborhood, dependencies, ownership
         |
         +--> Hybrid graph: vector + full-text + Cypher traversal
         |
         +--> Global graph: community summaries, themes, corpus synthesis
         |
         +--> Refuse / ask clarifying question

La documentación de GraphRAG para Python de Neo4j describe retrievers vectoriales, retrievers híbridos que combinan búsqueda vectorial y de texto completo, y retrievers híbridos con Cypher que agregan recorrido del grafo después de la recuperación inicial. Ese patrón es exactamente lo que necesitan las aplicaciones de producción: recuperar candidatos y luego usar la estructura del grafo para recopilar contexto que la similitud de texto por sí sola pasaría por alto.

Para el ejemplo de escalaciones, el plan de recuperación podría ser:

1. Classify query intent:
   "affected customers for incident" -> graph traversal

2. Resolve anchor entity:
   Incident("billing sync delayed")

3. Traverse:
   Incident -AFFECTS-> Service
   Service <-DEPENDS_ON- Feature
   Feature <-USES- Customer
   Customer -HAS_CONTRACT-> Contract -HAS_SLA-> SLA

4. Pack evidence:
   incident note, service metadata, usage proof, contract span, workaround

5. Generate structured answer:
   customers, risk levels, evidence paths, citations, review flag

Aquí también es donde Graph RAG se vuelve más fácil de depurar. Si la respuesta es incorrecta, puedes inspeccionar si falló la resolución de entidades, si faltaba la arista, si el recorrido fue demasiado amplio o si el modelo ignoró evidencia correcta.

Transferencia: qué deben intercambiar los PMs y los ingenieros

Graph RAG requiere una transferencia más rigurosa que una funcionalidad de búsqueda normal porque «mejores respuestas» es demasiado vago.

Entrega de los PMs

Los PMs deben proporcionar:

  1. Inventario de preguntas

    • De 30 a 100 preguntas reales agrupadas por intención del usuario.
    • Indicar qué preguntas requieren relaciones del grafo y cuáles son consultas simples.
  2. Valor para la toma de decisiones

    • ¿Qué decisión tomará el usuario a partir de la respuesta?
    • ¿Qué sucede si la respuesta está incompleta o es incorrecta?
  3. Prioridad de las fuentes

    • ¿Qué sistema prevalece cuando las fuentes discrepan?
    • ¿Qué fuentes se pueden usar en respuestas dirigidas a clientes?
  4. Niveles de riesgo

    • ¿Qué respuestas se pueden automatizar?
    • ¿Qué respuestas requieren revisión humana?
    • ¿Qué preguntas se deben rechazar?
  5. Contrato de respuesta

    • Campos que necesita el producto, no preferencias de redacción.
    • Ejemplo: cuentas afectadas, confianza, rutas de evidencia, siguiente acción, citas e indicador de revisión.
  6. Criterios de lanzamiento

    • Umbral mínimo de calidad.
    • Presupuesto de latencia y costo.
    • Comportamiento de auditoría requerido.

Entrega de ingeniería

Los ingenieros deben devolver:

  1. Esquema del grafo

    • Tipos de nodos, tipos de aristas, propiedades requeridas, modelo de tenants y modelo de permisos.
  2. Matriz de planes de recuperación

    • Qué clases de consultas usan RAG básico, grafo local, grafo híbrido o resúmenes globales.
  3. Informe de evaluación

    • Recall de recuperación, fidelidad, precisión de las citas, cobertura de rutas del grafo, corrección de los rechazos, latencia y costo.
  4. Ejemplos de trazas

    • Respuesta correcta, respuesta incorrecta, respuesta rechazada, respuesta enviada a revisión humana y respuesta con fuente desactualizada.
  5. Manual de operaciones

    • Cómo reindexar, revertir cambios del grafo, reproducir una respuesta fallida, inspeccionar citas y corregir entidades incorrectas.
  6. Limitaciones conocidas

    • Fuentes faltantes, relaciones de baja confianza, clases de preguntas no admitidas y límites de la revisión humana.

Esta transferencia obliga al equipo a ser riguroso. Los PMs son responsables del riesgo del producto y de los criterios de aceptación. Los ingenieros son responsables del comportamiento del sistema y de la evidencia.

Evaluación: prueba el grafo, no solo la respuesta

RAGAS define la fidelidad como la consistencia factual entre la respuesta y el contexto recuperado. Eso es necesario, pero Graph RAG necesita más capas.

Evalúa en cuatro niveles:

CapaEjemplo de métricaPor qué importa
ExtracciónPrecisión de entidades, precisión de relaciones, validez de fragmentos de fuenteUn grafo incorrecto produce respuestas incorrectas expresadas con confianza.
RecuperaciónRecall de entidades, cobertura de rutas, precisión del contexto, recall del contextoLa respuesta no puede usar evidencia que nunca recibe.
GeneraciónFidelidad, relevancia de la respuesta, corrección de las citas, corrección de los rechazosEl modelo debe mantenerse basado en la evidencia y ser útil.
ProductoAceptación humana, tiempo ahorrado, tasa de escalación, tasa de incidentesLa aplicación existe para mejorar un workflow, no un benchmark.

Para Graph RAG específicamente, agregaría estas comprobaciones:

  • Recall de entidades: ¿La recuperación incluyó las entidades esperadas para una pregunta conocida?
  • Precisión de las relaciones: ¿Las aristas devueltas están respaldadas por fragmentos de las fuentes?
  • Cobertura de rutas: ¿La evidencia incluyó la ruta esperada del grafo y no solo un chunk cercano?
  • Resolución de citas: ¿Cada cita apunta a una fuente y un fragmento estables?
  • Rechazo de información desactualizada: ¿El sistema prefiere las relaciones activas sobre las vencidas?
  • Filtrado por permisos: ¿La misma pregunta devuelve evidencia diferente para usuarios con distintos niveles de acceso?
  • Enrutamiento a revisión humana: ¿Las respuestas de alto riesgo se marcan correctamente antes de producir efectos secundarios?

Un registro de evaluación puede ser sencillo:

{
  "question": "Which customers are affected by the billing sync incident?",
  "expected_entities": ["incident.billing-sync.2026-07-02", "service.billing-sync"],
  "expected_path_pattern": "Incident-AFFECTS-Service-DEPENDS_ON-Feature-USES-Customer",
  "must_cite_sources": ["incident note", "usage record", "contract"],
  "requires_human_review": true
}

La redacción final del modelo es lo último que se debe evaluar. Primero evalúa si el sistema encontró la evidencia correcta.

Transferencias duraderas dentro de la aplicación

Las aplicaciones Graph RAG suelen incluir pasos lentos:

  • sincronización de fuentes
  • procesamiento de PDFs
  • extracción de entidades
  • escrituras en el grafo
  • generación de resúmenes de comunidades
  • aprobación humana
  • nueva generación de respuestas tras actualizar las fuentes

Eso significa que necesitas workflows duraderos. La documentación de LangGraph lo presenta como un runtime de orquestación de bajo nivel para agentes con estado y de larga duración, con soporte para persistencia, intervención humana, streaming y depuración. Su modelo de persistencia distingue entre checkpointers para el estado del grafo asociado a un hilo y almacenes para datos de la aplicación de mayor duración.

Un workflow práctico podría verse así:

Ingestion requested
      |
      v
Parse source snapshot
      |
      v
Extract graph candidates
      |
      v
Validate + dedupe
      |
      +--> low confidence? -> human review queue
      |
      v
Write graph mutation
      |
      v
Run eval slice
      |
      +--> eval regression? -> block promotion
      |
      v
Promote graph version

Usa Postgres u otro backend persistente para el estado del workflow. El estado del workflow en memoria está bien para demostraciones; no es una transferencia apta para producción.

Lista de verificación para producción

Antes de considerar que la aplicación está lista para producción, querría que se cumpliera cada punto de esta lista.

Datos y grafo

  • Las instantáneas de las fuentes son inmutables y están versionadas.
  • Cada nodo y arista tiene una referencia a la fuente o está marcado como derivado.
  • Cada relación tiene un nivel de confianza, un fragmento de fuente, una ejecución de extracción y un período de validez.
  • La resolución de entidades es lo suficientemente determinista como para reproducirse.
  • Los cambios en el esquema del grafo se migran y revisan.
  • Los límites entre tenants y los permisos se aplican antes de la recuperación.

Recuperación

  • El enrutador de consultas elige entre búsqueda básica, grafo local, grafo híbrido, grafo global o rechazo.
  • La recuperación híbrida usa señales vectoriales y léxicas cuando los términos exactos importan.
  • El recorrido del grafo tiene límites de profundidad, filtros de tipo y límites de costo.
  • La preparación del contexto conserva las rutas de evidencia y los IDs de las citas.
  • Las trazas de recuperación se almacenan para depuración.

Generación

  • Las respuestas finales usan un contrato de salida tipado.
  • El modelo puede rechazar una solicitud cuando falta evidencia.
  • Las citas apuntan a fragmentos estables de las fuentes.
  • Las salidas de alto riesgo se envían a revisión humana.
  • Las versiones del prompt y del modelo se almacenan con cada traza de respuesta.

Evaluación y operaciones

  • Un conjunto fijo de evaluación se ejecuta en CI ante cambios en el retriever, el esquema, el prompt y el modelo.
  • Las trazas de producción pueden muestrearse para incorporarlas a futuros conjuntos de evaluación.
  • Hay alertas por caídas de fidelidad, fallas de recuperación, picos de latencia y picos de costo.
  • La reindexación es idempotente.
  • Existe un mecanismo de reversión para las versiones del grafo y los cambios de prompts y modelos.
  • Hay un manual para corregir entidades y relaciones incorrectas.

Fallas comunes

1. El grafo es demasiado genérico

Si cada nodo es Person, Organization o Concept, el grafo se verá impresionante, pero responderá mal. Los tipos de nodos y aristas específicos del producto importan.

2. El grafo no modela el tiempo

Muchas relaciones vencen. Un cliente usó una funcionalidad el trimestre pasado. Una política cambió el 1 de junio. Un proveedor era responsable de un sistema antes de la migración. Si no se modela el tiempo, los hechos desactualizados se vuelven permanentes.

3. La aplicación confía demasiado en las aristas extraídas

Las relaciones extraídas por un LLM son candidatas, no hechos. Las aristas de alto impacto deben validarse contra fuentes deterministas o mediante revisión humana.

4. Los resúmenes globales pierden trazabilidad

Los resúmenes de comunidades son útiles para identificar temas, pero pueden ocultar la ruta hacia la fuente original. Conserva la trazabilidad desde el resumen hasta la fuente.

5. El equipo solo mide las respuestas finales

Una puntuación de la respuesta final no puede indicarte si la falla provino de la extracción, la resolución de entidades, la recuperación, el ranking, la preparación del contexto, la generación o los permisos.

Un plan práctico de construcción

Este es el orden de construcción que usaría.

Fase 1: demuestra el valor del grafo

  • Elige un workflow de usuario.
  • Recopila 50 preguntas reales.
  • Marca qué preguntas requieren relaciones.
  • Construye un esquema pequeño.
  • Indexa un conjunto reducido de fuentes.
  • Compara el RAG híbrido de referencia con la recuperación mediante grafos.
  • Mantén o descarta Graph RAG según las evaluaciones, no el entusiasmo.

Fase 2: prepara el pipeline para producción

  • Agrega instantáneas de las fuentes e IDs estables para los chunks.
  • Agrega resolución determinista de entidades.
  • Agrega validación del esquema del grafo.
  • Agrega un enrutador de recuperación.
  • Agrega un contrato de respuesta estructurado.
  • Agrega trazas y evaluaciones en CI.
  • Agrega una ruta de revisión humana.

Fase 3: escala el sistema de conocimiento

  • Agrega reindexación programada.
  • Agrega un proceso de promoción de versiones del grafo.
  • Agrega resúmenes de comunidades para preguntas globales.
  • Agrega permisos específicos por tenant.
  • Agrega presupuestos de costos y SLOs de latencia.
  • Agrega manuales de operaciones y reproducción de incidentes.

Este enfoque por fases evita el error más común: construir un grafo hermoso antes de demostrar que responde preguntas de producto mejor que una recuperación más simple.

La recomendación

Si hoy tuviera que entregarle esto a un equipo, recomendaría:

Frontend:
  Existing app UI or internal console

API:
  FastAPI for Python-first teams
  TypeScript API if the product stack is already TS-heavy

Workflow:
  LangGraph for durable ingestion and answer hand-offs
  Postgres-backed persistence for production

Storage:
  Neo4j for property graph, vector index, full-text index
  Postgres for product metadata, evals, traces, jobs
  Object storage for raw source snapshots

Ingestion:
  LlamaIndex PropertyGraphIndex
  Custom extractors with schema-constrained outputs
  Deterministic entity resolution

Retrieval:
  Basic RAG for simple lookup
  Neo4j hybrid retrieval for vector + full-text
  Cypher traversal for entity neighborhoods
  Microsoft GraphRAG-style community summaries for global synthesis

Generation:
  Structured output schema
  Evidence paths
  Citation IDs
  Refusal and human-review flags

Evaluation:
  RAGAS for faithfulness and context metrics
  Custom graph evals for entity recall, path coverage, citation correctness
  Production traces sampled into regression datasets

La recomendación de fondo es arquitectónica: mantén separados el grafo, el retriever, el workflow y el contrato del producto. Cuando esos límites están bien definidos, el sistema puede evolucionar. Puedes cambiar modelos, rehacer la extracción, ajustar la recuperación o reemplazar un framework sin reescribir todo el producto.

Reflexión final

Graph RAG no es «RAG más una base de datos de grafos». Es una forma de hacer explícitas las relaciones, la evidencia y las transferencias.

Por eso es potente para aplicaciones de producción. Les da a los ingenieros algo que se puede probar y a los PMs algo que se puede revisar. El grafo no es el entregable. El entregable es un sistema que puede responder con evidencia preguntas que dependen de relaciones, derivar la incertidumbre a personas y seguir mejorando a medida que cambia la base de conocimiento.

Fuentes