Módulo NGT Memory mostra como dar memória persistente a LLM sem banco de dados vetorial
NGT Memory é um módulo de memória open-source para LLM que armazena fatos sobre o usuário entre sessões e os injeta nas respostas do modelo. Internamente…
Processado por IA de Habr AI; editado por Hamidun News
O projeto open-source NGT Memory oferece uma resposta mais prática para um velho problema de LLM: como não esquecer fatos importantes sobre um usuário entre sessões. Em vez de expandir infinitamente o contexto, o módulo armazena fatos, constrói um perfil e injeta memória na resposta do modelo.
Como a Memória Funciona
O autor do projeto parte de uma ideia simples: armazenar todo o histórico de conversa na janela de contexto é conveniente apenas até o primeiro limite de tokens. Depois disso vêm truncamentos de mensagens antigas, sumarização com perda de detalhes, ou conexão com um banco de dados vetorial externo com sobrecarga extra de infraestrutura. NGT Memory propõe outro caminho: a memória vive diretamente em um processo Python, é acionada através de API REST e Docker, e não requer um banco de dados separado no lançamento. A ideia é extrair não toda a conversa, mas apenas os fatos que o modelo realmente precisa no pedido atual.
- Similaridade de cosseno encontra fatos semanticamente próximos
- Grafo associativo vincula conceitos como "vegetariano" e "restaurantes"
- Consolidação hierárquica promove fatos frequentemente usados para memória de longo prazo
- Perfil estruturado coloca idade, cidade, dieta e alergias em slots separados
Além da memória textual, o módulo também constrói um perfil de usuário. Se uma pessoa escreve fragmentos, o sistema pode colar partes como "eu" + "30" + "anos" em um fato significativo e salvá-lo com confiança reduzida. Se mais tarde surge um conflito, por exemplo a idade diminui repentinamente, a atualização é bloqueada até uma correção explícita como "cometi um erro". Por causa disso, a memória se comporta não como um registro passivo, mas como uma camada de validação que tenta distinguir dados reais do usuário de ruído aleatório.
Resultados dos Testes
A parte mais interessante do artigo não é a arquitetura em si, mas a verificação em cenários práticos. Em um experimento com um assistente médico, assistente pessoal e suporte técnico, o modo com memória elevou a precisão factual de 1,22 para 2,44 pontos em 3. Em um teste A/B mais realista, a memória venceu 17 de 18 avaliações, e a avaliação média da resposta foi 0,889 versus 0,056 sem memória. Separadamente, o autor executou 54 verificações em casos extremos e obteve 51 resultados bem-sucedidos, ou seja, cerca de 94%.
"Uma resposta para lixo também é lixo".
Esta fórmula explica bem outra camada importante do sistema: um filtro de qualidade. Mensagens curtas sem sentido, números simples, caracteres especiais e até respostas do assistente para esse lixo não entram na memória. Caso contrário, fatos úteis logo se afundariam no ruído. Tal filtro é especialmente importante para chatbots e sistemas de agentes, onde o usuário frequentemente escreve em fragmentos, e o próprio modelo tende a gerar frases educadas mas vazias que apenas poluem a saída na próxima busca na memória.
Principais Limitações
Apesar dos bons resultados, NGT Memory ainda não pode ser chamado de memória de produção universal pronta sem ressalvas. A versão atual armazena tudo na RAM de um único processo, portanto, após uma reinicialização do contêiner, o estado é perdido. Ao executar vários workers, outro problema surge: cada um mantém seu próprio armazenamento de sessão, e uma solicitação de salvamento pode ir para um processo enquanto uma solicitação de recuperação vai para outro.
Nos testes, a memória local funciona rapidamente — cerca de 2–3 ms em CPU, mas o atraso principal ainda vem de chamadas externas de embedding e chat, que levam centenas de milissegundos. O autor também descreve separadamente bugs mais mundanos. Um system prompt muito suave levou o modelo a ver a memória mas ignorá-la como um conselho opcional.
Após enrijecer a instrução, as respostas ficaram mais estáveis. Outro caso desagradável veio de uma regex para extrair um nome: um modelo como I'm + name começou a aceitar palavras como allergic como nome. Tais detalhes mostram bem que a memória para LLM se depara não apenas com retrieval, mas também com uma série de pequenas regras, sem as quais o demo rapidamente se desmorona no diálogo real.
O Que Isso Significa
NGT Memory mostra uma mudança útil na abordagem para aplicações de LLM: memória precisa não apenas ser "inteligente", precisa ser verificável, barata e resistente a lixo. Para desenvolvedores de bots e agentes de IA, este é um bom sinal de que uma camada de contexto de longo prazo já pode ser montada como um módulo de engenharia separado, em vez de um conjunto de workarounds desconectados.
Quer parar de ler sobre IA e começar a usar?
AI News é um feed curado de notícias de IA. A Hamidun Academy ensina você a usar IA no trabalho.