Pular para o conteúdo

Lemmalog: memória de LLM baseada em Datalog faz 0,463 de F1 no LongMemEval com 2.700 tokens

Em um texto sobre o Lemmalog, o autor argumenta que memórias de LLM costumam falhar em investigações longas porque não mantêm um estado consistente quando as premissas mudam. A proposta é pegar emprestada uma ideia da análise de programas: guardar fatos e derivações em um mecanismo Datalog, que invalida automaticamente o que depende de uma premissa que mudou.

Como a divisão de trabalho funciona

O LLM fica na parte imprecisa: converte linguagem natural, código-fonte e saída de depurador em fatos estruturados. O Datalog cuida da parte determinística, com regras, rastreamento de proveniência e avaliação incremental. Nas palavras do autor, o LLM lida com a parte “fuzzy” e o Lemmalog com a parte determinística. O sistema suporta retrações, proveniência temporal e agregações, e é exposto como servidor MCP para agentes.

Resultados nos benchmarks

No LongMemEval (102 questões), o Lemmalog marca 0,463 de F1 (±0,010) usando cerca de 2.700 tokens de contexto por questão, contra 104.000 tokens no contexto completo. Em atualização de conhecimento chega a 0,579, acima dos 0,528 do PropMem. No LoCoMo (1.986 questões) marca 0,533, em terceiro lugar entre sistemas dedicados, atrás de PropMem (0,605) e OpenClaw (0,557). Em perguntas adversariais, tem o melhor resultado, 0,707.

Onde fica atrás

Em inferência, o Lemmalog faz 0,164 contra 0,289 do PropMem. Em raciocínio multissessão, 0,211 contra 0,582. O autor também reconhece que o sistema depende muito da qualidade da extração inicial de fatos: a primeira versão da extração marcava 0,226 de F1, e a final chegou a 0,463.

Bugs que o autor encontrou

Três problemas não óbvios apareceram nos testes: um comparador de datas que usava IDs internos de símbolos em vez de timestamps, um stemmer que não reconhecia “owns” como variação de “own”, e instruções anti-alucinação que faziam o modelo recusar respostas válidas. São o tipo de detalhe que não aparece no resumo de um benchmark, mas explica boa parte da diferença entre a primeira e a última versão.