Módulo NGT Memory mostra como dar memória persistente a um LLM sem banco de dados vetorial

O NGT Memory é um módulo de memória open source para LLMs que guarda fatos sobre o usuário entre sessões e os incorpora às respostas do modelo. Por dentro, combina busca por cosseno, um grafo associativo, um perfil estruturado e um filtro de ruído. Nos testes, o sistema dobrou a precisão factual e venceu 17 de 18 cenários A/B, embora por enquanto viva na memória de um único processo.

Processado por IA de Habr AI; editado por Hamidun News
Módulo NGT Memory mostra como dar memória persistente a um LLM sem banco de dados vetorial
Fonte: Habr AI. Colagem: Hamidun News.
Ouvir artigo
Ficha técnica e números-chave
ParâmetroDados
Fonte originalHabr AI ↗
Editor-chefe
Dado-chave #1A similaridade de cosseno busca fatos próximos em significado
Dado-chave #2Um grafo associativo conecta conceitos como "vegetariano" e "restaurantes"
Dado-chave #3A consolidação hierárquica promove fatos muito usados para a memória de longo prazo

O projeto open source NGT Memory oferece uma resposta mais prática para um velho problema dos LLMs: como não esquecer fatos importantes sobre o usuário entre sessões. Em vez de ampliar o contexto indefinidamente, o módulo salva fatos, monta um perfil e incorpora a memória à resposta do modelo.

Como a memória funciona

O autor parte de uma ideia simples: manter todo o histórico da conversa na janela de contexto só é conveniente até o primeiro limite de tokens. Depois vêm o corte de mensagens antigas, a sumarização que perde detalhes ou a conexão de um banco vetorial externo com infraestrutura desnecessária. O NGT Memory propõe outro caminho: a memória vive diretamente no processo Python, sobe via REST API e Docker e não exige um banco de dados separado no início. A ideia é recuperar não a conversa inteira, mas apenas os fatos de que o modelo realmente precisa na consulta atual.

  • A similaridade de cosseno busca fatos próximos em significado
  • Um grafo associativo conecta conceitos como "vegetariano" e "restaurantes"
  • A consolidação hierárquica promove fatos muito usados para a memória de longo prazo
  • Um perfil estruturado separa idade, cidade, dieta e alergia em campos próprios

Além da memória textual, o módulo também monta um perfil do usuário. Se a pessoa escreve de forma fragmentada, o sistema pode juntar pedaços como "eu" + "30" + "anos" em um fato com sentido e salvá-lo com confiança reduzida. Se mais tarde surgir um conflito, por exemplo a idade diminuir de repente, a atualização fica bloqueada até uma correção explícita, como "eu errei". Assim, a memória se comporta não como um log passivo, mas como uma camada de validação que tenta distinguir dados reais do usuário de ruído aleatório.

Resultados dos testes

O 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, um assistente pessoal e um suporte técnico, o modo com memória elevou a precisão factual de 1.22 para 2.44 pontos de 3. Em um teste A/B mais realista, a memória venceu 17 de 18 avaliações, e a nota média da resposta foi 0.889 contra 0.056 sem memória. Separadamente, o autor rodou 54 verificações de casos extremos e obteve 51 resultados bem-sucedidos, cerca de 94%.

"A resposta ao lixo também é lixo."

Essa fórmula explica outra camada importante do sistema: o filtro de qualidade. Mensagens curtas sem sentido, números puros, caracteres especiais e até respostas do assistente a esse lixo não entram na memória. Caso contrário, fatos úteis logo se afogariam no ruído. Esse filtro é especialmente importante para chatbots e sistemas de agentes, em que o usuário costuma escrever em fragmentos e o próprio modelo tende a gerar frases educadas, porém vazias, que só poluem o resultado da próxima busca na memória.

Principais limitações

Apesar dos bons resultados, o NGT Memory ainda não pode ser considerado uma memória universal pronta para produção sem ressalvas. A versão atual guarda tudo na RAM de um único processo, então o estado se perde quando o contêiner reinicia. Ao rodar vários workers, surge outro problema: cada um mantém seu próprio armazenamento de sessões, e uma requisição de salvamento pode cair em um processo e a de recuperação em outro. Nos testes, a memória local é rápida, cerca de 2–3 ms na CPU, mas a maior parte da latência ainda vem das chamadas externas de embeddings e de chat, que levam centenas de milissegundos.

O autor também descreve bugs mais prosaicos. Um system prompt mole demais fazia o modelo enxergar a memória, mas ignorá-la como uma dica opcional. Depois que a instrução foi endurecida, as respostas ficaram mais estáveis. Outro caso desagradável veio de uma regex para extrair nomes: um padrão como I'm + name passou a tomar palavras como allergic por nome. Esses detalhes mostram que a memória para LLMs depende não só de retrieval, mas de uma enorme quantidade de pequenas regras, sem as quais uma demo logo desmorona em uma conversa real.

O que isso significa

O NGT Memory mostra uma mudança útil na abordagem de aplicações com LLMs: não basta a memória ser "inteligente"; ela precisa ser verificável, barata e resistente a lixo. Para quem desenvolve bots e agentes de IA, é um bom sinal de que a camada de contexto de longo prazo já pode ser construída como um módulo de engenharia separado, e não como um conjunto de gambiarras avulsas.

História

Perguntas frequentes sobre a notícia

Como a memória funciona?

O autor parte de uma ideia simples: manter todo o histórico da conversa na janela de contexto só é conveniente até o primeiro limite de tokens. Depois vêm o corte de mensagens antigas, a sumarização que perde detalhes ou a conexão de um banco vetorial externo com infraestrutura desnecessária. O NGT Memory propõe outro caminho: a memória vive diretamente no processo Python, sobe via REST API e Docker e não exige um banco de dados separado no início. A ideia é recuperar não a conversa inteira, mas apenas os fatos de que o modelo realmente precisa na consulta atual. A similari

O que se sabe sobre Resultados dos testes?

O 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, um assistente pessoal e um suporte técnico, o modo com memória elevou a precisão factual de 1.22 para 2.44 pontos de 3. Em um teste A/B mais realista, a memória venceu 17 de 18 avaliações, e a nota média da resposta foi 0.889 contra 0.056 sem memória. Separadamente, o autor rodou 54 verificações de casos extremos e obteve 51 resultados bem-sucedidos, cerca de 94%. "A resposta ao lixo também é lixo." Essa fórmula explica outra camada im

O que se sabe sobre Principais limitações?

Apesar dos bons resultados, o NGT Memory ainda não pode ser considerado uma memória universal pronta para produção sem ressalvas. A versão atual guarda tudo na RAM de um único processo, então o estado se perde quando o contêiner reinicia. Ao rodar vários workers, surge outro problema: cada um mantém seu próprio armazenamento de sessões, e uma requisição de salvamento pode cair em um processo e a de recuperação em outro. Nos testes, a memória local é rápida, cerca de 2–3 ms na CPU, mas a maior parte da latência ainda vem das chamadas externas de embeddings e de chat, que lev

ZK
Zhemal Khamidun — CPO da Alpina Digital, gerente de produto do AlpinaGPT. Cria produtos de IA desde 2019. O Hamidun News é um projeto pessoal que virou um agregador em produção com mais de 6.000 leitores.
✦ Unified AI Workspace · Nomad

Test Frontier LLMs & Autonomous Agents in One Workspace

Run Claude Opus 5.5, GPT-6, Gemini 3.1, and DeepSeek side-by-side in Nomad AI (nomadnet.ai) — unified model routing, deep research, and multimodal workflows under one subscription.

Try Nomad AI →Launch Nomad Agent
O que você acha?
Carregando comentários…