Ir para o conteúdo

Emerson Amorim

AI Engineering

RAG vs CAG vs KAG: diferenças, arquitetura e quando utilizar cada abordagem

Compare RAG, CAG e KAG: recuperação, cache de conhecimento e grafos. Arquitetura, trade-offs e critérios objetivos de escolha.

Por Emerson Amorim14 min de leitura

RAG recupera evidências sob demanda. CAG antecipa conhecimento no contexto ou em cache quente. KAG estrutura fatos em grafo. A escolha correta depende de volatilidade dos dados, necessidade de rastreio e custo de latência.

Definições operacionais

  • RAG (Retrieval-Augmented Generation): busca documentos/trechos no momento da consulta e condiciona a geração
  • CAG (Cache-Augmented Generation): materializa conhecimento frequente em cache ou prefixo para reduzir recuperação repetida
  • KAG (Knowledge-Augmented Generation via grafo): usa entidades e relações explícitas para raciocínio e verificação

Comparativo arquitetural

CritérioRAGCAGKAG
AtualizaçãoIndexação incrementalInvalidate/rebuild de cacheAtualização de nós/arestas
RastreioTrechos recuperadosHit de cache / prefix idCaminhos no grafo
Latência típicaBusca + rerank + LLMMenor se cache quenteTraversal + LLM
Melhor paraCorpora amplos e mutáveisPerguntas repetidas / políticas estáveisRelações e consistência factual
Risco principalAlucinação com trechos ruinsCache obsoletoGrafo incompleto ou enviesado

Arquitetura RAG

Pipeline clássico: ingestão → chunking → embeddings → índice vetorial (+ lexical) → retrieval → rerank → prompt com citações → geração. Em produção, acrescente ACL por documento, telemetria de hit rate e avaliação de groundedness.

Esqueleto de retrieval com filtro de acesso
def retrieve(query: str, user_acl: set[str], k: int = 8) -> list[dict]:
    hits = vector_search(query, k=k * 3)
    allowed = [h for h in hits if h["doc_acl"] & user_acl]
    return rerank(query, allowed)[:k]

Arquitetura CAG

CAG brilha quando o mesmo bloco de conhecimento é reutilizado: políticas internas, FAQ estável, manuais de produto. Você pré-compila um pacote de contexto (ou KV-cache de prefixo, quando a infraestrutura do modelo permitir) e invalida por versão de documento.

  • Chave de cache: tenant + versão do corpus + idioma
  • TTL curto para conteúdo regulatório
  • Fallback para RAG quando miss ou stale

Arquitetura KAG

KAG extrai entidades e relações, persiste em grafo e usa traversal ou consultas estruturadas antes da geração. É útil para compliance, linhagem de dados e perguntas do tipo “qual sistema depende de X?”.

Consulta ilustrativa de dependência
MATCH (s:Service)-[:DEPENDS_ON*1..3]->(d:Service {name: $name})
RETURN s.name AS dependent, length(path) AS hops
ORDER BY hops

Quando usar cada abordagem

  1. Comece com RAG se o corpus é grande, heterogêneo e muda com frequência
  2. Adicione CAG para hot paths com perguntas repetidas e documentos versionados
  3. Introduza KAG quando a pergunta exige relações explícitas ou auditoria de fatos
  4. Combine: KAG para plano de evidências + RAG para texto de suporte + CAG para políticas

Limitações e erros comuns

  • Tratar CAG como substituto universal do retrieval
  • Grafo sem governança de ontologia
  • RAG sem controle de acesso no índice
  • Otimizar embedding antes de medir qualidade da pergunta e do chunking