Solve memory bloat with consolidation — recency decay, importance scoring, and LLM-assisted summarization — grounded in the support system's 3-month ticket accumulation problem.
Pense em uma mesa bagunçada versus um arquivo organizado. Ambos contêm as mesmas informações. Na mesa bagunçada, encontrar qualquer coisa exige revirar tudo — e o ruído compete com o trabalho do dia. No arquivo, materiais antigos são resumidos, agrupados e armazenados onde não vão aparecer a não ser que sejam necessários.
O armazenamento de memória de um agente de longa duração se torna a mesa bagunçada. Sem manutenção periódica, a qualidade da recuperação decai — não porque o modelo de embedding mudou, mas porque a proporção de memórias relevantes versus irrelevantes piora com o tempo.
Consolidação de memória é o processo de:
O ciclo de consolidação no sistema de suporte rodava à noite. Após o primeiro mês, a precisão da recuperação melhorou — não por nenhuma mudança no vetor de armazenamento ou no modelo de embedding, mas porque a proporção ruído-sinal diminuiu.
Quando a consolidação importa: A consolidação é mais valiosa em agentes de longa duração que acumulam memória ao longo de semanas ou meses — bots de suporte, assistentes de conhecimento, agentes que aprendem com interações repetidas. Para um agente de vida curta com um conjunto de memórias pequeno e delimitado, a sobrecarga supera o benefício.
Ponto de verificação: Antes de continuar — o que aconteceria com a qualidade de recuperação em um sistema de suporte se cada ticket, incluindo duplicatas fechadas e resoluções desatualizadas, fosse armazenado para sempre? Que problema específico isso cria para o agente?
A resposta: a recuperação retorna resultados obsoletos e substituídos junto com os atuais. O agente não consegue distinguir uma resolução que funcionou há dois anos de uma que ainda é correta. A consolidação é o que mantém o armazenamento atual.
Três estratégias funcionam bem juntas. No sistema de suporte eu as apliquei em sequência: decaimento por recência primeiro, pontuação de importância segundo, depois sumarização assistida por LLM para clusters.
A estratégia mais simples: pontuar cada memória por quão recentemente foi acessada e marcar entradas que não foram recuperadas por muito tempo. A fórmula usa uma curva exponencial — a pontuação cai pela metade a cada half_life_days dias.
O parâmetro half_life_days controla a agressividade. Trinta dias funcionou bem para tickets de suporte, onde as resoluções ficam obsoletas rapidamente. Uma base de conhecimento de documentação estável pode usar 180 dias ou sem decaimento algum.
A recência sozinha não é suficiente — algumas memórias são acessadas raramente mas são críticas quando necessárias. Uma pontuação de importância combina recência com frequência de acesso.
Pesos heurísticos requerem validação: Os pesos acima (0.4 recência, 0.6 frequência) não são verdade absoluta. Cheguei a eles testando com uma amostra de tickets de suporte e verificando se as memórias com pontuação alta eram as que os agentes realmente precisavam. Valide os seus da mesma forma: escolha um "conjunto dourado" de memórias que devem sobreviver à consolidação, execute o pontuador e verifique se elas sobrevivem.
Quando existe um cluster de memórias episódicas relacionadas — dez tickets sobre o mesmo bug de faturamento — resumí-los em uma memória semântica reduz o tamanho do armazenamento enquanto preserva o conhecimento. É aqui que um modelo de linguagem ganha seu lugar no pipeline de consolidação.
A etapa de sumarização roda após o agrupamento — agrupe memórias por similaridade semântica primeiro (usando a busca por cosseno do módulo 03), depois sumarize cada cluster. O resumo torna-se uma nova memória semântica; os originais são arquivados ou excluídos.
Após a consolidação, a recuperação ainda precisa ranquear os resultados. A similaridade semântica sozinha não é o quadro completo. Uma memória recuperada centenas de vezes é provavelmente mais confiável do que uma recuperada uma única vez. Uma memória acessada recentemente pode estar mais atualizada do que uma antiga.
Os pesos aqui correspondem ao que funcionou no sistema de suporte: similaridade domina porque o modelo de embedding é forte, recência importa porque o estado dos tickets muda, e frequência é um pequeno desempate. Para uma base de conhecimento onde o conteúdo raramente muda, você pode transferir peso da recência para a frequência.
Prompt reflexivo: Como seria um bug de consolidação em produção? Suponha que o limite de decaimento por recência seja agressivo demais e remova uma memória raramente acessada mas crítica quando necessária — uma resolução de caso extremo para um erro de faturamento raro. Como você detectaria isso antes que os usuários relatassem contexto faltando? Que logs ou métricas capturariam isso cedo?
A sumarização lida com clusters de memórias relacionadas. A compressão lida com memórias individuais longas — convertendo uma entrada episódica verbosa em um fato semântico compacto.
No sistema de suporte, algumas resoluções de tickets incluíam transcrições completas de conversas. Armazená-las verbatim era caro e tornava a recuperação ruidosa. Comprimir cada uma para um resumo de duas frases preservou o conhecimento sem o ruído.
Compressão é irreversível: Archive o original antes de excluí-lo. Em produção mantive os originais por 90 dias antes da exclusão permanente — tempo suficiente para detectar casos onde a compressão perdeu detalhes críticos.
O sistema de suporte eventualmente cresceu para três agentes: um para triagem, um para busca de resolução, um para escalação. Os três liam e escreviam no mesmo armazenamento de memória.
No framework de orquestração Python que uso, a memória compartilhada funciona através de um armazenamento central que cada agente acessa pela mesma interface. A restrição crítica: escritas são marcadas com o agente que as criou.
A atribuição de agente torna possível auditar conflitos — se o agente de triagem e o agente de resolução armazenam memórias contraditórias sobre o mesmo problema, a marcação diz qual agente produziu cada versão. Também permite retirar as memórias de um agente de forma limpa quando o agente em si é substituído.
Contenção de escrita multi-agente: Dois agentes escrevendo simultaneamente podem produzir entradas duplicadas ou conflitantes. Em produção, serialize as escritas através de uma fila ou adicione uma etapa de deduplicação ao ciclo de consolidação.
1. Qual é a principal razão pela qual a consolidação de memória melhora a qualidade de recuperação?
Correct Answer: B
A consolidação melhora a recuperação removendo memórias obsoletas, duplicadas e de baixo valor. O modelo de embedding e o armazenamento de vetores permanecem os mesmos — o armazenamento simplesmente torna-se mais denso em sinal.
2. Quando você NÃO usaria consolidação de memória?
Correct Answer: C
A consolidação adiciona complexidade e custo computacional. Um agente de vida curta com um conjunto de memórias pequeno e delimitado não precisa dela — a sobrecarga supera o benefício.
3. Qual é o principal risco de definir o limite de decaimento por recência de forma muito agressiva?
Correct Answer: B
Remoção agressiva pode eliminar memórias que raramente são necessárias mas são críticas quando são — por exemplo, resoluções de casos extremos ou entradas relacionadas a conformidade.
4. Por que os pesos de pontuação de importância (0.4 recência, 0.6 frequência) são descritos como pontos de partida?
Correct Answer: C
Pesos heurísticos refletem as trocas em um sistema específico. Eles devem ser validados contra dados reais — o que funciona para tickets de suporte pode não funcionar para uma base de documentação ou assistente pessoal.
5. O que a marcação de memórias com agent_id permite em um sistema multi-agente?
Correct Answer: C
A atribuição de agente permite rastrear qual agente produziu uma memória, identificar conflitos entre agentes e retirar o conjunto de memórias de um agente de forma limpa quando ele é desativado.
6. Qual é o papel da sumarização assistida por LLM no pipeline de consolidação?
Correct Answer: B
A sumarização por LLM comprime clusters de entradas episódicas relacionadas em conhecimento semântico reutilizável, reduzindo o tamanho do armazenamento enquanto preserva o padrão e a resolução.
7. Na função de ranqueamento composto, a similaridade semântica recebe o maior peso padrão (0.6). Por quê?
Correct Answer: C
A similaridade semântica recebe o maior peso porque um modelo de embedding forte captura o significado com precisão. Recência e frequência são sinais úteis mas são desempatadores mais fracos, não o indicador primário de relevância.