Ir para o conteúdo

Emerson Amorim

AI Agents

Além do RAG: a arquitetura de memória persistente que permite aos agentes de IA trabalhar com contexto de longo prazo

Episódica, semântica e operacional: blueprint da memória de agentes com GraphRAG, recuperação contextual, esquecimento controlado e proteção contra contaminação. Letta, Mem0, Zep/Graphiti.

Por Emerson Amorim18 min de leitura
Além do RAG: memória persistente para agentes de IA com camadas episódica, semântica, recuperação inteligente e contexto de longo prazo
Memória persistente em camadas: episódica, semântica, recuperação inteligente e contexto do agente além da janela de tokens.

RAG responde perguntas; memória constrói relacionamentos. A diferença entre um chatbot amnésico e um agente que retoma um workflow de três semanas é uma arquitetura de memória persistente em três camadas (episódica, semântica e operacional), com recuperação contextual, grafos de conhecimento, esquecimento controlado e defesa contra contaminação.

Este guia entrega o blueprint que o mercado convergiu em 2026: a taxonomia, os padrões de implementação (Letta, Mem0, Zep/Graphiti, GraphRAG) e as duas disciplinas que separam um assistente confiável de um que age sobre fatos mortos.

Introdução: a segunda sessão é onde os agentes morrem

Todo demo de agente de IA impressiona na primeira sessão. O teste real começa na segunda, quando o usuário volta e o agente pergunta do zero: "Sobre o que você gostaria de falar?". É aí que times de produto descobrem, na prática, o que a pesquisa formalizou: context window não é memória. Janela de contexto é espaço de trabalho; memória é infraestrutura que persiste quando a janela fecha.

Em 2026, o mercado respondeu com uma convergência notável. Frameworks open source (Letta, LangGraph, CrewAI, Mem0, Zep, Cognee) e plataformas gerenciadas (Amazon Bedrock AgentCore Memory, memory tool da Anthropic) adotaram a mesma taxonomia de três camadas, herdada da ciência cognitiva: memória episódica, semântica e procedural (operacional), mapeada no framework CoALA que LangChain, Letta e Mem0 citam como fundação.

1. Por que RAG não é memória (e onde ele para)

RAG é recuperação stateless: a pergunta entra, os chunks mais similares saem, a resposta é gerada. Nada é retido entre sessões. Três limitações estruturais:

  • Sem estado entre sessões: cada turno é a primeira vez para o sistema
  • Similaridade não é relevância: o fato recente pode vencer a regra duradoura só por embedding próximo
  • Sem evolução: RAG acumula contradições; não distingue "endpoint mudou" de "há endpoint novo"

A regra de projeto: RAG responde "o que está nos documentos?"; memória responde "o que aprendi com este usuário, este processo, este histórico e o que ainda vale?".

2. Taxonomia de três camadas: episódica, semântica e operacional

Memória episódica: o diário de bordo

Registro log-like do que aconteceu, em sequência, com contexto preservado. Exemplo: "na sessão de terça, o usuário pausou o projeto X porque a API estourou o rate limit". É instance-specific por natureza.

  • Implementação de referência: Letta (ex-MemGPT) estrutura hierarquia in-context + Recall Memory além da janela, consultável por data ou texto
  • Padrão que escala: consolidação de episódios em resumo e lições (não logging ingênuo de conversa)
  • Teste de valor: retomar workflow de semanas sem reexplicação do usuário

Memória semântica: o que o agente acredita ser verdade

Fatos, preferências e conhecimento abstraídos, em grande parte atemporais: "prefere respostas em português", "cliente é PJ do setor financeiro".

Mem0 formalizou a arquitetura (paper arXiv 2504.19413): extração via LLM, detecção de conflitos, atualização de grafo, escopos usuário/sessão/agente e backend híbrido (vetor + grafo). O pipeline ADD/UPDATE/DELETE/NOOP decide na escrita se o fato adiciona, atualiza, invalida ou é ignorado. Sem isso, preferência antiga e nova convivem como se ambas fossem verdade.

Memória procedural (operacional): as habilidades

O "como se faz": skills, workflows e heurísticas ("para este cliente, validar o schema antes da API"). Em 2026 a ferramenta procedural ainda é imatura; Bedrock AgentCore Memory não oferece loja procedural gerenciada. Contorno emergente: injeção declarativa via CLAUDE.md / AGENTS.md (auditável, versionada).

Session events
      │
      ▼
┌─────────────┐     consolidate      ┌─────────────┐
│  Episodic   │─────────────────────►│  Semantic   │
└─────────────┘                      └──────┬──────┘
      │                                     │ frequent patterns
      │                                     ▼
      │                              ┌─────────────┐
      │                              │ Procedural  │
      │                              └─────────────┘
      ▼
 Multi-signal retrieval (vector + BM25 + graph)
      │
      ▼
 Curated context budget → Agent prompt
Fluxo: episódios → consolidação → fatos semânticos → procedimentos; recuperação multi-sinal alimenta o prompt com orçamento curado.

3. Recuperação contextual: além da similaridade vetorial

O estado da arte combina múltiplos sinais em pontuação fundida. Similaridade semântica sozinha é ingênua.

  • Multi-sinal: embedding + BM25 + entity matching em paralelo (padrão Mem0 / Graphiti)
  • Metadados: atributos como {"context": "healthcare"} evitam vazamento entre domínios
  • Escopo de primeira classe: usuário, sessão e agente (multi-tenant por natureza)
  • Injeção, não junção: orçamento de contexto curado, não despejo de chunks
Esqueleto de recuperação multi-sinal com escopo
type MemoryHit = {
  id: string;
  text: string;
  kind: "episodic" | "semantic" | "procedural";
  score: number;
  validUntil?: string;
};

async function retrieveMemory(input: {
  query: string;
  userId: string;
  agentId: string;
  budget: number;
}): Promise<MemoryHit[]> {
  const [dense, sparse, entities] = await Promise.all([
    vectorSearch(input.query, input.userId, input.agentId),
    bm25Search(input.query, input.userId, input.agentId),
    entityMatch(input.query, input.userId),
  ]);

  return fuseScores([...dense, ...sparse, ...entities])
    .filter((hit) => !isStale(hit))
    .slice(0, input.budget);
}

4. Grafos de conhecimento e GraphRAG

Vetores respondem "o que é parecido?". Grafos respondem "como isto se conecta àquilo?". Em escala, dois "João Silvas" ou versões de API se misturam no embedding; a travessia distingue por relações.

  • GraphRAG extrai entidades e relações e recupera por estrutura
  • Graphiti (Zep): BM25 + embedding + travessia com ponderação temporal
  • Arestas com validade temporal separam história de obsolescência
  • Backends convergindo: PostgreSQL + pgvector ou MongoDB Atlas Vector Search atrás de APIs como Mem0/Zep

5. Esquecimento controlado

Mais memória não é sempre melhor. Agente que nunca esquece acumula contradições, recupera ruído e age sobre fatos mortos. Staleness é problema em aberto no mercado: resolve-se no desenho, não só na ferramenta.

  1. Write policy: segredos, one-offs e ruído não entram
  2. TTL e decaimento: fatos voláteis expiram; score penaliza staleness
  3. Invalidação explícita: ADD/UPDATE/DELETE/NOOP (substituição com rastro)
  4. Esquecimento dirigido: padrão Letta (consolidar vs arquivar)

6. Proteção contra contaminação de memória

Memória persistente é banco de influência sobre o comportamento futuro. Isso a torna superfície de ataque.

  • Cross-session poisoning: prompt injection memorizado vira comprometimento duradouro
  • Vazamento entre escopos: sem namespace por usuário/agente, um tenant contamina outro
  • Defesa: validação na escrita, filtro de escopo na recuperação, HITL para memórias de alto impacto, auditoria (LGPD/GDPR: direito ao esquecimento também na memória do agente)
  • Testes de regressão de memória: escritas instrumentadas tornam contaminação detectável

7. Tabela de decisão: qual arquitetura para o seu caso

CenárioCamada prioritáriaPadrão recomendadoArmadilha
Chatbot/concierge com retornoSemânticaMem0 (ADD/UPDATE/DELETE)Acumular contradições
Workflow que retoma tarefasEpisódicaLetta/MemGPT (in-context + Recall)Logging ingênuo
Assistente corporativo multiuserEpisódica + semântica + grafoZep/GraphitiConfusão de entidades
Conhecimento organizacionalGrafo (GraphRAG)GraphRAG sobre base documentalGrafo sem manutenção
Multiagente orquestradoEscopo + namespaceMemória por agente + barramento curadoCorrupção cruzada
Dados regulados (LGPD/GDPR)Todas + governançaTTL + auditoria + direito ao esquecimentoMemória sem expurgo

Leitura honesta: o mercado fragmenta antes de convergir. Mem0 brilha em semântica; Letta em continuidade. Em 2026, cubra lacunas dolorosas com 2–3 sistemas combinados até a camada unificada amadurecer.

Conclusão: memória é o produto, contexto é só a janela

A indústria passou uma década otimizando o que cabe na janela. A próxima fase competitiva é o que sobrevive quando ela fecha. RAG deu acesso a documentos; memória dá capacidade de aprender com a relação, em vez de recomeçá-la a cada sessão.

Em 2027, "nosso agente tem memória" será tão óbvio quanto "nosso app tem banco". A vantagem estará em quem desenhou esquecimento controlado e proteção contra contaminação. O que você deixa fora importa tanto quanto o que você guarda.

Emerson Amorim trata Agent Memory como extensão natural de Context Engineering e Agentic AI em produção: a mesma disciplina usada em sistemas agentic (KingFy) e em consultoria de AI Engineering, onde memória sem política vira dívida operacional.

Perguntas frequentes

Qual a diferença entre RAG e memória de agentes?
RAG é recuperação stateless: busca em documentos a cada pergunta, sem reter nada entre sessões. Memória de agentes é persistente e evolutiva: retém episódios, fatos e habilidades, atualiza o que mudou e permite retomar contextos sem reexplicação.
Quais são os tipos de memória em agentes de IA?
Padrão de mercado (CoALA, Letta, Mem0, LangChain): episódica (registro contextualizado do que aconteceu), semântica (fatos e preferências generalizados) e procedural/operacional (habilidades e workflows; ainda a camada menos madura).
O que é GraphRAG e quando usar em vez de busca vetorial?
GraphRAG extrai entidades e relações e recupera por estrutura. Use quando relacionamentos importam: entidades homônimas, mudanças no tempo e conexão de fatos entre domínios.
Como funciona o esquecimento controlado em memória de IA?
Com write policy seletiva, TTL/decaimento, invalidação explícita (ADD/UPDATE/DELETE/NOOP) e consolidação dirigida pelo agente. Esquecimento se resolve no desenho; staleness ainda é problema em aberto nas ferramentas.
O que é contaminação de memória em agentes de IA?
Quando conteúdo inválido ou malicioso de uma sessão é memorizado e influencia as seguintes (cross-session poisoning) ou vaza entre escopos. Defesas: validação na escrita, namespace, auditoria e testes de regressão de memória.
Quais ferramentas usar para memória de agentes em produção?
Letta/MemGPT para continuidade episódica; Mem0 para fatos semânticos com atualização write-time; Zep/Graphiti para grafo temporal; GraphRAG para conhecimento estruturado; Bedrock AgentCore Memory como opção gerenciada. Combine 2–3 conforme as lacunas.