05-04-01 — Memória: short-term, long-term, episodic, semantic

⏱ 12 minFontes validadas em: 2026-04-29

TL;DR

Agentes têm 4 tipos de memória: Short-term (context window atual — volátil), Long-term (banco de dados persistente — survives restarts), Episodic (histórico de interações passadas), Semantic (conhecimento estruturado — knowledge graphs, fatos). Cada tipo tem custo e uso diferentes.

Mapa dos 4 tipos de memória

graph TD M[Memória do Agente] --> ST[Short-term\nContext window atual] M --> LT[Long-term\nPersistent storage] M --> EP[Episodic\nHistórico de sessões] M --> SEM[Semantic\nConhecimento estruturado] ST --> ST1["• Conversa atual\n• Resultados de tools\n• Working memory\n• Limite: 128k-1M tokens"] LT --> LT1["• Vector DB (Cosmos, Pinecone)\n• Banco relacional\n• Files no storage\n• Sem limite prático"] EP --> EP1["• Log de conversas antigas\n• Decisões tomadas\n• Erros e correções\n• Indexado por tempo"] SEM --> SEM1["• Knowledge graph\n• Fatos sobre entidades\n• Regras de negócio\n• Relações entre conceitos"] style M fill:#1e40af,color:#fff style ST fill:#065f46,color:#fff style LT fill:#7c2d12,color:#fff style EP fill:#4c1d95,color:#fff style SEM fill:#374151,color:#fff

Short-term: a context window

É a memória ativa do agente — tudo que está no contexto da chamada atual ao LLM. Inclui o system prompt, histórico da conversa, resultados de ferramentas, e o estado atual.

  • Capacidade: varia por modelo — GPT-4o: 128k tokens, Claude: até 200k tokens, Gemini: até 1M tokens.
  • Custo: cada token no contexto é cobrado na chamada. Context window longa = custo mais alto.
  • Limite prático: mesmo com 128k tokens disponíveis, modelos perdem qualidade com contextos muito longos ("lost in the middle" problem).
Lost in the middle: Pesquisas mostram que LLMs têm pior recall de informações no meio do contexto do que no início ou fim. Para contextos longos, prefira RAG que traz apenas o trecho relevante ao invés de colocar tudo no contexto.

Long-term: persistência além do contexto

Armazenamento que persiste entre sessões. Recuperado via busca e injetado no contexto quando relevante.

from openai import OpenAI
import chromadb  # Vector DB local

client = OpenAI()
chroma = chromadb.Client()
collection = chroma.create_collection("agent_memory")

def remember(fact: str, metadata: dict):
    """Salva um fato na memória long-term"""
    embedding = client.embeddings.create(
        input=fact, model="text-embedding-3-small"
    ).data[0].embedding
    
    collection.add(
        embeddings=[embedding],
        documents=[fact],
        metadatas=[metadata],
        ids=[f"mem_{hash(fact)}"]
    )

def recall(query: str, n_results: int = 5) -> list[str]:
    """Recupera memórias relevantes para a query"""
    embedding = client.embeddings.create(
        input=query, model="text-embedding-3-small"
    ).data[0].embedding
    
    results = collection.query(
        query_embeddings=[embedding],
        n_results=n_results
    )
    return results["documents"][0]

# Uso no agente
relevant_memories = recall("preferências do cliente Vale")
context = f"Memórias relevantes:\n{chr(10).join(relevant_memories)}"

Episodic: histórico de sessões

Registro de interações passadas. Diferente de long-term por ser organizado cronologicamente e representar "o que aconteceu" (episódios), não apenas fatos.

import json
from datetime import datetime

class EpisodicMemory:
    def __init__(self, storage_path: str):
        self.path = storage_path
    
    def save_episode(self, session_id: str, conversation: list, outcome: str):
        episode = {
            "session_id": session_id,
            "timestamp": datetime.now().isoformat(),
            "conversation": conversation,
            "outcome": outcome,
            "tags": self._extract_tags(conversation)
        }
        # Salva em DB ou arquivo
        with open(f"{self.path}/{session_id}.json", "w") as f:
            json.dump(episode, f)
    
    def get_similar_episodes(self, current_task: str) -> list:
        # Busca episódios anteriores similares para aprender com eles
        # Na prática, usa embedding search no storage
        pass

Semantic: conhecimento estruturado

Fatos e relações sobre o domínio do agente. Pode ser um knowledge graph, um banco de fatos, ou regras de negócio estruturadas.

# Semantic memory como knowledge base estruturada
semantic_memory = {
    "clients": {
        "Vale": {
            "sector": "mineração",
            "erp": "SAP S/4HANA",
            "key_contacts": ["João Silva (CTO)", "Maria Santos (PMO)"],
            "contract_value": "R$ 2M/ano",
            "pain_points": ["integração legacy", "latência relatórios"]
        }
    },
    "products": {
        "SystemX": {
            "target_sectors": ["mineração", "siderurgia"],
            "integrations": ["SAP", "Oracle", "TOTVS"]
        }
    }
}

# O agente consulta isso como contexto fixo
# sem precisar buscar na web a cada vez
Azure Cosmos DB for Vectors: Solução Microsoft para long-term + episodic memory. Suporta embeddings nativamente desde 2024. Integra com Semantic Kernel via AzureCosmosDBNoSQLVectorStoreRecordCollection. Azure AI Search também serve para memória semântica com hybrid search.

Estratégia de memória por caso de uso

Caso de usoShort-termLong-termEpisodicSemantic
Chatbot de suporte✅ (tickets passados)✅ (histórico cliente)💛 (FAQs)
Agente de pesquisa✅ (artigos salvos)💛✅ (domínio)
Assistente pessoal✅ (preferências)✅ (conversas)✅ (calendário, contatos)
Pipeline de dados💛

Como isso se conecta

  • 05-02-02 — Reflexion usa episodic memory para aprender com tentativas anteriores.
  • 05-03-02 — Shared state em multi-agent é uma forma de short-term memory compartilhada.
  • 05-04-02 — Memória long-term cresce com o tempo — planeje custo de storage e retrieval.

Fontes

  1. Lilian Weng — "LLM Powered Autonomous Agents" — seção Memory — taxonomia de memória em agentes.
  2. Microsoft — Azure Cosmos DB Vector Database — solução de long-term memory no Azure.
  3. LangChain — Memory in chatbots — implementação prática de memória com LangChain.
  4. Park et al. — "Generative Agents: Interactive Simulacra" (2023) — paper com arquitetura de memória episodic+semantic em agentes.