Mémoire des agents IA : types et fonctionnement
Comprenez la mémoire d'un agent IA : court terme, long terme, vectorielle et procédurale. Guide technique avec exemples concrets pour développeurs.
Introduction
Un agent IA sans mémoire oublie tout entre chaque session. Il redemande votre nom, refait les mêmes erreurs, perd le fil d'une conversation de 30 messages. La fenêtre de contexte du LLM a une taille finie — 8k à 200k tokens selon le modèle — et une fois saturée, les informations les plus anciennes disparaissent. Pour construire des agents capables d'apprendre, de se souvenir et de s'améliorer au fil du temps, il faut comprendre les différents types de mémoire disponibles et savoir quand les utiliser. Ce guide couvre les quatre types de mémoire des agents IA, leurs supports techniques et les patterns d'implémentation courants.
Résumé rapide
| Type de mémoire | Durée | Support technique | Cas d'usage principal |
|---|---|---|---|
| Sensorielle | Millisecondes | Input brut du LLM | Traitement de la requête courante |
| Court terme | Une session | Fenêtre de contexte | Historique de conversation |
| Long terme | Permanent | Base vectorielle / SQL | Profil utilisateur, faits appris |
| Procédurale | Permanent | Prompts / fine-tuning | Comportements et compétences acquis |
Pourquoi la mémoire est cruciale pour un agent IA
Un agent IA ne se résume pas à un LLM qui répond à des questions. Il exécute des séquences d'actions, observe les résultats et ajuste sa stratégie. Sans mémoire, chaque étape est isolée : l'agent ne peut pas s'appuyer sur ce qu'il a découvert à l'étape 3 pour prendre une meilleure décision à l'étape 7.
La mémoire résout trois problèmes fondamentaux :
La continuité entre les sessions. Un agent de support client qui oublie l'historique du client à chaque nouvelle conversation offre une expérience médiocre. La mémoire long terme stocke les préférences, l'historique d'interactions et les résolutions passées.
La limite de la fenêtre de contexte. Même avec des modèles à 200k tokens, injecter tout l'historique dans le prompt est coûteux et peu efficace. La mémoire sélective — récupérer uniquement les informations pertinentes — est plus performante et moins chère.
L'apprentissage progressif. Un agent qui retient ses erreurs passées et les solutions qui ont fonctionné s'améliore avec le temps. C'est la différence entre un outil jetable et un assistant qui devient plus utile au fil des mois.
Il est important de distinguer la mémoire implicite (contenue dans les poids du modèle, acquise pendant l'entraînement) de la mémoire explicite (stockée dans un système externe et récupérable à la demande). Un agent IA en production travaille presque exclusivement avec de la mémoire explicite — c'est celle que vous contrôlez.
Les quatre types de mémoire dans les agents IA
Mémoire sensorielle
La mémoire sensorielle est l'input brut que le LLM reçoit à chaque appel : le prompt système, la requête utilisateur, les résultats d'outils. Elle dure le temps d'un seul appel API et n'est pas persistée.
Exemple concret : quand vous envoyez "Résume ce document" avec le texte du document en contexte, le LLM traite cette information puis l'oublie immédiatement. Au prochain appel, il ne sait plus que le document existait.
Support technique : paramètre messages de l'API LLM.
Mémoire à court terme
La mémoire à court terme correspond à la fenêtre de contexte du LLM. Elle contient l'historique de la conversation en cours, les résultats des actions précédentes et les observations récentes. Elle est volatile : quand la fenêtre est pleine, les messages les plus anciens sont tronqués ou résumés.
Limites concrètes :
| Modèle | Fenêtre de contexte | Équivalent approximatif |
|---|---|---|
| GPT-4o Mini | 128k tokens | ~300 pages de texte |
| Claude Sonnet | 200k tokens | ~500 pages de texte |
| Mistral Large | 128k tokens | ~300 pages de texte |
| Llama 3 (8B) | 8k tokens | ~20 pages de texte |
Ces chiffres semblent généreux, mais en pratique un agent consomme beaucoup de tokens par tour : le prompt système, les descriptions d'outils, les résultats d'actions et l'historique s'accumulent rapidement. Un agent avec 10 outils et 5 tours de boucle peut facilement dépasser 50k tokens de contexte.
Stratégies d'optimisation :
- Résumé glissant : résumer les messages anciens au lieu de les garder en entier
- Fenêtre mobile : ne conserver que les N derniers messages
- Sélection par pertinence : ne garder que les messages liés à la tâche en cours
Support technique : gestion de l'historique messages[] dans le code de l'orchestrateur.
Mémoire à long terme
La mémoire à long terme persiste entre les sessions. C'est elle qui permet à un agent de "se souvenir" d'un utilisateur, de faits appris ou de résultats d'analyses passées. Deux approches principales coexistent :
Mémoire vectorielle (sémantique) — les informations sont converties en vecteurs numériques (embeddings) et stockées dans une base vectorielle (Pinecone, Chroma, Qdrant, Weaviate). La récupération se fait par similarité sémantique : l'agent cherche les souvenirs les plus proches du contexte actuel, pas par correspondance exacte de mots-clés. C'est le mécanisme au cœur du RAG (Retrieval-Augmented Generation).
Mémoire structurée (relationnelle) — les informations sont stockées dans une base SQL ou un key-value store (Redis, SQLite, PostgreSQL). La récupération se fait par requêtes exactes : SELECT préférences FROM users WHERE id = 42. Plus rapide et plus prévisible que la recherche vectorielle, mais ne gère pas la similarité sémantique.
Quand utiliser quoi :
| Besoin | Solution |
|---|---|
| Retrouver des faits par similarité de sens | Base vectorielle |
| Stocker des données structurées (profils, configs) | Base SQL / key-value |
| Les deux à la fois | Architecture hybride |
Exemple concret : un agent de veille stocke chaque article trouvé sous forme d'embedding dans Pinecone. Quand une nouvelle requête arrive, il cherche les articles sémantiquement proches de la requête — même si les mots-clés ne correspondent pas exactement. En parallèle, il stocke les préférences de l'utilisateur (secteurs suivis, fréquence de rapport) dans PostgreSQL.
Note sur la distinction RAG vs mémoire : le RAG est une technique de récupération d'informations depuis un corpus externe — c'est un mécanisme de mémoire, pas un type de mémoire. La mémoire agent est plus large : elle inclut aussi la persistance d'état, les faits appris en cours d'exécution et les préférences utilisateur.
Mémoire procédurale
La mémoire procédurale encode les comportements appris — comment faire les choses, pas quoi savoir. Dans les agents IA, elle se manifeste de deux façons :
Via le prompt système — les instructions, les exemples few-shot et les règles de comportement constituent une forme de mémoire procédurale explicite. Modifier le prompt change le comportement de l'agent.
Via le fine-tuning — un modèle fine-tuné sur des exemples spécifiques acquiert des compétences qui ne sont pas dans le prompt. C'est la forme la plus durable de mémoire procédurale, mais aussi la plus coûteuse à mettre en place.
Exemple concret : un agent de support technique a dans son prompt les règles d'escalade (quand transférer à un humain) et les templates de réponse par catégorie. Ces instructions sont sa mémoire procédurale — elles définissent comment il se comporte, pas ce qu'il sait.
Comment implémenter la mémoire dans un agent
Pattern 1 : Historique en mémoire (court terme simple)
Le plus basique : stocker les messages dans une liste Python et les passer au LLM à chaque appel.
messages = [
{"role": "system", "content": "Tu es un assistant technique."},
]
def chat(user_input: str) -> str:
messages.append({"role": "user", "content": user_input})
response = llm.invoke(messages)
messages.append({"role": "assistant", "content": response})
return response
Limite : l'historique grandit sans fin et finit par dépasser la fenêtre de contexte.
Pattern 2 : Résumé + fenêtre mobile (court terme optimisé)
Combiner un résumé des messages anciens avec les N derniers messages en entier.
MAX_RECENT = 10
def build_context(messages: list) -> list:
if len(messages) <= MAX_RECENT:
return messages
# Résumer les anciens messages
old = messages[:-MAX_RECENT]
summary = llm.invoke(f"Résume cette conversation : {old}")
recent = messages[-MAX_RECENT:]
return [{"role": "system", "content": f"Résumé: {summary}"}] + recent
Pattern 3 : RAG avec base vectorielle (long terme)
Stocker les informations persistantes dans une base vectorielle et les récupérer par pertinence.
from chromadb import Client
db = Client()
collection = db.get_or_create_collection("agent_memory")
def remember(text: str, metadata: dict):
collection.add(documents=[text], metadatas=[metadata], ids=[str(uuid4())])
def recall(query: str, n_results: int = 3) -> list:
results = collection.query(query_texts=[query], n_results=n_results)
return results["documents"][0]
Pattern 4 : Checkpointing d'état (frameworks)
Les frameworks modernes comme LangGraph et OpenClaw intègrent la persistance d'état nativement. L'état complet de l'agent (variables, résultats intermédiaires, compteurs) est sérialisé à chaque étape et peut être repris après une interruption.
Les frameworks qui gèrent la mémoire nativement :
- LangGraph :
checkpointerintégré avec SQLite ou PostgreSQL - OpenClaw : module mémoire configurable (SQLite, Redis, PostgreSQL)
- CrewAI : memory module avec mémoire courte, longue et entité
- MemGPT : agent spécialisé dans la gestion de sa propre mémoire (self-editing memory)
Bonnes pratiques pour une gestion efficace de la mémoire
Ne stockez pas tout. La tentation est de tout mémoriser "au cas où". En pratique, une mémoire trop large dégrade la pertinence de la récupération. Définissez des critères explicites : quelles informations méritent d'être persistées ?
Séparez mémoire de travail et mémoire persistante. Les résultats intermédiaires d'une tâche en cours appartiennent à la mémoire court terme. Seuls les faits réutilisables entre sessions (préférences, résultats validés, patterns appris) méritent la mémoire long terme.
Gérez l'obsolescence. Les informations vieillissent. Un fait stocké il y a 6 mois peut être périmé. Ajoutez un timestamp à chaque entrée mémoire et définissez une politique de rétention (TTL) ou un score de fraîcheur.
Attention à la vie privée. Un agent qui mémorise des données personnelles (noms, emails, historiques) doit respecter le RGPD. Prévoyez un mécanisme de suppression à la demande et ne stockez jamais de données sensibles en clair dans une base vectorielle.
Testez la récupération, pas juste le stockage. Stocker 10 000 documents dans Pinecone est facile. Vérifier que l'agent récupère les bons documents au bon moment demande des tests spécifiques avec des requêtes réalistes.
Estimez les coûts. Les embeddings ont un coût (API OpenAI : ~0,0001 $/1k tokens). Le stockage vectoriel a un coût (Pinecone : gratuit jusqu'à 100k vecteurs, puis ~70 $/mois). Calculez le coût par utilisateur par mois avant de déployer.
Questions fréquentes
Quelle est la différence entre mémoire et RAG ?
Le RAG (Retrieval-Augmented Generation) est une technique qui récupère des documents pertinents depuis un corpus pour enrichir le prompt du LLM. C'est un mécanisme de mémoire, pas un type de mémoire. La mémoire d'un agent est plus large : elle inclut aussi l'historique de conversation, les faits appris en cours d'exécution et les préférences utilisateur.
Faut-il une base vectorielle pour tous les agents ?
Non. Si votre agent traite des requêtes isolées sans besoin de se souvenir entre sessions, la fenêtre de contexte suffit. La base vectorielle est nécessaire quand l'agent doit accéder à des connaissances qui ne tiennent pas dans le contexte ou quand il doit retrouver des informations par similarité sémantique.
Quel est le meilleur outil pour la mémoire long terme ?
Cela dépend de votre infrastructure. Chroma pour le prototypage local (gratuit, simple). Qdrant pour le self-hosting en production (performant, open-source). Pinecone pour le cloud managé sans maintenance. Les trois sont compatibles avec les principaux frameworks d'agents IA.
Comment éviter qu'un agent accumule de fausses informations en mémoire ?
Trois garde-fous : un score de confiance sur chaque entrée mémoire, une politique de rétention avec TTL (suppression automatique après N jours), et une validation humaine périodique des informations les plus utilisées. Les agents en production doivent aussi permettre la suppression manuelle d'entrées incorrectes.
La mémoire augmente-t-elle le coût d'un agent ?
Oui, mais de façon maîtrisable. La génération d'embeddings coûte environ 0,0001 $ par document de 500 mots. Le stockage vectoriel est gratuit ou peu cher pour les volumes modérés (< 100k vecteurs). Le coût principal est l'augmentation de tokens dans le prompt quand on injecte des souvenirs récupérés — environ 500 à 2000 tokens supplémentaires par appel.
Articles liés
La mémoire est l'un des quatre composants clés d'un agent IA, avec le cerveau (LLM), les outils et l'orchestrateur. Maîtriser ses différents types vous permet de construire des agents qui apprennent et s'améliorent.
- Qu'est-ce qu'un agent IA ? Guide complet — définition, composants et cycle de vie
- Mémoire vectorielle pour agents IA — comparatif Pinecone, Chroma, Qdrant, Weaviate
- Pinecone pour agents IA — guide complet de la base vectorielle cloud
- Architecture d'un agent IA — cerveau, mémoire, outils et boucle d'exécution
- Frameworks d'agents IA — comparatif des frameworks avec gestion mémoire native
- Guide complet OpenClaw — framework avec module mémoire configurable
- Meilleurs outils pour agents IA — bases vectorielles, monitoring et stack complète
Restez informé sur les agents IA
Nouveaux tutoriels, comparatifs et guides pratiques directement dans votre boîte mail.