Systèmes de mémoire dans les assistants IA

Mémoire de travail, structurée et de récupération pour les assistants.

Sommaire

La mémoire transforme les assistants d’entités réactives en entités persistantes, mais c’est aussi là que beaucoup de systèmes se dégradent silencieusement. Les enquêtes soutiennent que la distinction entre mémoire à court terme et mémoire à long terme n’est plus suffisante pour la mémoire des agents modernes ; les SDK d’OpenAI et de LangGraph pointent vers une pile plus simple — mémoire de travail, état durable et récupération.

Les assistants ont besoin d’une mémoire de travail pour l’exécution en cours, d’un état durable pour les faits et préférences stables, et d’une mémoire de récupération pour un contexte de support pertinent. Mon point de vue légèrement partisan est que l’état structuré est sous-utilisé, que la récupération vectorielle est sur-utilisée, et que la plupart des pannes de mémoire proviennent de la politique de promotion et d’injection plutôt que du choix de stockage.

L’autre point important est que la mémoire ne corrige pas automatiquement le contexte long. LoCoMo montre que le rappel conversationnel à très long terme reste difficile, et « Lost in the Middle » montre que le fait simplement de donner plus de jetons au modèle peut dégrader les performances lorsque les informations pertinentes se trouvent au milieu du prompt. Les bons systèmes de mémoire sont sélectifs, stratifiés et explicites quant à la hiérarchie de priorité.

Ce guide s’inscrit dans le [centre de mémoire des systèmes IA](https://www.glukhov.org/fr/ai-systems/memory/ « Centre pour les connaissances persistantes et la mémoire dans les systèmes IA — comparaisons de fournisseurs de mémoire d’agents, graphes de connaissances Cognee, et liens vers la mémoire bornée de Hermes et l’hébergement de LLM. ») en tant que carte inter-framework pour la couche mémoire au sein de l’[architecture des assistants IA](https://www.glukhov.org/fr/ai-systems/architecture/ai-assistant-architecture/ « Un guide technique approfondi sur l’architecture des assistants IA : LLM, mémoire, outils, routage et observabilité, avec des compromis réels, des modes d’échec et des motifs de conception. »).

![Système de mémoire abstrait pour un assistant IA sous forme de carnets superposés, points vectoriels et cartes structurées](/img/memory-systems-in-ai-assistants_w678.jpg « Illustration paysage d’un système de mémoire d’assistant IA sous forme de carnets superposés, points vectoriels, cartes structurées et fils fluides »)

Comment penser à la mémoire des assistants

La mémoire des assistants n’est pas le même problème que la gestion personnelle des connaissances (PKM), les wikis ou les pipelines RAG autonomes — [PKM vs RAG vs Wiki vs Systèmes de mémoire](https://www.glukhov.org/fr/knowledge-management/foundations/pkm-vs-rag-vs-wiki-vs-memory-systems/ « Comparez PKM, RAG, wikis et systèmes de mémoire IA par structure, récupération, propriété, évolution et cas d’usage réels. ») cartographie ces paradigmes au niveau de l’architecture des connaissances. Ce guide reste un niveau plus bas, dans les contrats d’exécution que les assistants implémentent réellement. C’est aussi un problème de maintenance différent : la mémoire régit le comportement d’un agent d’une session à l’autre, tandis qu’une base de connaissances partagée telle qu’un [Wiki LLM](https://www.glukhov.org/fr/knowledge-management/knowledge-systems-architectures/compiled-knowledge/what-is-llm-wiki/ « Wiki LLM — Connaissances compilées que le RAG ne peut pas remplacer ») a besoin de sa propre [discipline de maintenance](https://www.glukhov.org/fr/knowledge-management/knowledge-systems-architectures/compiled-knowledge/llm-wiki-maintenance-knowledge-drift/ « Maintenance du Wiki LLM : Dérive, contradictions et révision ») afin que les agents qui y lisent n’agissent pas sur des faits obsolètes ou contradictoires.

La façon la plus claire de penser à la mémoire n’est pas comme « l’historique de la chat », mais comme un ensemble de contrats de stockage avec des rôles différents. Un stockage préserve le fil actif. Un autre stockage maintient l’état utilisateur durable. Un autre supporte la recherche sémantique sur des documents ou des interactions passées. Les recommandations d’OpenAI sur la mémoire pour la personnalisation rendent cela explicite en séparant la mémoire globale et la mémoire de session, tandis que LangGraph sépare la persistance au niveau du fil des stockages à long terme entre les conversations.

La mémoire est importante car les assistants de production répètent le travail, revisitent les objectifs et opèrent sur des jours ou des semaines. Generative Agents a popularisé le motif de stockage des expériences, de réflexion sur elles, et de récupération dynamique pour la planification future. MemGPT a poussé cela plus loin en modélisant la mémoire comme des niveaux et des mouvements entre des stockages rapides et lents. Les systèmes plus récents tels que A-MEM et Mem0 se concentrent sur le lien, la consolidation et l’efficacité du déploiement plutôt que sur le simple volume de rappel.

Types de mémoire

Les assistants de production ont généralement besoin de trois couches coopérantes. La FAQ ci-dessus les nomme ; les sections ci-dessous expliquent comment chacune se comporte dans les systèmes réels.

Mémoire à court terme

La mémoire à court terme est le contexte de travail de la conversation ou de l’exécution en cours. Les Sessions d’OpenAI ajoutent automatiquement l’historique de la conversation avant chaque exécution et ajoutent de nouveaux éléments après chaque exécution. LangGraph implémente la même idée comme persistance au niveau du fil via un pointeur de contrôle (checkpointer). Cette couche maintient la cohérence locale, mais c’est aussi la première chose qui explose lorsque les résultats d’outils, les lectures de fichiers ou les longues discussions s’accumulent.

Mémoire de récupération à long terme

La mémoire de récupération à long terme stocke des éléments qui sont consultés lorsqu’ils sont pertinents plutôt que rejoués à chaque tour. Cela chevauche [RAG](https://www.glukhov.org/fr/rag/ « Tutoriel RAG étape par étape : construisez des systèmes de génération augmentée par récupération avec des bases de données vectorielles, recherche hybride, réclassification et recherche web. Architecture, implémentation et meilleures pratiques de production. ») en tant que technique de récupération, mais ce n’est pas toute l’histoire de la mémoire des assistants — les wikis et les corpus PKM alimentent souvent l’index tandis que l’état structuré et la mémoire de session vivent ailleurs, comme la comparaison PKM/RAG/wiki/mémoire ci-dessus le montre clairement. Dans le RAG classique, le modèle combine la mémoire paramétrique avec la mémoire non paramétrique telle qu’un index vectoriel dense. Self-RAG améliore la récupération naive en rendant la récupération sur demande plutôt que fixe pour chaque demande. Dans les systèmes d’assistants pratiques, c’est généralement la couche de stockage vectoriel ou de transcripte recherchant.

Mémoire structurée

La mémoire structurée stocke des faits, préférences ou contraintes durables dans des champs explicites avec des règles de priorité. Le manuel de recettes de personnalisation d’OpenAI est inhabituellement clair ici. La mémoire globale et la mémoire de session ont des rôles différents, la dernière instruction utilisateur l’emporte, la mémoire de session peut outrepasser la mémoire globale pour la tâche en cours, et la mémoire qui entre en conflit avec l’intention utilisateur actuelle devrait déclencher une clarification plutôt qu’une obéissance silencieuse. C’est pourquoi l’état structuré est souvent meilleur que la récupération pour les préférences stables, les politiques ou les contraintes permanentes.

Mécanismes de récupération

Un flux de récupération typique comporte cinq étapes : capture, encodage, recherche, réclassification ou filtrage, puis injection. Pinecone, Weaviate, Qdrant, Redis et Milvus documentent tous des variantes de ce motif. Certains ne supportent que les vecteurs denses, d’autres supportent la récupération hybride qui combine recherche sémantique et lexicale, et certains exposent des filtres de métadonnées ou des espaces de noms pour le contrôle de la multi-tenance et du périmètre. Le point d’ingénierie est simple. La qualité de la récupération dépend autant du filtrage, du découpage et de la stratégie de classement que du modèle d’encodage lui-même.

La récupération hybride est généralement le choix par défaut raisonnable lorsque les requêtes mélangent le sens et les termes exacts. Weaviate documente la recherche hybride avec un paramètre alpha équilibrant les composantes vectorielles et par mots-clés, Qdrant supporte les requêtes hybrides et multi-étapes via son API de requête et ses méthodes de fusion de scores, et Milvus décrit la récupération dense, creuse et hybride dans le même système. C’est important pour les assistants car les utilisateurs demandent souvent à la fois une signification approximative et des identifiants exacts, des noms de fichiers, des numéros de révision ou des codes produits. Lorsque le côté lexical réside dans Postgres ou Elasticsearch plutôt que dans la base de données vectorielle, [Recherche plein texte PostgreSQL vs Elasticsearch](https://www.glukhov.org/fr/data-infrastructure/search/postgresql-full-text-search-vs-elasticsearch/ « Une comparaison pratique de la recherche plein texte PostgreSQL et d’Elasticsearch sur la pertinence, l’échelle, la latence, le coût et les opérations pour les applications modernes. ») vous aide à choisir où la recherche par mots-clés doit s’exécuter en production.

Un point de vue plus partisan encore : la récupération ne doit pas décider la politique. Elle doit fournir des candidats. L’assistant a toujours besoin de règles structurées pour la priorité, la confidentialité, la récence et la résolution des conflits. L’exemple de mémoire basée sur l’état d’OpenAI le rend explicite, et c’est un motif beaucoup plus sain que de prétendre que la recherche de similarité seule peut résoudre un état utilisateur contradictoire.

Problèmes courants

L’échec le plus courant est une mémoire obsolète ou contradictoire. Le manuel de mémoire à long terme d’OpenAI appelle la consolidation de mémoire l’étape la plus sensible et sujette aux erreurs, listant l’empoisonnement du contexte, la perte de mémoire, les mémoires dupliquées et le traitement des contradictions comme préoccupations centrales. C’est correct, et c’est là que beaucoup d’assistants échouent silencieusement. Ils se souviennent de trop, trop tôt, et sans règle pour oublier. Une variante spécifique et de plus en plus courante de cet échec mérite son propre approfondissement : l’inférence propre du modèle est promue en mémoire durable, récupérée plus tard comme si c’était une observation, et utilisée pour justifier une version encore plus forte de lui-même. Voir [Boucles de mémoire auto-renforçantes dans les agents IA](https://www.glukhov.org/fr/ai-systems/memory/self-reinforcing-memory-loops/ « La mémoire d’agent peut transformer les inférences du modèle en preuves futures. Comment ces boucles se forment, pourquoi elles comptent, et quels contrôles de chemin d’écriture les limitent. ») pour les sept formes que cela prend et comment le tester.

Le deuxième échec est la surcharge de contexte. LangGraph avertit que les longues conversations peuvent dépasser la fenêtre de contexte du LLM et recommande la rognure, la suppression, la résumation ou la gestion des points de contrôle. OpenClaw élague de manière similaire les anciennes sorties d’outils du contexte en mémoire tout en conservant le transcripte complet sur disque. Ce ne sont pas des optimisations optionnelles. Elles sont requises si votre assistant lit, recherche ou exécute quoi que ce soit de non trivial.

Le troisième échec est de supposer que le contexte long équivaut à un rappel fiable. LoCoMo montre que la mémoire conversationnelle à long terme est encore difficile, et « Lost in the Middle » montre la sensibilité positionnelle dans les prompts longs. Si la mémoire est importante, ne comptez pas sur le bourrage de prompt par force brute. Utilisez la compaction, la récupération et l’état explicite.

Compromis

La couche de base de données vectorielle est là où beaucoup d’équipes d’assistants font des paris de plateforme précoces. La comparaison ci-dessous se concentre sur les caractéristiques de produit documentées qui comptent pour la conception de la mémoire des assistants.

Système Ce qui se distingue Meilleure adaptation
Pinecone Base de données vectorielle gérée avec encodage, réclassification, filtres de métadonnées, espaces de noms et support pour dense, creux et style plein texte BM25 dans un seul schéma Équipes qui veulent une récupération gérée avec une infrastructure minimale
Weaviate Base de données vectorielle open source stockant des objets et des vecteurs, avec recherche sémantique et hybride et positionnement RAG fort Équipes qui veulent la flexibilité open source avec récupération hybride
Qdrant Recherche vectorielle native IA avec filtrage, requêtes hybrides et multi-étapes, plus un mode Edge autonome hors ligne intégré Équipes qui veulent le contrôle de la recherche, le déploiement edge ou un filtrage robuste
pgvector Recherche de similarité vectorielle dans Postgres, avec recherche exacte et approximative plus ACID, JOINs et fonctionnalités de récupération Équipes déjà standardisées sur Postgres et les données relationnelles
Milvus Base de données vectorielle cloud-native avec stockage et calcul dissociés, plus récupération dense, creuse et hybride Charges de travail de récupération à grande échelle et déploiements distribués

Une fois que vous choisissez un backend, son exploitation est un problème d’[infrastructure de données](https://www.glukhov.org/fr/data-infrastructure/ « Guide d’ingénierie sur l’infrastructure de données pour les systèmes IA de production : stockage d’objets compatible S3, PostgreSQL, Elasticsearch, streaming et messagerie, intégrations SaaS, couches de données natives IA, benchmarks et compromis. ») — Postgres avec pgvector pour les métadonnées de session et les vecteurs sur une seule pile, ou [Neo4j](https://www.glukhov.org/fr/data-infrastructure/databases/neo4j/ « Guide senior-ingenieur sur Neo4j pour les graphes de propriétés et GraphRAG. Cypher, ACID, index vectoriels, récupération hybride et python neo4j-graphrag. ») lorsque la mémoire de récupération est en forme de graphe plutôt que des fragments plats.

Le motif de latence et de coût ci-dessous est une synthèse de conception basée sur les modèles opérationnels décrits dans les recommandations de compaction des Sessions d’OpenAI, la gestion de la mémoire de LangGraph, la mémoire basée sur l’état d’OpenAI, et le comportement de récupération documenté de Redis et des stockages vectoriels. Elle est intentionnellement qualitative, car les vrais chiffres dépendent de la taille du corpus, du modèle d’encodage, du positionnement réseau et de la mise en cache.

Tactique de mémoire Latence de lecture Latence d’écriture Pression sur le coût des jetons Coût infrastructure Quand cela vaut la peine
Historique de session brut La plus basse La plus basse La plus haute La plus basse Chat multi-tours simple et exécutions courtes
Mémoire de résumé ou de compaction Faible à modérée Modérée, car la résumation elle-même est une étape de modèle Modérée à faible Faible à modérée Travail de longue durée où l’exécution active doit continuer
Profil et état structuré Faible Modérée Faible Faible Préférences durables, règles et contraintes permanentes
Récupération vectorielle ou hybride Modérée Modérée Faible à modérée Modérée Corpus de grande taille, historique recherchant, ancrage documentaire
Rejeu complet de tout Élevée et de plus en plus instable Faible La plus haute Infrastructure faible, dépenses de modèle élevées Presque jamais, sauf petits corpus et débogage

Exemples d’implémentation

La pile actuelle d’OpenAI donne deux motifs de référence utiles. Le premier est Sessions pour la continuité à court terme entre les exécutions. Le second est la mémoire à long terme basée sur l’état, où les champs de profil structurés et les notes de mémoire globale sont injectés au début de la session, les notes de session sont distillées pendant l’exécution, et une étape de consolidation promeut uniquement les éléments durables dans la mémoire globale. Cette boucle d’injection → raisonnement → distillation → consolidation est l’un des motifs de mémoire publique les plus clairs disponibles actuellement.

LangGraph fournit une séparation similaire mais indépendante du framework. Les pointeurs de contrôle gèrent la mémoire de fil à court terme et les stockages gèrent la recherche à long terme entre les conversations. Le stockage peut être recherché dans les nœuds à l’exécution, ce qui en fait une bonne conception de référence pour les assistants qui ont besoin d’une orchestration explicite plutôt que de la magie de framework cachée.

Hermes est un exemple public utile de mémoire stratifiée dans la nature. Sa mémoire intégrée utilise MEMORY.md, USER.md et la recherche de session SQLite FTS5, tandis que les plugins de fournisseurs externes ajoutent la mémoire de graphe, la récupération sémantique, l’extraction automatique des faits et la modélisation utilisateur. Les mécanismes complets sont documentés dans [Système de mémoire de l’agent Hermes](https://www.glukhov.org/fr/ai-systems/hermes/hermes-agent-memory-system/ « Un guide technique approfondi sur l’architecture de mémoire de l’agent Hermes — de la mémoire principale bornée de 2 fichiers à 8 fournisseurs externes extensibles. »), et les huit backends extensibles sont comparés dans [Comparaison des fournisseurs de mémoire d’agent](https://www.glukhov.org/fr/ai-systems/memory/agent-memory-providers/ « Comparez huit backends de mémoire d’agent pour Hermes, OpenClaw et d’autres agents — Honcho, OpenViking, Mem0, Hindsight, Holographic, RetainDB, ByteRover, Supermemory — dépendances, auto-hébergement et activation. »).

OpenClaw offre une approche différente, avec l’élagage de session, une mémoire active optionnelle qui s’exécute avant la réponse principale, et un système de Rêve opt-in pour la consolidation de mémoire en arrière-plan. Ces exemples valent la peine d’être notés car ils traitent la mémoire comme un sous-système opérationnel, et non comme un simple tour de récupération. Pour voir comment OpenClaw s’intègre dans la pile d’assistant à cinq couches plus large, voir la [présentation du système OpenClaw](https://www.glukhov.org/fr/ai-systems/openclaw/ « Une exploration par étude de cas d’OpenClaw — un système d’assistant IA auto-hébergé qui intègre des LLM locaux, la récupération, la mémoire, le routage et l’observabilité dans une infrastructure locale cohérente. »).

Les prototypes de recherche pointent dans la même direction. MemGPT utilise des niveaux de mémoire hiérarchiques et un flux de contrôle pour la gestion du contexte, A-MEM utilise un indexage dynamique et des liens inspirés de Zettelkasten, et Mem0 rapporte une meilleure précision avec une latence p95 et un coût de jetons beaucoup plus bas que les baselines de contexte complet sur LoCoMo. Vous n’avez pas besoin de copier ces systèmes intégralement, mais leur leçon partagée est claire. La qualité de la mémoire provient de la sélection et de l’organisation, pas du stockage de tout pour l’éternité.

Quand la mémoire aide versus nuit

La mémoire aide lorsque l’assistant rencontre à plusieurs reprises des préférences stables, des contraintes durables, des leçons de workflow réutilisables, ou de grands corpus externes qui ne peuvent pas tenir dans un prompt. Le guide des agents fiables d’OpenAI fait bien la distinction. La compaction aide l’exécution longue en cours à continuer, tandis que la mémoire aide les exécutions futures à réutiliser les leçons de workflow. C’est le bon modèle mental pour la plupart des assistants d’affaires.

La mémoire nuit lorsque la tâche est unique, que l’état utilisateur change souvent, que l’index de récupération est bruyant, ou que le système ne peut pas réconcilier les conflits. L’exemple de mémoire de voyage d’OpenAI avertit que la mémoire de session ne devrait pas automatiquement devenir mémoire globale, et il énonce explicitement que la mémoire n’est pas une limite de sécurité. Si votre assistant traite chaque chaîne rappelée comme vérité, vous avez construit un moteur de confusion, pas un système de mémoire.

Une boucle de mémoire sélective

La boucle de mémoire robuste la plus simple est sélective et progressive. Charger l’état durable, récupérer le contexte de support, répondre, capturer uniquement les mémoires candidates, puis consolider plus tard. Tant le motif basé sur l’état d’OpenAI que les papiers de mémoire récents vont dans cette direction.

![diagramme-de-séquence-de-mémoire-d-agent](agent-memory-sequence-diagram_w1000.jpg « diagramme-de-séquence-de-mémoire-d-agent »)

Sans traçage et évaluations, les changements de mémoire sont difficiles à déboguer. Lorsque vous promouvez de nouveaux faits ou changez la politique de récupération, associez ces changements aux motifs d’observabilité dans [Observabilité pour les systèmes LLM](https://www.glukhov.org/fr/observability/observability-for-llm-systems/ « Un guide profond et orienté production sur l’observabilité pour les systèmes LLM, couvrant les métriques LLM, le traçage distribué, les journaux, le profilage, le test synthétique, les SLO et une comparaison des outils d’observabilité LLM. ») afin que vous puissiez voir quelle couche a injecté quoi.

À retenir

La pile de mémoire pratique pour les assistants n’est pas « juste utiliser une base de données vectorielle ». C’est la mémoire de travail pour l’exécution en direct, l’état structuré pour la vérité durable, la mémoire de récupération pour les preuves de support, et une politique de consolidation prudente qui oublie aussi délibérément qu’elle se souvient. La recherche récente et les recommandations actuelles des SDK pointent toutes dans cette direction.

Pour la pile d’assistant complète autour de cette couche, commencez par l’architecture des assistants IA. Pour la mémoire bornée spécifique à Hermes et les plugins de fournisseur, suivez le Système de mémoire de l’agent Hermes et la Comparaison des fournisseurs de mémoire d’agent. Lorsque les assistants doivent surveiller les sources et agir de manière proactive plutôt que d’attendre les prompts de l’utilisateur, le modèle d’état opérationnel pour le polling — curseurs, réclamations, enregistrements de déduplication et journaux d’exécution — est couvert dans [Agents de polling dans les assistants IA : 11 motifs d’implémentation](https://www.glukhov.org/fr/ai-systems/architecture/polling-agents-ai-assistants-implementation-patterns/ « Un guide pratique sur les motifs d’agent de polling dans les assistants IA — planificateurs, files d’attente, webhooks, workflows durables, gestion de l’état et compromis pour les systèmes de production. »).

S'abonner

Recevez de nouveaux articles sur les systèmes, l'infrastructure et l'ingénierie IA.