Saltar para o conteúdo principal
Esta avaliação compara GraphRAG com RAG tradicional no mesmo corpus de benchmark e no mesmo conjunto de perguntas. O objetivo foi medir se a recuperação orientada a grafo melhora a resposta a perguntas multi-hop.

O que foi implementado

O sistema avaliado não usou apenas recuperação plana de chunks. Ele implementou GraphRAG com as seguintes etapas:
  1. Dividir os documentos de origem em chunks.
  2. Extrair entidades e relações desses chunks.
  3. Construir um grafo de conhecimento a partir das entidades e relações extraídas.
  4. Executar a recuperação padrão para obter evidências iniciais para uma pergunta do usuário.
  5. Expandir pelos links do grafo para coletar evidências conectadas.
  6. Reordenar o conjunto final de evidências antes da geração da resposta.
Esse foi o comportamento de GraphRAG avaliado.

Com o que ele foi comparado

A comparação usou uma linha de base de RAG tradicional com o mesmo corpus e o mesmo modelo de resposta. A única diferença entre as duas execuções foi o modo de recuperação:
  • Baseline RAG: apenas recuperação plana de chunks
  • GraphRAG: expansão a partir do grafo com reranking orientado pelo grafo
Isso importa porque isola o efeito do próprio GraphRAG.

Desenho do benchmark

O benchmark foi desenhado para testar recuperação multi-hop, não apenas consulta simples em um único chunk. Ele usou:
  • um grafo de conhecimento alvo
  • vários grafos distratores semanticamente parecidos
  • perguntas que exigiam ligar fatos espalhados por múltiplos chunks
Esse desenho é importante. Se toda resposta já aparecer em um chunk óbvio, o GraphRAG não vai mostrar muito ganho sobre RAG padrão.

Método de avaliação

Os dois modos de recuperação foram executados sobre o mesmo corpus de benchmark e o mesmo conjunto de perguntas. Ambos usaram depois o mesmo modelo de geração de respostas e o mesmo prompt de resposta. A avaliação registrou três métricas:
  • Exact match: se a resposta final correspondia exatamente à resposta ouro
  • Token F1: sobreposição de tokens entre a resposta final e a resposta ouro
  • Evidence recall@5: quanto da evidência de suporte necessária aparecia nos 5 chunks recuperados no topo

Como a API foi usada

O fluxo de API avaliado foi simples. A mesma store e os mesmos documentos foram usados tanto na linha de base quanto na execução com GraphRAG. Apenas o modo de consulta mudou.

1. Criar uma store de GraphRAG

curl https://apigw.mka1.com/api/v1/search/graphrag/stores \
  --request POST \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer <mka1-api-key>' \
  --header 'X-On-Behalf-Of: <end-user-id>' \
  --data '{
    "store_name": "benchmark_graphrag",
    "embedding_model": "meetkai:qwen3-embedding-8b",
    "extraction_model": "openai:gpt-4.1-mini",
    "chunk_size": 800,
    "chunk_overlap": 120,
    "max_hops": 2
  }'

2. Ingerir documentos

curl https://apigw.mka1.com/api/v1/search/graphrag/stores/benchmark_graphrag/documents \
  --request POST \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer <mka1-api-key>' \
  --header 'X-On-Behalf-Of: <end-user-id>' \
  --data '{
    "documents": [
      {
        "document_id": "doc_contract_award",
        "text": "Rivera Logistics won the Northern Bridge Sensors contract.",
        "metadata": {
          "source": "benchmark"
        }
      },
      {
        "document_id": "doc_parent_company",
        "text": "Atlas Infrastructure Group owns Rivera Logistics.",
        "metadata": {
          "source": "benchmark"
        }
      }
    ]
  }'

3. Executar a consulta de baseline RAG

curl https://apigw.mka1.com/api/v1/search/graphrag/stores/benchmark_graphrag/query \
  --request POST \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer <mka1-api-key>' \
  --header 'X-On-Behalf-Of: <end-user-id>' \
  --data '{
    "query": "Who is the chief financial officer of the company that owns the Northern Bridge Sensors contract winner?",
    "mode": "baseline",
    "limit": 5,
    "seed_k": 8
  }'

4. Executar a consulta com GraphRAG

curl https://apigw.mka1.com/api/v1/search/graphrag/stores/benchmark_graphrag/query \
  --request POST \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer <mka1-api-key>' \
  --header 'X-On-Behalf-Of: <end-user-id>' \
  --data '{
    "query": "Who is the chief financial officer of the company that owns the Northern Bridge Sensors contract winner?",
    "mode": "graph",
    "limit": 5,
    "seed_k": 8
  }'
Esse último passo é a comparação principal. A consulta, o corpus e o modelo de resposta permaneceram os mesmos. Apenas mode mudou:
  • baseline = recuperação plana tradicional
  • graph = recuperação inicial orientada por grafo com reranking

Resultados medidos

A execução ao vivo do benchmark produziu os seguintes resultados:
MétodoExact MatchToken F1Evidence Recall@5
Baseline RAG50.0%50.0%78.1%
GraphRAG87.5%87.5%90.6%
Melhoria:
  • Exact Match: +37.5 pontos
  • Token F1: +37.5 pontos
  • Evidence Recall@5: +12.5 pontos

Limiar de aceitação

O benchmark usou os seguintes critérios de aprovação:
  • melhoria em exact match de pelo menos +5.0 pontos
  • melhoria em evidence recall@5 de pelo menos +10.0 pontos
A implementação avaliada de GraphRAG passou nos dois limiares.

Resultados representativos por pergunta

Exemplos em que GraphRAG acertou e a baseline RAG não:
  • “Who is the chief financial officer of the company that owns the Northern Bridge Sensors contract winner?”
    • Baseline RAG: unknown
    • GraphRAG: Javier Solis
  • “Which company acquired the firm that prepared a risk report for Meridian Ports Authority?”
    • Baseline RAG: unknown
    • GraphRAG: Atlas Infrastructure Group
  • “Who is the chief financial officer of the company that acquired the firm that prepared a risk report for Meridian Ports Authority?”
    • Baseline RAG: unknown
    • GraphRAG: Javier Solis
Essas são perguntas multi-hop. Elas exigem ligar fatos entre entidades conectadas, em vez de recuperar um único chunk com correspondência direta.

Por que o GraphRAG teve desempenho melhor

A baseline RAG recuperou chunks semanticamente parecidos, mas às vezes não recuperou a evidência conectada necessária para completar a cadeia de raciocínio. O GraphRAG melhorou o desempenho ao:
  • identificar as entidades iniciais relevantes a partir da pergunta
  • percorrer relações do grafo para encontrar evidências ligadas
  • reordenar o conjunto final de evidências usando sinais do grafo além da similaridade semântica
É por isso que o ganho aparece com mais clareza em perguntas multi-hop.

Resumo

Neste benchmark, GraphRAG superou RAG tradicional tanto na precisão da resposta final quanto na recuperação de evidências de suporte. Os maiores ganhos apareceram em perguntas que exigiam ligar fatos entre várias entidades conectadas.