Résumé de l'article
Ce Lab montre comment une application peut conserver des faits sélectionnés entre plusieurs sessions à l’aide de Python et SQLite, puis les injecter dans le contexte d’un modèle local servi par Ollama.
Le démonstrateur est pédagogique : l’extraction de mémoire repose sur quelques formulations explicites et ne constitue pas un benchmark. L’article propose un protocole de test, deux animations et des sources de recherche sur la mémoire des agents.
Ce résumé (uniquement ce résumé, pas l'article) est généré par Claude Sonnet 5, relu et validé par Attuoman Prince Josias, auteur de l'article.
Tu peux discuter avec une IA pendant une heure, fermer la fenêtre, revenir le lendemain… et devoir lui réexpliquer tes préférences. Le modèle n’a pas forcément « oublié » comme un humain : bien souvent, la nouvelle conversation ne contient tout simplement plus les informations précédentes. Alors, peut-on construire une mémoire persistante pour une IA qui tourne sur son propre ordinateur ?
Dans ce Lab, on va construire un prototype avec Python, Ollama et SQLite, puis réfléchir à la façon de vérifier s’il se souvient vraiment de ce qui est utile. Nous comparerons trois approches : aucune mémoire persistante, un résumé des échanges et une mémoire structurée. L’objectif n’est pas de proclamer un vainqueur avant le test, mais de fournir une expérience reproductible.
Animation 1, Comment une mémoire fonctionne
1. Une mémoire n’est pas une IA qui devient magique
Un modèle de langage produit une réponse à partir de ses paramètres et des informations qui lui sont fournies au moment de la requête. Dans une application de chat, l’historique peut être renvoyé au modèle, mais une application peut aussi le résumer, le tronquer ou ne pas le transmettre. La « mémoire à long terme » d’un assistant est donc souvent un système externe : il choisit des informations, les conserve, puis les retrouve quand elles deviennent pertinentes.
Ce principe est au cœur de travaux comme MemGPT, qui étudie la gestion de plusieurs niveaux de contexte, et de recherches plus récentes sur l’évaluation des agents à mémoire. Ces travaux ne disent pas qu’une simple base de données suffit : ils montrent que l’écriture, l’organisation, la récupération et l’oubli des informations sont des problèmes distincts.
2. Trois stratégies à comparer
- Sans mémoire persistante. Chaque nouveau dialogue commence avec le contexte que l’application lui transmet. Les informations des sessions précédentes peuvent manquer.
- Historique ou résumé. L’application conserve les échanges, ou un condensé. Cela peut préserver le fil général, mais un résumé peut omettre une préférence précise ou garder une information devenue obsolète.
- Mémoire structurée. L’application stocke des faits sélectionnés sous des clés, par exemple « style de réponse » ou « projet en cours ». Elle peut mettre à jour ou supprimer chaque entrée et injecter seulement les faits utiles dans le contexte.
La troisième approche est plus contrôlable dans notre démonstrateur, mais elle n’est pas automatiquement meilleure : une règle d’extraction trop simple peut mal comprendre une phrase, enregistrer une préférence temporaire ou rater une information importante. C’est précisément ce qu’il faut tester.
3. Construire une mémoire locale avec Python et Ollama
Le code fourni utilise SQLite, inclus dans Python, pour enregistrer des souvenirs sur l’ordinateur. Ollama exécute le modèle local et expose une API locale de discussion. Le prototype ne nécessite donc pas de clé API payante ni de service cloud, à condition de choisir un modèle téléchargé et exécuté localement.
Étape 1, Installer les prérequis
ollama pull qwen3:4b
python --versionInstalle Ollama depuis le site officiel. Le modèle proposé est un exemple : adapte-le à la mémoire vive et aux capacités de ton ordinateur. Il faut Python 3.10 ou plus récent.
Étape 2, Lancer l’application
Télécharge et décompresse l’archive du Lab, puis exécute :
python memory_lab.pyPar défaut, le programme utilise le modèle qwen3:4b et l’API locale http://localhost:11434/api/chat. Si ton modèle a un autre nom, définis OLLAMA_MODEL avant de lancer le script.
Étape 3, Faire un test simple
Je préfère les explications étape par étape.
/memoires
Comment apprendre un nouveau sujet ?Le prototype tente de repérer certaines formulations explicites et stocke le souvenir dans SQLite. La prochaine demande inclut la mémoire sauvegardée dans les instructions envoyées au modèle. Utilise /memoires pour inspecter les souvenirs, puis /oublier preference pour supprimer la préférence enregistrée.
4. Comment tester si la mémoire aide réellement
Pour éviter de choisir les exemples qui arrangent le résultat, prépare les questions avant de lancer les essais. Utilise les mêmes demandes pour chaque stratégie et répète-les plusieurs fois avec le même modèle.
- Prépare un jeu de faits fictifs. Par exemple : le lecteur préfère les réponses concises, apprend Python et travaille sur un projet de site web. N’utilise pas d’informations personnelles réelles.
- Prépare des questions de rappel. « Quel style de réponse est préféré ? », « Quel langage apprend la personne ? », puis des questions qui ne peuvent pas être déduites des faits fournis.
- Compare les trois conditions. Sans mémoire, avec un résumé, puis avec la mémoire structurée. Garde le même modèle, la même température et les mêmes questions.
- Note les erreurs. Une réponse exacte, une omission, une contradiction ou une invention doivent être comptées séparément.
- Mesure le contexte. Compare la quantité de texte ajoutée à la requête, le temps de réponse et la facilité de corriger ou d’effacer un souvenir.
Ne publie pas de pourcentage après un seul essai. Avec un petit jeu de questions, indique le nombre exact d’essais et les limites de l’expérience. Le script fourni démontre l’écriture et la récupération de souvenirs ; il ne réalise pas à lui seul une comparaison expérimentale complète entre les trois stratégies.
5. Ce que la mémoire ne résout pas
Une mémoire persistante peut aider à personnaliser une réponse, mais elle ne garantit ni la vérité, ni le raisonnement, ni la cohérence. Si le système stocke une erreur, il peut la répéter. Si deux faits se contredisent, il doit pouvoir les mettre à jour ou demander une clarification. Et si la récupération choisit le mauvais souvenir, une bonne information peut rester invisible au moment où elle est nécessaire.
Il faut aussi traiter la mémoire comme une fonctionnalité qui appartient à l’utilisateur : afficher ce qui est conservé, expliquer pourquoi, permettre de corriger une entrée et proposer un oubli réel. Une mémoire pratique ne devrait pas devenir un dossier opaque et impossible à contrôler.
Conclusion : le vrai défi n’est pas de tout retenir
Le défi est de retenir les bonnes informations, de les retrouver au bon moment, de mettre à jour celles qui changent et d’effacer celles qui ne doivent plus être conservées. Une base SQLite suffit pour comprendre le mécanisme ; une mémoire robuste demande ensuite de meilleurs critères d’extraction, de récupération et d’évaluation.
Sources et documentation
- MemGPT: Towards LLMs as Operating Systems article de recherche sur la gestion du contexte et de la mémoire.
- MemBench travaux sur l’évaluation des capacités de mémoire des agents.
- Documentation officielle Ollama, API de chat.
- Documentation Python, sqlite3.
Une newsletter tous les deux jours.
Actus IA, guides et outils testés, gratuitement. Zéro spam, désabonnement en un clic.
- mémoire IA
- IA locale
- Ollama
- Python
- SQLite
- agents IA
- Manim
Cet article vous a été utile ?
Note moyenne 5,0/5 (1 vote)


