Mémoire des agents IA : types, frameworks et implémentation persistante

La mémoire des agents IA combine cinq types aux durées et rôles distincts.

  • Court terme : fenêtre de contexte, éphémère par session.
  • Long terme : persistante via base vectorielle.
  • Épisodique : historique des conversations passées.
  • Sémantique : faits stables et préférences utilisateur.
  • Procédurale : savoir-faire d’exécution des outils.

Types de mémoire des agents IA : court terme, long terme, épisodique, sémantique et procédurale

Type Durée de vie Stockage utilisé Rôle dans la conversation
Court terme Session unique Fenêtre de contexte LLM Contexte immédiat
Long terme Persistante Base vectorielle Entre les sessions
Épisodique Cumulative Historique conversations Actions passées
Sémantique Stable Faits, préférences Connaissances générales
Procédurale Durable Savoir-faire Compétences exécution

Mémoire court terme vs long terme

La mémoire à court terme correspond au contexte immédiat : tout ce que le modèle peut traiter dans sa fenêtre de contexte, à chaque requête. Cette mémoire est éphémère dès que la session se termine, l’information disparaît. C’est le modèle sans état par excellence : l’historique est renvoyé à chaque appel pour recréer le contexte.

La mémoire à long terme, elle, persiste entre les sessions grâce à une base vectorielle. Les faits marquants sont extraits, vectorisés sous forme d’embeddings, puis stockés durablement. Contrairement à la fenêtre de contexte, cette mémoire survit aux sessions et peut être interrogée ultérieurement pour retrouver des informations pertinentes.

Mémoire épisodique, sémantique et procédurale

  • Épisodique : historique des conversations passées
  • Sémantique : faits et préférences utilisateur
  • Procédurale : savoir-faire d’exécution

La mémoire épisodique regroupe l’historique complet des interactions : ce que l’utilisateur a demandé, les actions entreprises, les réponses données. Elle permet à l’agent de se souvenir d’un projet entamé il y a plusieurs semaines.

La mémoire sémantique stocke les faits stables : les préférences, le nom de l’utilisateur, ses contraintes techniques. Ces informations structurées nourrissent les réponses de l’agent sur le long terme.

La mémoire procédurale correspond aux compétences d’exécution : comment utiliser un outil, quelle séquence d’actions suivre pour accomplir une tâche. Dans une définition large, la mémoire des agents IA couvre l’auto-évolution du système, qui apprend de ses expériences pour améliorer ses performances. Les Generative agents ont démontré cette approche dès 2023 dans des environnements simulés.

Cadres et frameworks de mémoire pour agents : Mem0, LangChain, LangGraph et Letta

llm agent mémoire
Nom Type d’outil Approche mémoire Cas d’usage typique
Mem0 Brique autonome Extraction + vectorisation + stockage Ajout de mémoire persistante à tout agent existant
LangChain Framework complet Buffer, résumé, retriever vectoriel intégrés Chatbots et pipelines avec historique conversationnel
LangGraph Orchestrateur de graphes État persistant entre les nœuds du graphe Agents multi-étapes avec gestion d’état explicite
Letta Framework agentique Mémoire comme cœur de l’architecture Agents autonomes à mémoire hiérarchique

Mem0 se distingue par sa vocation de brique mémoire autonome, compatible avec n’importe quel framework d’agents. Ses deux opérations fondamentales add pour ranger des faits et search pour retrouver des souvenirs s’intègrent par-dessus votre pile existante. Le filtrage par user_id assure une isolation mémoire stricte entre utilisateurs, chaque profil conservant ses préférences et son historique sans contamination croisée.

LangChain propose une gamme plus large mais moins spécialisée : ConversationBufferMemory pour l’historique brut, SummaryMemory pour les résumés progressifs, et VectorStoreRetrieverMemory pour la recherche sémantique. LangGraph pousse la logique plus loin en traitant la mémoire comme un état persistant qui circule entre les nœuds du graphe chaque étape du raisonnement accède aux informations stockées précédemment.

Letta (anciennement MemGPT) adopte une philosophie radicale : la mémoire n’est pas une option mais le socle même du framework. Son architecture imite la gestion mémoire d’un système d’exploitation, avec des niveaux hiérarchiques qui transfèrent automatiquement les informations entre contexte court terme et stockage long terme.

Face à ces quatre options, le choix se résume à votre besoin : Mem0 pour une intégration rapide, LangChain pour un écosystème riche, LangGraph pour des flux complexes, Letta pour une mémoire profonde dès la conception. Les +700 guides gratuits disponibles en ligne vous aideront à comparer leurs API respectives avant de trancher.

Mémoire à long terme : implémentation et persistance vectorielle

Le principe de la mémoire à long terme repose sur une extraction active : à chaque échange, l’agent identifie les faits marquants, les transforme en embeddings pour capturer leur sens, puis les stocke dans une base vectorielle dédiée. Ce stockage durable survit aux sessions, contrairement à la fenêtre de contexte qui reste éphémère. L’architecture type associe une base vectorielle comme Pinecone, Weaviate, Chroma ou Qdrant pour la recherche sémantique, et une base relationnelle ou documentaire pour les métadonnées structurées.

Architecture type et choix du stockage vectoriel

Le choix du stockage vectoriel dépend de votre échelle et de vos besoins opérationnels. Chroma, légère, est idéale pour le prototypage et la petite échelle. Qdrant, accessible sur le port 6333 par défaut, offre un bon équilibre entre performance et contrôle. Pinecone, service managé, convient aux productions à gros volumes. Weaviate combine recherche vectorielle et filtres structurés, utile pour croiser des critères précis.

L’architecture suit une logique simple : l’agent extrait les faits saillants de la conversation, les vectorise via un modèle d’embedding, puis les insère dans la base. À la requête suivante, la recherche sémantique retrouve les souvenirs pertinents et les injecte dans le contexte du LLM. Ce mécanisme constitue le cœur de la mémoire persistante.

Opérations mémoire fondamentales : add et search

Toute implémentation de mémoire à long terme s’articule autour de deux opérations essentielles, illustrées par la bibliothèque Mem0 :

  • add : ranger un fait extrait de la conversation
  • search : retrouver un souvenir par similarité sémantique
  • Filtrage par user_id : isoler la mémoire de chaque utilisateur

L’opération add transforme le fait en embedding et l’insère dans la base. L’opération search interroge la base pour récupérer les souvenirs les plus proches du besoin courant, puis les intègre au prompt. Le filtrage par `user_id` garantit qu’un utilisateur ne voit jamais les souvenirs d’un autre, une exigence pour toute application multi-utilisateurs. Ces deux opérations, simples en apparence, constituent la fondation sur laquelle reposent tous les systèmes mémoire avancés.

Gérer la fenêtre de contexte : limites et stratégies d’optimisation

Un modèle de langage est fondamentalement sans état : il ne retient rien d’une requête à l’autre. L’historique complet doit être renvoyé à chaque appel, ce qui se heurte à une double limite : la fenêtre de contexte a une taille bornée, et son contenu reste éphémère. Sans stratégie, l’agent perd le fil dès que l’échange s’allonge.

La parade la plus simple reste la fenêtre glissante, qui ne conserve que les N derniers messages. Cette approche garantit que la requête reste dans les limites du modèle, mais elle sacrifie les informations anciennes, parfois cruciales pour la cohérence du dialogue.

L’alternative consiste à optimiser l’espace disponible en déplaçant l’essentiel vers une mémoire externe. En ne renvoyant que le résumé des échanges passés, on libère de la place dans le contexte pour les instructions courantes et la réponse à construire.

Mémoire à court terme : buffer, résumé de conversation et fenêtre glissante

La mémoire à court terme d’un agent LLM gère le contexte immédiat de l’échange. Trois stratégies complémentaires permettent de la structurer, du plus simple au plus sophistiqué : le buffer conversationnel, le résumé progressif et la fenêtre glissante. Chacune répond à un besoin précis selon la longueur et la nature de la conversation.

Buffer conversationnel : fidélité brute du dialogue

Le buffer conversationnel conserve l’historique des messages tels quels, sans aucune transformation. Cette approche offre une fidélité totale : chaque tour de parole est stocké dans sa forme originale, avec son ton, ses nuances et ses reformulations exactes. C’est le choix idéal tant que la conversation tient dans la fenêtre de contexte du modèle un échange de quelques dizaines de messages, par exemple, passe sans difficulté.

Cette méthode de mémoire à court terme brille par sa simplicité d’implémentation : il suffit de concaténer l’historique et de l’envoyer au modèle à chaque requête. Aucun traitement intermédiaire, aucune perte d’information. En contrepartie, elle consomme rapidement l’espace contextuel : un dialogue dense sur un sujet technique peut saturer la fenêtre en quelques centaines de tokens générés, surtout si chaque réponse du modèle est longue.

Résumé progressif et fenêtre glissante quand l’échange s’allonge

Dès que l’échange s’allonge au-delà de la capacité du buffer, deux stratégies complémentaires entrent en jeu :

  • Résumé progressif : ConversationSummaryMemory Synthétise les tours précédents en un condensé structuré, conservant l’essentiel sans la verbosité.
  • Fenêtre glissante : évacuer plus anciens Ne conserve que les N derniers messages, éliminant les plus anciens au fil de la conversation.
  • Seuil : quand l’échange s’allonge Déclenche la bascule dès que le contexte approche 80% de la limite, pour éviter toute troncature brutale.

Le résumé progressif (implémenté notamment via ConversationSummaryMemory dans LangChain) fonctionne par itération : après chaque nouveau message, l’agent met à jour un résumé global en y intégrant les nouveaux éléments. Cette approche préserve la continuité du dialogue tout en maîtrisant l’espace consommé un échange de 50 messages se résume en quelques centaines de tokens bien structurés.

La fenêtre glissante, elle, applique une logique de file d’attente : seuls les N derniers messages (par exemple les 10 ou 20 plus récents) restent dans le contexte actif. Les échanges plus anciens sont évacués, quitte à perdre des détails importants. Une stratégie hybride combine souvent les deux : un résumé global des anciennes interactions + une fenêtre glissante sur les échanges récents. C’est cette architecture que retiennent la plupart des frameworks mémoire comme Mem0 ou LangGraph pour gérer efficacement les conversations longues.

Compaction, oubli sélectif et consolidation de la mémoire agent

Une mémoire qui accumule tout devient vite inefficace. La compaction fusionne les souvenirs redondants pour éviter que les faits périmés ne polluent les réponses et ralentissent les recherches. La consolidation va plus loin : elle généralise les patterns, par exemple en transformant trois mentions d’une même préférence en un fait synthétique unique.

L’oubli sélectif est tout aussi stratégique. Plutôt que d’accumuler indéfiniment, l’agent doit pouvoir écarter les informations obsolètes ou peu pertinentes. Ce mécanisme de nettoyage garantit que la base vectorielle reste ciblée, rapide et utile. Sans cette discipline, la mémoire devient un bruit de fond qui dégrade la qualité des réponses.

Pour les interactions récentes, des mécanismes d’oubli progressif permettent de privilégier les données fraîches tout en conservant les faits structurants à long terme. Cette gestion active de la mémoire maintient des performances optimales, même lorsque l’historique s’allonge sur des centaines de sessions.

Bases vectorielles pour mémoire LLM : Qdrant, Chroma, Pinecone et Weaviate

Base Type de service Usage conseillé Port / Échelle
Qdrant Open source / auto-hébergé Production, filtres avancés Port par défaut 6333
Chroma Légère, embarquable Prototypage, petite échelle Local, fichier sur disque
Pinecone Service managé cloud Production gros volumes Échelle illimitée, sans serveur
Weaviate Open source / hybride Recherche + filtres structurés Scalable horizontalement

Le choix de la base vectorielle conditionne directement la fluidité de la recherche sémantique de souvenirs. Chaque option répond à un besoin précis, du prototype rapide à l’infrastructure critique.

Chroma séduit par sa simplicité : une bibliothèque légère qui s’intègre en quelques lignes, idéale pour valider un concept avant de passer à l’échelle. À l’opposé, Pinecone assume pleinement le statut de service managé : vous déléguez l’infrastructure, la scalabilité et la maintenance, ce qui convient aux charges importantes où la fiabilité prime sur le contrôle.

Qdrant offre un bon équilibre entre contrôle et performance. Son port par défaut 6333 facilite le déploiement en local, tandis que ses capacités de filtrage vectoriel avancé permettent d’interroger la mémoire avec des conditions précises (par exemple, ne chercher que les souvenirs d’un user_id spécifique). Weaviate complète ce panorama en combinant recherche vectorielle et filtres structurés, utile quand les métadonnées (dates, types de mémoire) jouent un rôle central dans la récupération.

Dans tous les cas, le principe reste identique : chaque souvenir est converti en embedding, puis comparé par similarité cosinus lors d’une requête. La base vectorielle ne comprend pas le contenu, mais elle excelle à retrouver les passages dont le sens est proche de votre question c’est exactement ce que demande une mémoire persistante.