Ir para o conteúdo

Emerson Amorim

AI Engineering

Context Engineering vs RAG vs Memory: diferenças e quando usar cada abordagem

Compare Context Engineering, RAG e Memory em sistemas de LLM: o que entra na janela, o que se recupera sob demanda e o que persiste entre sessões. Critérios de escolha e antipadrões.

Por Emerson Amorim14 min de leitura

Context Engineering decide o que entra na janela do modelo agora. RAG decide o que recuperar do corpus sob demanda. Memory decide o que persistir entre turnos e sessões. Misturar os três sem política gera custo, vazamento e respostas instáveis.

Definições operacionais

  • Context Engineering: política de montagem do prompt (instruções, evidências, estado, histórico útil)
  • RAG: recuperação de trechos/documentos no momento da consulta, com ranking e (em produção) ACL
  • Memory: armazenamento seletivo de fatos, preferências ou resumos entre runs, com retenção e escopo

Comparativo lado a lado

CritérioContext EngineeringRAGMemory
Pergunta centralO que cabe agora?O que buscar agora?O que lembrar depois?
FonteBuffers montados na requestÍndice / corpusStore de longo prazo
AtualizaçãoA cada requestIndexação / invalidatePolítica de escrita/retenção
Risco principalRuído e estouro de tokensTrecho errado / vazamento ACLFato obsoleto ou sensível
Métrica útilTokens úteis / latênciaRecall, nDCG, groundednessPrecisão de recall de fatos

Context Engineering na prática

Trate a janela como um orçamento com camadas. Instruções de sistema estáveis. Evidências recuperadas. Estado de ferramentas do run. Histórico compactado. Preferências do usuário só quando necessárias. Cada bloco compete por tokens.

Montagem de contexto com orçamento
type Block = { kind: "system" | "evidence" | "state" | "history"; text: string; tokens: number };

function pack(blocks: Block[], budget: number): Block[] {
  const priority = { system: 0, evidence: 1, state: 2, history: 3 } as const;
  const ordered = [...blocks].sort((a, b) => priority[a.kind] - priority[b.kind]);
  const out: Block[] = [];
  let used = 0;
  for (const block of ordered) {
    if (used + block.tokens > budget) continue;
    out.push(block);
    used += block.tokens;
  }
  return out;
}
  • Priorize evidências citáveis sobre histórico verboso
  • Compacte histórico com sumarização versionada, não delete cego
  • Nunca injete segredos ou PII desnecessária no contexto
  • Logue quais blocos entraram: sem isso, debug vira adivinhação

Onde RAG entra

RAG alimenta o Context Engineering com evidências sob demanda. Sem retrieval, o contexto depende só do que couber no treino ou no prompt estático. Em corpora mutáveis e multi-tenant, RAG com ACL é o padrão mínimo de honestidade factual.

RAG não substitui Context Engineering: trechos ruins bem recuperados ainda estragam a resposta se a montagem ignorar prioridade, citações e limite de tokens. Tampouco substitui Memory: recuperar o mesmo fato a cada turno sem política de persistência pode ser caro e inconsistente.

Memory: persistir com intenção

Memória de curto prazo (sessão) e de longo prazo (usuário/produto) são stores com schema. Grave fatos verificáveis, preferências explícitas e resumos com carimbo de tempo. Evite “lembrar tudo”: isso multiplica risco de privacidade e de contexto poluído.

TipoExemplosPolítica típica
Run statePassos do agente, tool resultsTTL curto; apagar ao fim do run
Session memoryObjetivo da conversa, decisõesTTL de horas/dias
User memoryPreferências, perfil permitidoConsentimento + retenção
Org knowledgePolíticas, manuais (via RAG)ACL + versionamento

Quando usar cada abordagem

  • Só Context Engineering: tarefas curtas com instruções e poucos fatos estáveis
  • Context + RAG: perguntas sobre documentos, políticas e bases mutáveis
  • Context + Memory: assistentes com continuidade e preferências
  • Os três juntos: agentes em produção com retrieval, estado e continuidade

Relação com CAG e KAG

CAG (cache de conhecimento) e KAG (grafo) são estratégias de conhecimento que alimentam o contexto. Continuam subordinadas ao Context Engineering: mesmo com grafo perfeito, a janela precisa de política de embalagem. Detalhes de RAG vs CAG vs KAG ficam no artigo comparativo dedicado.

Antipadrões

  • Despejar o histórico inteiro na janela “por garantia”
  • Usar Memory como dump de transcripts sem curadoria
  • RAG sem ACL e sem citação
  • Tratar Context Engineering como sinonimo de prompt criativo
  • Otimizar só o modelo quando o problema é montagem de contexto

Checklist rápido

  1. Defina orçamento de tokens por feature
  2. Separe blocos: system, evidence, state, history, memory
  3. Exija ACL no retrieval antes de qualquer produção multi-tenant
  4. Versionne sumários e políticas de retenção
  5. Meça groundedness e tokens úteis, não só “satisfação subjetiva”

Emerson Amorim trata Context Engineering como disciplina de arquitetura em AI Engineering: a mesma lógica usada em pipelines RAG e em agentes com harness, onde memória e retrieval só entram com contrato explícito.

Perguntas frequentes

O que é Context Engineering?
É a política de montagem do que entra na janela do modelo agora: instruções, evidências, estado e histórico útil, sob orçamento de tokens, latência e risco.
Context Engineering vs RAG: qual a diferença?
RAG recupera trechos do corpus sob demanda. Context Engineering decide como empacotar essas evidências (e o restante) na janela. Um alimenta o outro; nenhum substitui o outro.
Qual a diferença entre Memory e RAG?
RAG busca conhecimento no momento da consulta. Memory persiste fatos ou preferências entre sessões com retenção e escopo. Memory mal curada vira ruído e risco de privacidade.
Quando usar Context Engineering, RAG e Memory juntos?
Em agentes e assistentes de produção com continuidade: Context Engineering monta a janela, RAG traz evidências com ACL e Memory guarda o que deve sobreviver entre runs.