stamatios
← Voltar ao feed
Bibliotecário substitui fichas desatualizadas num arquivo gigante, memória precisa de agentes de segurança com Datalog
Dev & Engenharia · Agentes

Memória de LLM vira análise de programas com sistema em Datalog

resumo de ~3 min

O problema: memória que não mantém estado

Durante meses, Jordy Zomer explorou agentes de LLM para pesquisa de vulnerabilidades e esbarrou em uma limitação recorrente: em investigações longas, o modelo perde o controle do que já foi estabelecido. Ele sugere abordagens já descartadas, esquece premissas falsas e continua raciocínios baseados em observações inválidas. Sistemas de memória convencionais apenas armazenam e recuperam conversas antigas via embeddings - mas o que Zomer queria não era lembrar o que foi dito, e sim manter o que é atualmente verdadeiro.

A percepção: isso é análise de programas

A situação lembrou análise de programas: fatos de entrada, regras que derivam novos fatos, cálculo de ponto fixo e atualização incremental quando um fato muda. Em vez de pedir ao LLM que reconstrua todo o estado a cada consulta, por que não simplesmente mantê-lo? Daí surgiu o Lemmalog, um motor Datalog para LLMs. A divisão é clara: o LLM cuida da parte fuzzy - interpretar código, saída de depurador e linguagem natural, convertendo-os em fatos estruturados - e o Lemmalog cuida da parte determinística: derivar consequências e invalidá-las automaticamente quando uma observação muda.

Retrações, proveniência e tempo

Remover fatos em Datalog não é trivial: uma conclusão pode ter múltiplas derivações independentes, e só deve desaparecer quando todas caem. Isso é importante na pesquisa de vulnerabilidades, onde uma conclusão pode sobreviver mesmo que um primitivo específico falhe. O rastreamento de dependências traz um bônus: proveniência - é possível perguntar por que uma conclusão é verdadeira, e conclusões sem suporte não entram silenciosamente no estado da investigação. O Lemmalog também associa fatos a intervalos de validade, permitindo responder tanto o que é verdadeiro agora quanto por que se acreditava em algo antes, sem manter fatos contraditórios.

Por que não um banco vetorial

Busca semântica responde bem à pergunta 'que informação passada é relevante?', mas não sabe que uma afirmação foi desmentida nem quais conclusões dependiam dela. Zomer distingue dois problemas escondidos no termo 'memória': recuperar informação relevante e determinar o que é atualmente verdadeiro. O Lemmalog ataca o segundo, e os dois podem ser combinados.

Resultados em benchmarks

No LongMemEval (102 questões, três execuções), o Lemmalog alcançou F1 de 0,463 ± 0,010 e acurácia de 0,575 ± 0,004 - atrás de PropMem (0,550) e SimpleMem (0,480), mas com mais que o dobro do F1 do contexto completo com GPT-4.1 (0,197), usando cerca de 38 vezes menos contexto (~2.700 tokens contra ~104.000 por questão). Na categoria Knowledge Update, o Lemmalog liderou com 0,579. O ponto fraco foi raciocínio multi-sessão (0,211 contra 0,582 do PropMem), geralmente por falha de extração, não de derivação.

No LoCoMo (1.986 questões, três execuções), o Lemmalog marcou 0,533 ± 0,001 de F1, em terceiro entre sistemas de memória dedicados, atrás de PropMem (0,605) e OpenClaw (0,557), e atrás também do contexto completo (0,542). Destacam-se as perguntas adversariais (0,707 contra 0,509 do contexto completo), nas quais responder 'não' a premissas falsas é útil, e a recuperação temporal: um bug que comparava datas como símbolos internados foi corrigido, elevando o escore de 0,257 para 0,454.

Depuração e front-end

Uma instrução anti-alucinação fez o leitor recusar 32 respostas que exigiam contagem, derrubando o F1 a 0,371; separar recusa legítima de síntese sobre fatos existentes recuperou parte do desempenho, e correções adicionais (um stemmer que não casava 'owns' com 'own', pré-cálculo de aritmética de datas) elevaram o F1 a 0,463. A resolução de entidades e a recuperação híbrida (BM25, grafos e embeddings) também foram decisivas: a maior parte do ganho veio de melhorar como a informação entra e sai do estado, não de um avaliador mais inteligente.

Limites e conclusão

O Lemmalog é fraco em inferência (0,164 no LoCoMo contra 0,289 do PropMem), pois achatarar conhecimento condicional em tuplas perde nuance. A arquitetura recomendada combina estado dedutivo com memória episódica e texto-fonte. O custo de extração acontece uma vez, enquanto o contexto completo é pago a cada consulta - em agentes persistentes, a diferença cresce com o tempo. Zomer reconhece que os resultados não provam que Datalog resolveu a memória de LLMs: PropMem ainda vence em ambas as comparações, e o benchmark não é uma investigação real de vulnerabilidades. O próximo experimento é rodar um agente em uma investigação longa real e verificar se manter o estado evita ressuscitar hipóteses mortas. A conclusão central: em vez de ampliar a janela de contexto toda vez que o agente esquece algo, às vezes basta manter o estado.