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.
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ério | RAG | CAG | KAG |
|---|---|---|---|
| Atualização | Indexação incremental | Invalidate/rebuild de cache | Atualização de nós/arestas |
| Rastreio | Trechos recuperados | Hit de cache / prefix id | Caminhos no grafo |
| Latência típica | Busca + rerank + LLM | Menor se cache quente | Traversal + LLM |
| Melhor para | Corpora amplos e mutáveis | Perguntas repetidas / políticas estáveis | Relações e consistência factual |
| Risco principal | Alucinação com trechos ruins | Cache obsoleto | Grafo 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.
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?”.
MATCH (s:Service)-[:DEPENDS_ON*1..3]->(d:Service {name: $name})
RETURN s.name AS dependent, length(path) AS hops
ORDER BY hopsQuando usar cada abordagem
- Comece com RAG se o corpus é grande, heterogêneo e muda com frequência
- Adicione CAG para hot paths com perguntas repetidas e documentos versionados
- Introduza KAG quando a pergunta exige relações explícitas ou auditoria de fatos
- 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