GraphRAG
GraphRAG construye un grafo de conocimiento a partir de documentos y, después, recupera entidades, relaciones y resúmenes de comunidades para responder a preguntas globales y de varios saltos.
GraphRAG (generación aumentada por recuperación con grafos) es una forma de generación aumentada por recuperación (RAG) que recupera información de un grafo de conocimiento en lugar de, o además de, los fragmentos de texto encontrados mediante la búsqueda vectorial. Primero, un modelo de lenguaje grande (LLM) extrae las entidades de una colección de documentos, como personas, empresas, piezas y lugares, junto con las relaciones entre ellas. Cuando se formula una pregunta, el sistema recupera entidades conectadas, rutas de relaciones o resúmenes de grupos completos del grafo y se los proporciona al LLM como contexto. El nombre se asocia principalmente con el enfoque GraphRAG de Microsoft Research para la generación de resúmenes centrados en consultas, publicado en 2024 junto con una implementación de código abierto, y también se utiliza para cualquier sistema RAG que recupere información de un grafo.
Por qué RAG vectorial necesita un grafo#
El RAG estándar convierte los fragmentos de documentos en representaciones vectoriales, los almacena en una base de datos vectorial y recupera los pocos fragmentos más parecidos a la pregunta. Esto funciona con preguntas que se responden con un pasaje, pero presenta dificultades con otros dos tipos:
- Preguntas de varios pasos: La respuesta depende de hechos repartidos entre documentos que solo están conectados por entidades compartidas, como qué fábricas dependen de un proveedor cercano a un puerto cerrado por una tormenta. Ningún fragmento por sí solo se parece a la pregunta completa.
- Preguntas globales: Las preguntas sobre todo un corpus, como «¿Cuáles son los temas principales de estos 5000 informes de incidentes?», necesitan información de todos los documentos, mientras que la recuperación vectorial solo devuelve los pocos fragmentos mejor clasificados.
Un grafo almacena explícitamente las conexiones entre hechos, de modo que la recuperación puede recorrerlas, y los resúmenes de las comunidades del grafo abarcan todo el corpus.
Cómo funciona GraphRAG#
GraphRAG de Microsoft crea su índice en cuatro pasos. Divide los documentos en unidades de texto y pide a un LLM que extraiga entidades, relaciones y afirmaciones de cada unidad, una forma de reconocimiento de entidades nombradas y extracción de relaciones basada en LLM. Combina en un solo nodo las descripciones de las entidades que aparecen en muchas unidades. Después ejecuta una detección jerárquica de comunidades de Leiden, que agrupa entidades densamente conectadas en comunidades anidadas, y pide al LLM que redacte un informe de resumen para cada comunidad y nivel.
Las consultas siguen una de estas dos rutas:
- Búsqueda local: Parte de las entidades mencionadas en la pregunta y reúne sus entidades vecinas, relaciones, informes de comunidades y unidades de texto originales que las mencionan.
- Búsqueda global: Aplica un proceso de tipo map-reduce a los informes de comunidades: cada informe genera una respuesta parcial con una puntuación de relevancia, y las respuestas parciales más relevantes se combinan en la respuesta final.
En conjuntos de datos de alrededor de un millón de tokens, el artículo informó de que la búsqueda global generaba respuestas considerablemente más completas y variadas a preguntas sobre todo el corpus que una referencia RAG convencional.
La base de la búsqueda local es el recorrido del grafo. Este ejemplo en Python, que utiliza NetworkX, almacena tripletas que un LLM podría extraer de distintos documentos y sigue las relaciones hacia fuera desde la entidad de la pregunta:
import networkx as nx
# Entity-relationship triples that an LLM extracted from separate documents
triples = [
("Typhoon", "closed", "Kaohsiung port"),
("Kaohsiung port", "ships parts for", "Supplier A"),
("Supplier A", "makes", "bearing B-17"),
("bearing B-17", "is used at", "Ohio plant"),
("Texas plant", "uses", "motor M-4"),
]
graph = nx.DiGraph()
for head, relation, tail in triples:
graph.add_edge(head, tail, relation=relation)
# Question: "Which plants could the typhoon disrupt?"
# Local search: follow relationships outward from the entity named in the question
edges = nx.bfs_edges(graph, "Typhoon")
context = [f"{head} {graph[head][tail]['relation']} {tail}" for head, tail in edges]
print("\n".join(context))Imprime la cadena de cuatro saltos desde «El tifón cerró el puerto de Kaohsiung» hasta «el rodamiento B-17 se utiliza en la planta de Ohio», una conexión que ningún documento de origen menciona por sí solo, y excluye la planta de Texas, que no guarda relación. El LLM recibe estas líneas como contexto de fundamentación y puede responder que la planta de Ohio está en riesgo.
GraphRAG frente a enfoques relacionados#
- Grafos de conocimiento: Estructura de datos formada por entidades y relaciones tipadas. GraphRAG crea o reutiliza uno específicamente para recuperar contexto para un LLM.
- Búsqueda híbrida: Combina la recuperación por palabras clave y por vectores en fragmentos de texto. Muchos sistemas GraphRAG de producción ejecutan recorridos por grafos junto con la búsqueda híbrida.
- RAG agéntico: Un agente decide qué recuperar y cuándo, a lo largo de varios pasos. Las consultas a grafos pueden ser una de sus herramientas.
- Redes neuronales de grafos (GNNs): Aprenden de la estructura del grafo durante el entrenamiento para tareas como la predicción de enlaces. GraphRAG utiliza el grafo en el momento de la recuperación, sin entrenamiento.
Aplicaciones en el mundo real#
- Descubrimiento de fármacos: Los grafos que conectan genes, proteínas, compuestos y enfermedades permiten a los investigadores plantear preguntas que abarcan miles de artículos, como qué fármacos aprobados actúan sobre proteínas de una vía relacionada con una enfermedad.
- Investigaciones financieras: Los analistas rastrean cadenas de propiedad a través de empresas pantalla y directivos compartidos, y piden a un LLM que resuma la red que hay detrás de una transacción sospechosa.
- Riesgo en la cadena de suministro: Conectar proveedores, piezas, instalaciones y rutas de envío permite responder a preguntas como qué productos dependen de una sola fábrica.
- Conocimiento empresarial: Las grandes colecciones de informes, incidencias y notas de reuniones se pueden buscar por temas, y los resúmenes de comunidades responden a preguntas sobre toda la colección.
Los grafos también pueden almacenar lo que ven las cámaras, la base del RAG multimodal aplicado al vídeo. La resolución de entidades, es decir, decidir que dos menciones se refieren a lo mismo, es el paso que realiza el seguimiento de objetos en vídeo: el seguimiento de Ultralytics YOLO26 asigna a cada persona o vehículo un ID persistente entre fotogramas, por lo que un grafo de vídeo puede almacenar un nodo por cada objeto seguido y aristas que indiquen dónde y cuándo apareció junto a otros, en lugar de un nodo por fotograma.
Costes y concesiones#
La indexación es el principal gasto, ya que el LLM lee cada unidad de texto para extraer entidades y después redacta todos los informes de comunidad, por lo que indexar corpus grandes cuesta mucho más que generar sus embeddings. Los errores de extracción, como fusionar a dos personas distintas con el mismo nombre, se propagan a todas las respuestas que las mencionan, y modificar documentos obliga a volver a extraer y resumir las partes afectadas del grafo. LazyGraphRAG de Microsoft aborda el coste creando su grafo de conceptos mediante la extracción de sintagmas nominales y estadísticas de grafos, y aplazando todo uso del LLM hasta el momento de la consulta; así, el coste de indexación es idéntico al del RAG vectorial y representa el 0,1 % del GraphRAG completo.










