Saltar al contenido principal
Esta evaluación compara GraphRAG con RAG tradicional usando el mismo corpus de referencia y el mismo conjunto de preguntas. El objetivo fue medir si la recuperación consciente del grafo mejora la respuesta a preguntas multi-hop.

Qué se implementó

El sistema evaluado no utilizó únicamente la recuperación plana de fragmentos. Se implementó GraphRAG con estas etapas:
  1. Dividir los documentos fuente en fragmentos.
  2. Extraer entidades y relaciones de esos fragmentos.
  3. Construir un grafo de conocimiento a partir de las entidades y relaciones extraídas.
  4. Ejecutar una recuperación estándar para obtener evidencia inicial para una pregunta del usuario.
  5. Expandir a través de enlaces del grafo para recolectar evidencia conectada.
  6. Reordenar el conjunto final de evidencias antes de la generación de la respuesta.
Ese es el comportamiento de GraphRAG que fue evaluado.

Contra qué se comparó

La comparación utilizó una línea base de RAG tradicional con el mismo corpus y el mismo modelo de respuesta. La única diferencia entre las dos ejecuciones fue el modo de recuperación:
  • RAG Base: solo recuperación plana de fragmentos
  • GraphRAG: expansión iniciada por grafo más reordenamiento consciente del grafo
Esto es importante porque aísla el efecto de GraphRAG en sí mismo.

Diseño del benchmark

El benchmark fue diseñado para probar la recuperación multi-hop en lugar de una simple búsqueda en un solo fragmento. Se utilizó:
  • tres grafos de conocimiento objetivo
  • nueve grafos distractores semánticamente similares
  • 108 documentos cortos y factuales
  • 24 preguntas que requerían enlazar hechos a través de múltiples fragmentos
Este diseño es importante. Si cada respuesta ya aparece en un fragmento obvio, GraphRAG no mostrará mucha ventaja sobre el RAG estándar.

Método de evaluación

Ambos modos de recuperación se ejecutaron sobre el mismo corpus de referencia y el mismo conjunto de preguntas. Ambos luego usaron el mismo modelo de generación de respuestas y el mismo prompt de respuesta. La evaluación registró tres métricas:
  • Coincidencia exacta: si la respuesta final coincidía exactamente con la respuesta de referencia
  • Token F1: solapamiento de tokens entre la respuesta final y la respuesta de referencia
  • Recall de evidencia@5: cuánta de la evidencia de soporte requerida apareció en los 5 fragmentos recuperados principales

Cómo se usó la API

El flujo de la API evaluada fue simple. Se usó el mismo store y los mismos documentos tanto para la ejecución base como para la de GraphRAG. Solo cambió el modo de consulta.

1. Crear un store de GraphRAG

using MeetKai.MKA1;
using MeetKai.MKA1.Types.Components;

var sdk = new SDK(
    bearerAuth: "Bearer <mka1-api-key>",
    serverUrl: "https://apigw.mka1.com"
);

var res = await sdk.Search.Graphrag.CreateGraphRAGStoreAsync(
    xApiKeyId: "<id>",
    xUserId: "<end-user-id>",
    xExchangeJwtExternalUserId: "<end-user-id>",
    body: new CreateGraphRAGStoreRequest()
    {
        StoreName = "benchmark_graphrag",
        EmbeddingModel = "gpt-5",
        ExtractionModel = "gpt-5",
        ChunkSize = 800,
        ChunkOverlap = 120,
        MaxHops = 2,
    }
);

2. Ingestar documentos

using MeetKai.MKA1;
using MeetKai.MKA1.Types.Components;

var sdk = new SDK(
    bearerAuth: "Bearer <mka1-api-key>",
    serverUrl: "https://apigw.mka1.com"
);

var res = await sdk.Search.Graphrag.IngestGraphRAGDocumentsAsync(
    new MeetKai.MKA1.Types.Requests.IngestGraphRAGDocumentsRequest
    {
        StoreName = "benchmark_graphrag",
        XApiKeyId = "<id>",
        XUserId = "<end-user-id>",
        XExchangeJwtExternalUserId = "<end-user-id>",
        Body = new IngestGraphRAGDocumentsRequest
        {
            Documents = new List<GraphRAGDocument>
            {
                new GraphRAGDocument
                {
                    DocumentId = "doc_contract_award",
                    Text = "Rivera Logistics won the Northern Bridge Sensors contract.",
                    Metadata = new Dictionary<string, object> { { "source", "benchmark" } },
                },
                new GraphRAGDocument
                {
                    DocumentId = "doc_parent_company",
                    Text = "Atlas Infrastructure Group owns Rivera Logistics.",
                    Metadata = new Dictionary<string, object> { { "source", "benchmark" } },
                },
            },
        },
    }
);

3. Ejecutar la consulta RAG base

using MeetKai.MKA1;
using MeetKai.MKA1.Types.Components;

var sdk = new SDK(
    bearerAuth: "Bearer <mka1-api-key>",
    serverUrl: "https://apigw.mka1.com"
);

var res = await sdk.Search.Graphrag.QueryGraphRAGStoreAsync(
    new MeetKai.MKA1.Types.Requests.QueryGraphRAGStoreRequest
    {
        StoreName = "benchmark_graphrag",
        XApiKeyId = "<id>",
        XUserId = "<end-user-id>",
        XExchangeJwtExternalUserId = "<end-user-id>",
        Body = new GraphRAGQueryRequest
        {
            Query = "Who is the chief financial officer of the company that owns the Northern Bridge Sensors contract winner?",
            Mode = GraphRAGQueryRequestMode.Baseline,
            Limit = 5,
            SeedK = 8,
        },
    }
);

4. Ejecutar la consulta GraphRAG

using MeetKai.MKA1;
using MeetKai.MKA1.Types.Components;

var sdk = new SDK(
    bearerAuth: "Bearer <mka1-api-key>",
    serverUrl: "https://apigw.mka1.com"
);

var res = await sdk.Search.Graphrag.QueryGraphRAGStoreAsync(
    new MeetKai.MKA1.Types.Requests.QueryGraphRAGStoreRequest
    {
        StoreName = "benchmark_graphrag",
        XApiKeyId = "<id>",
        XUserId = "<end-user-id>",
        XExchangeJwtExternalUserId = "<end-user-id>",
        Body = new GraphRAGQueryRequest
        {
            Query = "Who is the chief financial officer of the company that owns the Northern Bridge Sensors contract winner?",
            Mode = GraphRAGQueryRequestMode.Graph,
            Limit = 5,
            SeedK = 8,
        },
    }
);
Ese último paso es la comparación clave. La consulta, el corpus y el modelo de respuesta se mantuvieron iguales. Solo cambió mode:
  • baseline = recuperación plana tradicional
  • graph = recuperación y reordenamiento iniciados por grafo

Resultados medidos

La ejecución en vivo del benchmark produjo los siguientes resultados:
MétodoCoincidencia ExactaToken F1Recall de Evidencia@5
RAG Base25.0%27.1%55.9%
GraphRAG62.5%62.5%71.9%
Mejora:
  • Coincidencia Exacta: +37.5 puntos
  • Token F1: +35.4 puntos
  • Recall de Evidencia@5: +16.0 puntos

Umbral de aceptación

El benchmark utilizó los siguientes criterios de aprobación:
  • mejora de coincidencia exacta de al menos +5.0 puntos
  • mejora de recall de evidencia@5 de al menos +10.0 puntos
La implementación evaluada de GraphRAG superó ambos umbrales.

Resultados representativos a nivel de pregunta

Ejemplos donde GraphRAG tuvo éxito y RAG base no:
  • “Who is the chief financial officer of the company that owns the Northern Bridge Sensors contract winner?”
    • RAG Base: unknown
    • GraphRAG: Javier Nanda
  • “Which company acquired the firm that prepared a risk report for Meridian Ports Authority?”
    • RAG Base: unknown
    • GraphRAG: Atlas Infrastructure Group
  • “Which company owns the company that won the Delta Reach Sensors contract?”
    • RAG Base: unknown
    • GraphRAG: Bluepeak Transit Group
Estas son preguntas multi-hop. Requieren enlazar hechos a través de entidades conectadas en lugar de recuperar un solo fragmento que coincida directamente.

Por qué GraphRAG tuvo mejor desempeño

RAG base recuperó fragmentos semánticamente similares, pero a veces no logró recuperar la evidencia conectada necesaria para completar la cadena de razonamiento. GraphRAG mejoró el desempeño al:
  • identificar las entidades semilla relevantes a partir de la pregunta
  • recorrer relaciones del grafo para encontrar evidencia enlazada
  • reordenar el conjunto final de evidencias usando señales del grafo además de la similitud semántica
Por eso la mejora se observa más claramente en preguntas multi-hop.

Resumen

En este benchmark, GraphRAG superó a RAG tradicional tanto en precisión de la respuesta final como en recuperación de evidencia de soporte. Las mayores mejoras se observaron en preguntas que requerían enlazar hechos a través de múltiples entidades conectadas.