---
title: "GraphRAG 3.1 e FastGraphRAG: quando o grafo vence o RAG vetorial — e quanto custa"
description: "GraphRAG, FastGraphRAG ou busca vetorial? As diferenças reais, os custos escondidos e um protocolo reproduzível para escolher sem inventar benchmark."
date: 2026-08-15
canonical: https://arvor.co/noticias/graphrag-3-1-fastgraphrag-custo-benchmark
---

RAG vetorial é muito bom em encontrar um trecho parecido com uma pergunta. O problema começa quando a resposta não está num trecho.

“Quais temas atravessam todos os relatórios de incidentes?”, “como fornecedor, sistema e contrato se relacionam?” ou “o que mudou na narrativa da empresa ao longo de três anos?” são perguntas sobre estrutura. O documento relevante não está perdido; a relação está espalhada.

É aí que GraphRAG entra. Em vez de indexar somente pedaços de texto e suas embeddings, ele extrai entidades, relações e comunidades e cria resumos hierárquicos do corpus. Só que essa estrutura custa dinheiro para construir. A pergunta adulta não é “grafo é melhor que vetor?”. É: **para quais perguntas o ganho paga o custo de indexação e operação?**

A linha 3.1 do [GraphRAG da Microsoft](https://github.com/microsoft/graphrag) tornou essa decisão mais concreta ao manter dois métodos oficiais de indexação: Standard GraphRAG e FastGraphRAG. Uma precisão importante: **FastGraphRAG não nasceu na versão 3.1**, e a [release 3.1.0](https://github.com/microsoft/graphrag/releases/tag/v3.1.0) é uma versão do software, não um novo paper ou uma nova geração do algoritmo. Misturar os dois rende manchete; separar rende arquitetura.

## Vetor, grafo rico e grafo rápido

<div style="overflow-x:auto;max-width:680px;margin:26px auto 10px">
<svg viewBox="0 0 680 390" role="img" aria-labelledby="graphrag-choice-t" style="width:100%;height:auto;min-width:620px;display:block;margin:0 auto" font-family="ui-monospace, SFMono-Regular, Menlo, monospace">
  <title id="graphrag-choice-t">Árvore de decisão: perguntas localizadas começam com RAG vetorial; perguntas globais seguem para FastGraphRAG quando o foco é sumarização e para Standard GraphRAG quando exigem entidades e relações de alta fidelidade.</title>
  <defs>
    <marker id="graphrag-arrow-c" viewBox="0 0 8 8" refX="7.5" refY="4" markerWidth="8" markerHeight="8" markerUnits="userSpaceOnUse" orient="auto"><path d="M0 0 L8 4 L0 8 Z" fill="#27e3ff"/></marker>
    <marker id="graphrag-arrow-g" viewBox="0 0 8 8" refX="7.5" refY="4" markerWidth="8" markerHeight="8" markerUnits="userSpaceOnUse" orient="auto"><path d="M0 0 L8 4 L0 8 Z" fill="#d4af37"/></marker>
  </defs>
  <text x="20" y="24" font-size="13" letter-spacing="1.2" fill="#27e3ff">ESCOLHA PELO TIPO DE PERGUNTA<tspan fill="#7a9ab8" letter-spacing="0"> &#183; depois meça</tspan></text>
  <rect x="230" y="48" width="220" height="44" rx="9" fill="#0a1828" stroke="#4a6785"/>
  <text x="340" y="75" text-anchor="middle" font-size="13" fill="#f0ede6">a resposta cabe em trechos?</text>
  <path d="M230 70 H128 V126" fill="none" stroke="#27e3ff" stroke-width="1.5" marker-end="url(#graphrag-arrow-c)"/>
  <text x="164" y="61" font-size="12" fill="#7a9ab8">sim</text>
  <rect x="38" y="126" width="180" height="76" rx="12" fill="#0a1828" stroke="#27e3ff"/>
  <text x="128" y="156" text-anchor="middle" font-size="13" fill="#27e3ff">RAG VETORIAL</text>
  <text x="128" y="179" text-anchor="middle" font-size="12" fill="#7a9ab8">top-k + evidência local</text>
  <path d="M450 70 H552 V126" fill="none" stroke="#d4af37" stroke-width="1.5" marker-end="url(#graphrag-arrow-g)"/>
  <text x="500" y="61" font-size="12" fill="#7a9ab8">não</text>
  <rect x="462" y="126" width="180" height="76" rx="12" fill="#0a1828" stroke="#d4af37"/>
  <text x="552" y="156" text-anchor="middle" font-size="13" fill="#d4af37">GRAFO</text>
  <text x="552" y="179" text-anchor="middle" font-size="12" fill="#7a9ab8">relações + comunidades</text>
  <path d="M552 202 V236 H430 V270" fill="none" stroke="#d4af37" stroke-width="1.5" marker-end="url(#graphrag-arrow-g)"/>
  <path d="M552 202 V236 H596 V270" fill="none" stroke="#d4af37" stroke-width="1.5" marker-end="url(#graphrag-arrow-g)"/>
  <text x="430" y="226" text-anchor="middle" font-size="12" fill="#7a9ab8">sumarizar</text>
  <text x="596" y="226" text-anchor="middle" font-size="12" fill="#7a9ab8">explorar</text>
  <rect x="348" y="270" width="164" height="78" rx="12" fill="#0a1828" stroke="#4a6785"/>
  <text x="430" y="299" text-anchor="middle" font-size="13" fill="#f0ede6">FASTGRAPHRAG</text>
  <text x="430" y="322" text-anchor="middle" font-size="12" fill="#7a9ab8">mais barato · mais ruído</text>
  <rect x="520" y="270" width="142" height="78" rx="12" fill="#0a1828" stroke="#4a6785"/>
  <text x="591" y="299" text-anchor="middle" font-size="13" fill="#f0ede6">STANDARD</text>
  <text x="591" y="322" text-anchor="middle" font-size="12" fill="#7a9ab8">grafo mais rico</text>
  <path d="M128 202 V370 H591 V354" fill="none" stroke="#5b6b7f" stroke-width="1.3" stroke-dasharray="4 4"/>
  <text x="340" y="385" text-anchor="middle" font-size="12" fill="#7a9ab8">mesmo corpus · mesmas perguntas · mesmo gerador · orçamento registrado</text>
</svg>
</div>

*A árvore é uma hipótese de partida, não um resultado. A escolha final precisa sobreviver ao mesmo corpus, às mesmas perguntas e ao mesmo orçamento.*

O **RAG vetorial** divide documentos, gera embeddings e recupera os `k` trechos mais próximos da consulta. É simples, relativamente barato e continua sendo a melhor linha de base para perguntas localizadas: cláusula, fato, definição, passagem específica.

O **Standard GraphRAG** usa LLMs para extrair e descrever entidades, relações e, opcionalmente, afirmações. Depois consolida descrições, detecta comunidades e gera relatórios em vários níveis. A [documentação oficial de indexação](https://microsoft.github.io/graphrag/index/overview/) deixa clara a ambição: transformar texto não estruturado numa representação que carrega relações e hierarquia, além de embeddings.

O **FastGraphRAG** troca parte desse raciocínio por NLP tradicional. Entidades vêm de sintagmas nominais extraídos por NLTK ou spaCy; relações vêm da coocorrência no mesmo trecho; não há descrição nem sumarização individual de entidade e relação. O LLM continua participando da geração dos relatórios de comunidade, mas recebe os trechos associados às entidades em vez de um grafo semanticamente descrito.

Isso o torna mais rápido e barato para indexar. Também produz um grafo mais ruidoso e menos útil fora do próprio fluxo de GraphRAG. Essa troca não é opinião nossa: é a orientação da [comparação oficial entre os métodos](https://microsoft.github.io/graphrag/index/methods/).

## Onde está o custo de verdade

A Microsoft estima que a extração do grafo responda por aproximadamente **75% do custo de indexação** no método Standard. É justamente a etapa que o FastGraphRAG simplifica com NLP.

Mas “75% da indexação” não significa “75% do custo total”, muito menos “Fast custa 75% menos”. O custo total depende de volume, modelo, atualização do corpus, estratégia de busca e número de consultas. Global Search, por exemplo, percorre relatórios de comunidades em map-reduce e é descrita pela própria documentação como intensiva em recursos.

A conta honesta é:

`custo total = indexação inicial + atualizações + (consultas × custo por consulta) + operação`

Se o corpus muda uma vez por mês e recebe milhões de consultas, investir mais no índice pode reduzir o custo por resposta ou elevar a qualidade o suficiente para compensar. Se muda a cada hora e recebe poucas consultas, o índice sofisticado pode nunca se pagar. Sem frequência de atualização e volume de uso, comparar preço por milhão de tokens é teatro.

## O tipo de busca importa tanto quanto o índice

GraphRAG não oferece uma única consulta “de grafo”. O [motor oficial](https://microsoft.github.io/graphrag/query/overview/) inclui quatro caminhos que respondem a necessidades diferentes:

- **Basic Search:** RAG vetorial top-k, útil como linha de base;
- **Local Search:** combina entidades e relações relevantes com trechos de origem, para perguntas sobre elementos específicos;
- **Global Search:** usa relatórios de comunidades em map-reduce, para perguntas sobre o corpus como um todo;
- **DRIFT Search:** parte de informação de comunidades e cria perguntas de aprofundamento para ampliar uma investigação local.

O [paper original da Microsoft Research](https://www.microsoft.com/en-us/research/publication/from-local-to-global-a-graph-rag-approach-to-query-focused-summarization/) encontrou ganhos sobre RAG convencional em abrangência e diversidade para uma classe de perguntas globais em corpora perto de um milhão de tokens. Isso sustenta a hipótese de GraphRAG para *sensemaking global*. Não prova superioridade universal, não mede seu corpus e não autoriza vender qualquer grafo como milagre.

## Um benchmark que dá para reproduzir

Não rodamos um experimento neste artigo, portanto não vou inventar uma tabela com vencedores. O ativo útil é o protocolo: um teste que qualquer time pode executar e auditar.

### 1. Congele o terreno

Versione o corpus, normalize os documentos e registre idioma, tamanho, duplicatas e data de corte. Use exatamente os mesmos chunks, embeddings e modelo gerador sempre que a arquitetura permitir. Fixe também orçamento de contexto, parâmetros de geração e versão do GraphRAG.

### 2. Monte perguntas por classe

Separe antes de testar, sem olhar a saída dos sistemas:

- **local factual:** resposta concentrada em um ou poucos trechos;
- **relação e múltiplos saltos:** exige conectar entidades distantes;
- **global:** pede temas, padrões ou síntese do corpus;
- **negativa:** a resposta não existe e o sistema deve admitir;
- **temporal ou conflitante:** fontes discordam ou mudam ao longo do tempo.

Cada pergunta precisa de uma resposta de referência e, mais importante, de um conjunto de evidências esperadas revisado por especialista.

### 3. Compare três braços

Rode **Basic/vector RAG**, **Standard GraphRAG** e **FastGraphRAG**. Repita as consultas para capturar variação do modelo. Não dê mais contexto ou um gerador melhor ao sistema favorito; isso mede orçamento, não arquitetura.

### 4. Meça qualidade e custo separadamente

Em qualidade, registre correção factual, cobertura das evidências, precisão das citações, capacidade de recusar e consistência sob paráfrase. Para perguntas globais, avalie abrangência sem premiar texto comprido.

Em custo, registre tokens e tempo de indexação, armazenamento, latência e tokens por consulta, custo de atualização e esforço operacional. Publique falhas e timeouts; apagá-los da média transforma benchmark em propaganda.

### 5. Decida por fronteira, não por campeão

O resultado raramente será “um sistema vence tudo”. O esperado é uma fronteira: vetor domina perguntas locais baratas; Fast entrega boa síntese global com índice econômico; Standard justifica o preço quando relações de alta fidelidade e exploração do grafo importam. Se os dados não mostrarem essa forma, siga os dados.

## Quando o grafo vence

Grafo tende a ganhar quando a pergunta depende de relações distribuídas, quando o corpus precisa ser compreendido como conjunto ou quando a estrutura extraída vira ativo para outras tarefas. Vetor tende a ganhar quando a resposta é local, o corpus muda rápido, o orçamento é curto ou o volume ainda não justifica uma camada nova.

FastGraphRAG ocupa o meio: uma aposta sensata para sumarização global quando o grafo é meio, não produto. Standard faz sentido quando a qualidade das entidades, relações e comunidades tem valor próprio — auditoria, descoberta, navegação ou integração com outros sistemas.

Foi por isso que escrevemos antes que [RAG agêntico precisa de governança](/noticias/rag-agentico-2026). Um grafo não corrige documento velho, permissão errada ou métrica sem dono. Ele organiza relações; não fabrica verdade.

No [BRAIN MAKER](/brain-maker), grafo de conhecimento é usado quando a estrutura paga aluguel: proveniência, conexões entre fontes e raciocínio que um top-k não entrega. O desenho começa pela bateria de perguntas, não pelo banco de grafos.

Se alguém já escolheu sua arquitetura antes de montar o benchmark, não está medindo. Está procurando uma planilha que concorde.
