Long-Term Memory (Mémoire à Long Terme)
La long-term memory (LTM) d’un agent IA est un système de stockage persistant qui conserve des informations (faits, préférences, expériences, connaissances) au-delà de la session en cours, permettant à l’agent de se souvenir, d’apprendre et de s’adapter sur le long terme.
Sans mémoire à long terme, chaque conversation avec un LLM est une première rencontre. L’agent oublie vos préférences, ignore les résultats de ses actions passées, et répète les mêmes erreurs. La LTM résout ce problème fondamental en créant une couche de persistance entre les sessions : l’agent accumule de la connaissance au fil du temps, comme un collaborateur humain qui apprend à vous connaître.
C’est un composant essentiel du memory-augmented agent. Tandis que la mémoire à court terme gère le contexte de la conversation en cours (l’historique des messages), la LTM persiste entre les conversations et potentiellement sur des mois d’interactions.
- Catégorie
- Composant de memory-augmented agent
- Définition
- Mémoire qui persiste entre les sessions de conversation, stockant des connaissances accumulées
- Types fonctionnels
- Épisodique (expériences vécues), sémantique (faits), procédurale (savoir-faire)
- Substrats
- Base vectorielle, graphe de connaissances, fichiers texte, base relationnelle, JSON
- Produits
- Claude Memory, ChatGPT Memory, Gemini Memory
- Frameworks
- Mem0, Zep, Letta (ex-MemGPT), LangGraph Memory Store, A-MEM, Cognee
Pourquoi la mémoire à long terme est indispensable
Même les fenêtres de contexte les plus larges (1M tokens sur Claude Opus 4.6 et Gemini 3.1 Pro) ne remplacent pas la LTM, pour deux raisons.
Le contexte n’est pas persistant. La fenêtre de contexte est réinitialisée à chaque nouvelle conversation. Un utilisateur qui a eu 50 conversations avec un assistant perd tout ce contexte à chaque session s’il n’y a pas de LTM.
Le contexte a un coût. Injecter 500 000 tokens d’historique dans chaque requête est techniquement possible mais coûteux et lent. La LTM permet de stocker des millions de tokens d’expérience et de ne récupérer sélectivement que les quelques centaines de tokens pertinents pour la requête en cours.
Mem0 résume bien la distinction : « les fenêtres de contexte aident les agents à rester cohérents dans une session. La mémoire permet aux agents d’être intelligents entre les sessions. »
Types fonctionnels de mémoire à long terme
La LTM regroupe trois types fonctionnels distincts, inspirés des neurosciences cognitives (modèle d’Atkinson-Shiffrin et mémoire déclarative de Tulving) :
Mémoire épisodique
La mémoire épisodique stocke des événements spécifiques : des conversations passées, des séquences d’actions, des résultats de tâches. Elle conserve le quand et le comment : « le 15 mars, l’utilisateur a demandé une analyse du rapport Q1 et le résultat était… »
C’est la mémoire utilisée par le framework Reflexion pour stocker les réflexions sur les tentatives passées. Un agent de support client l’utilise pour se souvenir de l’historique des interactions avec chaque client.
Mémoire sémantique
La mémoire sémantique stocke des connaissances factuelles indépendantes du contexte temporel : « l’utilisateur préfère Python », « le projet utilise React 19 », « le client Acme est dans le secteur fintech ». C’est la forme la plus courante dans les produits grand public (Claude Memory, ChatGPT Memory).
Mémoire procédurale
La mémoire procédurale stocke des savoir-faire : des patterns de résolution, des workflows appris, des « skills » réutilisables. Les fichiers CLAUDE.md dans Claude Code sont une forme de mémoire procédurale : ils décrivent comment travailler sur un projet spécifique (conventions, architecture, outils).
Architectures d’implémentation
Stockage vectoriel
Chaque mémoire est encodée en embedding vectoriel et stockée dans une base vectorielle (Pinecone, Weaviate, Chroma, Qdrant, MongoDB Atlas Vector Search). La récupération se fait par similarité cosinus : quand l’agent a besoin de contexte, il formule une requête et les mémoires les plus proches sémantiquement sont retournées.
Avantages : recherche sémantique puissante (« trouve les mémoires liées au projet de migration »), scale bien à des milliers de mémoires, rapide en lecture.
Inconvénients : pas de relations structurées entre mémoires, difficulté à gérer les mises à jour (modifier un embedding existant est non trivial), pas de raisonnement temporel natif.
Graphe de connaissances
Les mémoires sont des nœuds dans un graphe, reliés par des arêtes typées. Mem0 (version graphe) extrait automatiquement les entités et relations des conversations pour construire un graphe de connaissances qui évolue avec chaque interaction.
Avantages : capture les relations entre entités (« l’utilisateur travaille chez Acme, qui est un client de notre produit »), supporte le raisonnement multi-hop, détection naturelle des contradictions.
Inconvénients : plus complexe à implémenter, extraction d’entités imparfaite, maintenance du schéma.
Fichiers texte
L’approche la plus simple : stocker les mémoires dans des fichiers Markdown ou JSON. Claude Code utilise CLAUDE.md ; LangChain Deep Agents écrit dans un filesystem virtuel.
Avantages : zéro infrastructure, inspectable par l’humain, versionnable avec Git.
Inconvénients : pas de recherche sémantique (seulement grep/find), ne scale pas au-delà de quelques dizaines de mémoires.
Hiérarchie de mémoire (Letta/MemGPT)
Letta (anciennement MemGPT) s’inspire des systèmes d’exploitation : la mémoire à long terme est une « archive » (le disque), la mémoire à court terme est le « contexte actif » (la RAM). L’agent déplace des informations entre les deux niveaux via des fonctions de lecture/écriture/archivage, exactement comme un OS pagine la mémoire.
Avantages : gère des mémoires illimitées malgré une fenêtre de contexte fixe, l’agent contrôle ce qui est en mémoire active.
Inconvénients : overhead de gestion (les opérations de swap consomment des tokens), complexité d’implémentation.
Frameworks de LTM en pratique
| Framework | Architecture | Forces | Cas d’usage |
|---|---|---|---|
| Mem0 | Vectoriel + graphe (hybride) | Extraction intelligente de faits, filtrage par priorité, version control des mémoires | Assistants personnels, chatbots adaptatifs |
| Zep | Graphe temporel | Extraction d’entités et de faits structurés, recherche temporelle, résumé de conversations | Support client, agents conversationnels |
| Letta | Hiérarchique (OS-like) | Mémoire illimitée via pagination, agent-controlled memory management | Agents long-horizon, compagnons IA |
| LangGraph Memory Store | JSON cross-thread | Intégré au runtime LangGraph, persistance MongoDB, Vector Search | Agents de production multi-sessions |
| A-MEM | Notes Zettelkasten avec liens dynamiques | Mémoire auto-organisée, évolution des liens, performance sur multi-hop | Agents de recherche, tâches de raisonnement complexe |
| Cognee | Graphe de mémoire structuré | Intelligence client persistante, patterns comportementaux | CRM intelligent, personnalisation |
Opérations sur la mémoire
Trois opérations fondamentales structurent la gestion de la LTM :
Écriture (Store) : l’agent décide qu’une information mérite d’être mémorisée. Le challenge est le filtrage : tout stocker crée du bruit, ne rien stocker perd de l’information. Les systèmes intelligents (Mem0) utilisent un scoring de priorité et un tagging contextuel pour décider quoi retenir, comme les humains filtrent inconsciemment le bruit.
Gestion (Manage) : consolider les mémoires similaires, résoudre les contradictions (« l’utilisateur habitait à Paris, maintenant à Lyon »), résumer les mémoires verboses, et supprimer les mémoires obsolètes. Les approches incluent la décroissance temporelle, les scores de saillance, et les courbes d’oubli d’Ebbinghaus.
Lecture (Retrieve) : récupérer les mémoires pertinentes pour la requête en cours. La recherche hybride (similarité vectorielle + filtrage par métadonnées) offre le meilleur compromis entre précision sémantique et efficacité.
store_memory, retrieve_memory, update_memory, summarize_memory, discard_memory comme il appellerait une recherche web ou un calcul. Cette approche, entraînée par reinforcement learning, surpasse les heuristiques fixes sur les benchmarks long-horizon.
La LTM dans les produits grand public
Claude Memory (Anthropic) : stocke des faits et préférences entre conversations. Les mémoires sont consultables et modifiables dans les paramètres. La fonctionnalité extrait automatiquement des informations pertinentes des conversations.
ChatGPT Memory (OpenAI) : fonctionne de manière similaire. L’utilisateur peut explicitement demander au modèle de mémoriser quelque chose (« souviens-toi que je préfère les réponses courtes ») ou la mémoire est alimentée automatiquement.
Gemini Memory (Google) : intégrée au compte Google, avec des capacités de mémorisation persistante entre sessions.
Ces implémentations sont des formes simples de mémoire sémantique : elles stockent des faits déclaratifs. Pour des agents de production avec mémoire épisodique, procédurale et recherche avancée, des frameworks dédiés (Mem0, Zep, Letta) sont nécessaires.
Défis et problèmes ouverts
Oubli sélectif : les benchmarks (MemoryAgentBench) montrent que l’oubli sélectif est la capacité la plus difficile. Les agents retiennent trop (mémoire saturée) ou oublient mal (perdent des informations pertinentes). Aucun système actuel ne maîtrise l’oubli intelligent comparable à l’oubli humain.
Mémoires contradictoires : quand les faits changent (déménagement, changement d’emploi, évolution de préférences), les anciennes mémoires deviennent incorrectes. La résolution de contradictions nécessite un raisonnement temporel et une mise à jour explicite que les systèmes actuels gèrent imparfaitement.
Décroissance et stabilité : une recherche récente (mars 2026) propose de traiter la LTM comme un problème de contrôle en boucle fermée, minimisant simultanément la divergence sémantique (perte de sens lors de la compression), les hallucinations, la perte de continuité, le coût de calcul et la latence.
Vie privée et sécurité : la LTM stocke des données personnelles soumises au RGPD. Les utilisateurs doivent pouvoir consulter, modifier et supprimer leurs mémoires. De plus, la mémoire persistante peut être empoisonnée par une prompt injection qui injecte de fausses mémoires réutilisées dans les sessions futures.
Coût de la mémoire : les systèmes comme Mem0 rapportent une réduction de 91% de la latence p95 et de plus de 90% des coûts en tokens par rapport aux approches full-context (tout mettre dans le prompt). Mais l’infrastructure de mémoire elle-même (base vectorielle, extraction d’entités, gestion de graphe) a un coût non négligeable.
Bonnes pratiques
Commencez simple. Des fichiers texte (CLAUDE.md, notes.md) suffisent pour un agent solo avec peu de mémoires. Passez à une base vectorielle quand vous dépassez quelques dizaines de mémoires ou quand vous avez besoin de recherche sémantique.
Séparez les types de mémoire. Ne mélangez pas les faits utilisateur (sémantique), les historiques de tâches (épisodique) et les conventions de travail (procédurale) dans le même stockage. Des stores séparés avec des stratégies de récupération différentes sont plus efficaces.
Limitez ce qui est récupéré. Ne chargez pas 50 mémoires dans le contexte de chaque requête. Récupérez 3 à 5 mémoires les plus pertinentes. Trop de mémoires diluent l’attention du LLM et augmentent le coût.
Donnez le contrôle à l’utilisateur. L’utilisateur doit pouvoir voir, modifier et supprimer ses mémoires. C’est une exigence RGPD mais aussi une bonne pratique UX : la confiance vient de la transparence.
Testez la qualité de la mémoire. Mesurez régulièrement : les mémoires récupérées sont-elles pertinentes ? Les mémoires obsolètes sont-elles purgées ? Les contradictions sont-elles détectées ? Les benchmarks comme MemBench et MemoryArena fournissent des cadres d’évaluation standardisés.
Questions fréquentes
Quelle est la différence entre la mémoire à long terme et la fenêtre de contexte ?
La fenêtre de contexte (1M tokens sur Claude Opus 4.6) est la mémoire à court terme : elle contient la conversation en cours et est réinitialisée à chaque nouvelle session. La mémoire à long terme persiste entre les sessions : elle stocke des informations accumulées sur des jours, des semaines ou des mois. La fenêtre de contexte est limitée en taille et coûteuse à remplir ; la LTM peut contenir des millions de mémoires et ne récupère que les plus pertinentes pour chaque requête.
Quel framework de mémoire à long terme choisir ?
Pour un assistant personnel ou un chatbot adaptatif, Mem0 est le choix le plus simple et le plus mature. Pour un agent conversationnel avec extraction structurée d’entités et de faits, Zep excelle. Pour un agent long-horizon qui doit gérer une mémoire illimitée, Letta (ex-MemGPT) avec sa pagination OS-like est le meilleur choix. Pour un agent de production dans l’écosystème LangChain, le LangGraph Memory Store avec MongoDB offre une intégration native.
La mémoire à long terme de Claude ou ChatGPT est-elle suffisante ?
Pour un usage personnel (préférences, projets récurrents), oui. Les memory features grand public stockent des faits sémantiques simples et fonctionnent bien pour la personnalisation de base. Pour un agent de production qui gère des workflows complexes, des historiques client détaillés ou des tâches multi-sessions, non. Vous aurez besoin d’un framework dédié avec mémoire épisodique, recherche sémantique avancée et gestion de contradictions.
Comment la mémoire à long terme gère-t-elle les informations qui changent ?
C’est l’un des défis les plus difficiles. Les systèmes actuels utilisent des scores de confiance/persistance (Zep, Mem0), des timestamps et des heuristiques de détection de contradictions. Quand une nouvelle information contredit une mémoire existante, le système peut soit mettre à jour la mémoire, soit la marquer comme obsolète, soit demander une confirmation à l’utilisateur. Aucune approche n’est parfaite : la résolution automatique de contradictions reste un problème de recherche ouvert.
La mémoire à long terme augmente-t-elle le coût des requêtes ?
Le coût de récupération est faible (un appel à une base vectorielle). Le coût principal vient des tokens supplémentaires injectés dans le contexte (les mémoires récupérées). Typiquement 200 à 1 000 tokens par requête, ce qui est modeste. En contrepartie, la LTM réduit souvent le nombre total de tours de conversation (l’agent n’a pas besoin de redemander des informations qu’il a mémorisées), ce qui peut compenser le surcoût. Mem0 rapporte une réduction de plus de 90% du coût en tokens par rapport à l’approche « tout dans le contexte ».