Le module NGT Memory montre comment donner une mémoire persistante aux LLM sans base de données vectorielle
NGT Memory est un module de mémoire open-source pour LLM qui stocke les faits sur l'utilisateur entre les sessions et les injecte dans les réponses du…
Traité par IA depuis Habr AI ; édité par Hamidun News
Le projet open-source NGT Memory offre une réponse plus pratique à un vieux problème d'LLM : comment ne pas oublier des faits importants sur un utilisateur entre les sessions. Au lieu d'étendre indéfiniment le contexte, le module stocke les faits, construit un profil et injecte la mémoire dans la réponse du modèle.
Comment Fonctionne la Mémoire
L'auteur du projet part d'une idée simple : stocker tout l'historique de conversation dans la fenêtre de contexte n'est pratique que jusqu'au premier limite de tokens. Ensuite viennent la troncature des anciens messages, la sumarisation avec perte de détails, ou la connexion à une base de données vectorielle externe avec surcharge d'infrastructure supplémentaire. NGT Memory propose un autre chemin : la mémoire vit directement dans un processus Python, est activée via API REST et Docker, et ne nécessite pas de base de données séparée au lancement. L'idée est d'extraire non pas toute la conversation, mais seulement les faits que le modèle a vraiment besoin dans la demande actuelle.
- La similarité cosinus trouve les faits sémantiquement proches
- Le graphe associatif lie les concepts comme "végétarien" et "restaurants"
- La consolidation hiérarchique promeut les faits fréquemment utilisés à la mémoire à long terme
- Le profil structuré place l'âge, la ville, le régime et les allergies dans des emplacements séparés
En plus de la mémoire textuelle, le module construit également un profil utilisateur. Si une personne écrit des fragments, le système peut coller ensemble des éléments comme "j'ai" + "30" + "ans" en un fait significatif et le sauvegarder avec une confiance réduite. Si plus tard un conflit survient, par exemple l'âge diminue soudainement, la mise à jour est bloquée jusqu'à une correction explicite comme "je me suis trompé". De ce fait, la mémoire se comporte non pas comme un journal passif, mais comme une couche de validation qui tente de distinguer les vraies données utilisateur du bruit aléatoire.
Résultats des Tests
La partie la plus intéressante de l'article n'est pas l'architecture elle-même, mais la vérification sur des scénarios pratiques. Dans une expérience avec un assistant médical, un assistant personnel et le support technique, le mode avec mémoire a élevé la précision factuelle de 1,22 à 2,44 points sur 3. Dans un test A/B plus réaliste, la mémoire a remporté 17 évaluations sur 18, et l'évaluation moyenne de la réponse était 0,889 contre 0,056 sans mémoire. Séparément, l'auteur a lancé 54 vérifications sur les cas limites et a obtenu 51 résultats réussis, soit environ 94%.
"Une réponse aux ordures est aussi des ordures".
Cette formule explique bien une autre couche importante du système : un filtre de qualité. Les messages courts sans sens, les nombres simples, les caractères spéciaux et même les réponses de l'assistant à ces ordures n'entrent pas dans la mémoire. Sinon, les faits utiles s'enfonceraient rapidement dans le bruit. Un tel filtre est particulièrement important pour les chatbots et les systèmes d'agents, où l'utilisateur écrit souvent par fragments, et le modèle lui-même a tendance à générer des phrases polies mais vides qui ne font que polluer la sortie lors de la prochaine recherche en mémoire.
Limitations Principales
Malgré les bons résultats, NGT Memory ne peut pas encore être appelée une mémoire de production universelle prête sans réserves. La version actuelle stocke tout dans la RAM d'un seul processus, donc après un redémarrage du conteneur, l'état est perdu. Lorsque plusieurs workers s'exécutent, un autre problème se pose : chacun maintient son propre stockage de session, et une requête de sauvegarde peut aller à un processus tandis qu'une requête de récupération va à un autre.
Lors des tests, la mémoire locale fonctionne rapidement — environ 2–3 ms sur CPU, mais le délai principal provient toujours des appels externes d'embedding et de chat, qui prennent des centaines de millisecondes. L'auteur décrit également séparément des bugs plus triviaux. Un system prompt trop doux a amené le modèle à voir la mémoire mais à l'ignorer comme un conseil optionnel.
Après renforcement de l'instruction, les réponses sont devenues plus stables. Un autre cas désagréable provenait d'une regex pour extraire un nom : un modèle comme I'm + name a commencé à accepter des mots comme allergic comme nom. De tels détails montrent bien que la mémoire pour LLM se heurte non seulement à la récupération, mais aussi à une multitude de petites règles, sans lesquelles la démo s'effondre rapidement dans le dialogue réel.
Ce Que Cela Signifie
NGT Memory montre un changement utile dans l'approche des applications d'LLM : la mémoire doit non seulement être "intelligente", elle doit être vérifiable, bon marché et résistante aux ordures. Pour les développeurs de bots et d'agents IA, c'est un bon signal que la couche de contexte à long terme peut déjà être assemblée en tant que module d'ingénierie séparé, plutôt que comme un ensemble de contournements déconnectés.
Vous voulez cesser de lire sur l'IA et commencer à l'utiliser?
AI News est un fil d'actualité IA. Hamidun Academy vous apprend à utiliser l'IA dans votre travail.