La pile mémoire des agents IA s’organise autour de briques, de patterns et de frameworks

La pile mémoire des agents IA s’organise autour de briques, de patterns et de frameworks
4 min de lecture

Un modèle de langage ne conserve pas les informations d’un appel à l’autre : à chaque exécution, il ne travaille qu’avec le texte fourni dans la requête. Pour les agents d’IA, qui doivent suivre leurs actions passées, retenir les préférences d’un utilisateur ou poursuivre une tâche en plusieurs étapes, cette limite rend nécessaire une mémoire extérieure au modèle. Cette mémoire stocke les informations en dehors de la fenêtre de contexte, c’est-à-dire la quantité de texte qu’un modèle peut traiter en une seule fois, et les restitue lorsqu’elles sont utiles.

  • La mémoire permet à un agent d’IA de conserver des informations entre deux appels.
  • Quatre types de mémoire existent : de travail, épisodique, sémantique et procédurale.
  • Une mémoire fiable note l’importance des informations et trace leur origine.
  • Le choix d’un framework dépend de la charge de travail et des exigences opérationnelles de l’agent.

Les briques de la mémoire des agents

Les agents ont besoin de transporter des informations d’un appel et d’une tâche à l’autre. Ils peuvent devoir se souvenir de ce qui a déjà été planifié afin d’éviter les actions en double, ou garder en mémoire les démarches qui ont échoué pour ne pas refaire le même travail. Sans mémoire, chaque appel ne dispose que du contexte qui lui est fourni.

Les types de mémoire se répartissent en quatre catégories. La mémoire de travail contient l’état actif de la tâche, comme les résultats intermédiaires, et se consulte directement par clé. La mémoire épisodique conserve ce qui s’est passé : interactions passées, exécutions de tâches et décisions prises, dans un journal chronologique ou une base vectorielle, avec une recherche par similarité sémantique. La mémoire sémantique rassemble ce qui est tenu pour vrai, à savoir les faits et les préférences, qui sont mis à jour plutôt qu’ajoutés. La mémoire procédurale décrit la manière de faire les choses, qu’il s’agisse de schémas d’actions réussis ou de modes de défaillance connus, et s’appuie sur des modèles de prompts ou sur le fine-tuning, un ajustement du modèle à partir de données spécifiques.

Concevoir une mémoire fiable

Dans l’exemple d’un agent de recherche travaillant plusieurs jours sur une même tâche, chaque résultat est d’abord écrit en mémoire de travail avec une durée de vie courte. Lorsqu’un résultat s’avère utile, il passe en mémoire épisodique avec un score d’importance. Avant chaque appel d’outil, l’agent consulte la mémoire de travail puis, si besoin, la mémoire épisodique. Si la tâche échoue en cours de route, l’état temporaire peut être effacé tandis que l’historique des travaux achevés est conservé.

Plusieurs pratiques rendent la mémoire plus fiable à mesure qu’elle grossit : noter l’importance des informations avant leur écriture, limiter la mémoire de chaque agent à son rôle dans les systèmes multi-agents, consulter la mémoire à chaque étape de décision, et tracer l’origine de chaque élément, qu’il vienne d’un agent, d’un outil, d’une saisie utilisateur ou d’un horodatage. Certaines approches, simples à mettre en œuvre, deviennent en revanche peu fiables. C’est le cas du stockage de tout dans une seule base vectorielle, de la compression par résumés libres, qui peut effacer des chiffres ou des contraintes, de la croissance sans limite de la mémoire, ou encore de la confiance accordée de la même façon à chaque écriture. Cette dernière expose à l’empoisonnement de la mémoire, où un contenu non fiable ou malveillant est stocké puis traité comme une information sûre.

Des frameworks aux approches différentes

Les frameworks se situent entre une mémoire textuelle simple et les graphes de connaissances. Letta repose sur des blocs de texte que l’agent peut réécrire lui-même, et met à jour un bloc lorsqu’il détecte une contradiction. Mem0 utilise une mémoire vectorielle avec une recherche sensible aux entités, et ajoute les nouveaux souvenirs à côté des anciens. Graphiti s’appuie sur un graphe de connaissances bi-temporel aux relations typées : il invalide les anciennes relations tout en conservant leur historique consultable. Cognee construit à partir des données sources des couches de graphe, vectorielles et relationnelles, et reconstruit la représentation de la mémoire, avec des modes temporels pour suivre les changements.

Dans les systèmes multi-agents, le partage de la mémoire peut provoquer des conflits lors des mises à jour simultanées. Les solutions évoquées incluent un service central avec contrôle des écritures, des espaces de noms séparés pour chaque agent, ou des journaux en ajout seul dont les conflits sont résolus à la recherche. L’évaluation s’appuie sur plusieurs indicateurs : le rappel, qui mesure si les souvenirs pertinents sont retrouvés, la précision, qui mesure la part d’informations inutiles renvoyées, la fidélité, qui vérifie l’usage correct des informations récupérées, et l’obsolescence, qui mesure la fréquence des informations périmées. Selon l’article, le choix dépend de la charge de travail de l’agent, de ses données et de ses exigences opérationnelles.