L'amnésie des systèmes d'IA n'est pas un problème de modèles, c'est un problème d'infrastructure

L'amnésie des systèmes d'IA n'est pas un problème de modèles, c'est un problème d'infrastructure

Il y a une scène que les équipes produit en intelligence artificielle connaissent trop bien. Un utilisateur passe vingt minutes à construire du contexte avec un assistant : budget, restrictions alimentaires, dates inamovibles, préférences familiales. Puis, trois échanges plus tard, le système se comporte comme si cette conversation n'avait jamais eu lieu.

Tomás RiveraTomás Rivera22 juin 20269 min
Partager

L'amnésie des systèmes d'IA n'est pas un problème de modèles, c'est un problème d'infrastructure

Il existe une scène que les équipes produit en intelligence artificielle connaissent trop bien. Un utilisateur passe vingt minutes à construire du contexte avec un assistant : budget, restrictions alimentaires, dates inamovibles, préférences de sa famille. Puis, trois échanges plus tard, le système se comporte comme si cette conversation n'avait jamais eu lieu. L'utilisateur contacte le support. Le support escalade vers l'équipe produit. L'équipe produit appelle le fournisseur du modèle. Et le fournisseur du modèle répond, à juste titre, que son modèle a fonctionné exactement comme il a été conçu.

Parce que le modèle n'a rien oublié. Le modèle n'a jamais eu accès à cette information en premier lieu.

Cette distinction semble technique et anodine jusqu'à ce qu'on calcule ce qu'elle coûte. Chaque défaillance de continuité dans un assistant à usage professionnel n'est pas seulement une friction pour l'utilisateur : c'est un signal que le système reconstruit mal le monde avant même de demander au modèle de raisonner dessus. Et lorsque ce schéma se multiplie sur des milliers de sessions quotidiennes, le coût ne se mesure pas uniquement en saturation du support. Il se mesure en confiance perdue, en flux de travail abandonnés, en ROI qui n'arrive jamais.

La bonne nouvelle, c'est que le problème a une solution. La mauvaise nouvelle, c'est que la plupart des organisations ne savent toujours pas où se situe le vrai problème.

Le modèle est innocent. Le pipeline est coupable.

Les grands modèles de langage sont, par conception, des entités sans état. Chaque appel à l'API est un événement mathématique indépendant. Le modèle n'a aucune mémoire entre les échanges, aucun accès à la session précédente, aucun moyen de savoir que l'utilisateur a déjà indiqué un budget de quatre mille dollars. Ce que le modèle perçoit à chaque échange est exactement ce que le système lui envoie à cet instant précis, ni plus ni moins.

Cela signifie que toute l'illusion de continuité, tout ce qui donne à un assistant l'apparence de « se souvenir », dépend exclusivement de ce qui se passe avant que la requête n'atteigne le modèle. Ce processus porte un nom technique et revêt un poids stratégique croissant : le pipeline de contexte.

Un pipeline de contexte bien construit exécute trois phases à chaque échange. Premièrement, l'hydratation : extraire du stockage l'historique pertinent, les métadonnées de l'utilisateur, les embeddings vectoriels qui capturent ce qui a été dit précédemment. Deuxièmement, l'assemblage : filtrer ce matériau brut, le condenser et le structurer en un payload cohérent. Troisièmement, l'exécution : envoyer ce payload compilé vers le point d'inférence. Lorsque le système échoue à simuler une mémoire, la défaillance s'est produite dans l'une de ces trois phases, et non à l'intérieur du modèle.

Les équipes d'ingénierie qui diagnostiquent ces défaillances identifient quatre zones où le pipeline se rompt le plus fréquemment. La première est la récupération déficiente : le système n'extrait pas les bonnes informations du stockage. La deuxième est la compression avec perte : les résumés glissants dégradent des contraintes précises jusqu'à les transformer en généralités inutilisables. La troisième est la dilution de contexte : envoyer trop de matériau au modèle noie les données pertinentes sous le bruit. La quatrième englobe les erreurs d'assemblage : des blocs d'information ordonnés incorrectement, des délimiteurs absents ou des versions obsolètes injectées avant les corrections de l'utilisateur.

Chacune de ces zones de défaillance ressemble, du point de vue de l'utilisateur, à la même chose : un assistant qui a oublié ce qu'on lui avait dit. Mais elles pointent vers des composants entièrement distincts du stack. Tenter de résoudre une défaillance de récupération en réécrivant le prompt système revient à ajouter de la RAM à un serveur dont le disque dur est corrompu.

L'architecture réelle qui sépare les pilotes réussis de ceux qui restent en pilote

Le saut d'une implémentation d'IA qui fonctionne en démo à une autre qui fonctionne en production sous charge réelle dépend, en grande partie, du choix de la bonne architecture de mémoire pour chaque couche du problème. Il n'existe pas de solution universelle. Chaque approche résout un goulot d'étranglement et en crée un autre.

La fenêtre glissante — inclure les N derniers messages et ignorer le reste — est l'option zéro infrastructure. Elle se déploie en quelques heures. Et elle garantit que toute contrainte établie au début d'une longue session disparaît du contexte actif. Pour les assistants qui gèrent des transactions courtes et sans état, c'est suffisant. Pour tout flux de travail professionnel dont les décisions dépendent de conditions établies vingt échanges plus tôt, c'est un piège.

La recherche sémantique sur vecteurs résout partiellement ce problème. Au lieu de prendre les N derniers messages, le système embeds la requête actuelle et récupère les fragments historiquement les plus pertinents depuis la base de données. Lorsqu'un utilisateur pose une question qui dépend d'une information communiquée en début de conversation, la recherche vectorielle peut l'atteindre même si des dizaines d'échanges se sont écoulés. Le coût de cette approche n'est pas négligeable : elle requiert une infrastructure d'indexation, une calibration des seuils de classement, une logique de fraîcheur et une évaluation continue des performances de récupération. Une base de données vectorielle cartographie une proximité mathématique, et non une importance opérationnelle. Cette distinction exige un ajustement permanent.

Là où la recherche vectorielle échoue structurellement, c'est sur les contraintes dures. Un budget maximum, une allergie alimentaire, un numéro de compte, un SLA contractuel. Ces éléments ne sont pas des informations qui doivent entrer en compétition dans un classement de similarité sémantique. Ce sont des faits que le système doit pouvoir injecter avec certitude à chaque échange, sans dépendre de la recherche pour les récupérer. Les dépôts d'entités — bases de données structurées où ces contraintes sont enregistrées sous forme de champs discrets et actualisables — résolvent ce problème avec une récupération déterministe. Si l'utilisateur corrige son budget de quatre mille à cinq mille dollars, le backend met à jour un champ spécifique, il n'ajoute pas une correction à la fin d'un résumé textuel. Le modèle reçoit toujours le bon chiffre parce qu'il n'y a aucune ambiguïté dans la façon dont il a été stocké.

Pour les relations complexes entre entités, la récupération basée sur des graphes ajoute une couche de précision supplémentaire. Si le système doit savoir que la fille de l'utilisateur est allergique aux cacahuètes, que son conjoint préfère un siège côté couloir et que ses parents ont besoin d'une chambre au rez-de-chaussée, une recherche sémantique peut récupérer ces trois faits mais perdre de vue à quelle personne s'applique chaque contrainte. Une architecture de graphe stocke ces relations sous forme de liens explicites entre entités et permet de les parcourir lors de la récupération. La surcharge opérationnelle est considérable — de la conception de l'ontologie à la maintenance continue du graphe — mais dans des domaines tels que la santé, le voyage ou les services financiers, où les contraintes sont relationnelles par nature, cette complexité n'est pas optionnelle.

L'architecture la plus robuste en production combine ces couches dans un stack à plusieurs niveaux : un buffer des échanges récents pour maintenir le flux conversationnel immédiat, une couche vectorielle pour les faits de session et les pivots à moyen terme, et une base de données structurée pour les profils utilisateurs et les préférences à long terme. Sur ce stack, un routeur de contexte décide, selon le type de message, quelles couches activer. Un simple message de confirmation n'a besoin de consulter aucune base de données. Une demande de réservation active le dépôt d'entités, l'historique récent et l'état des outils. L'objectif n'est pas le pipeline le plus lourd possible. L'objectif est le pipeline le plus sélectif possible.

L'observabilité que personne ne construit avant que le système ne tombe en production

Il existe un schéma qui se répète suffisamment souvent pour être considéré comme structurel. Une équipe déploie un assistant, reçoit des rapports d'utilisateurs qui disent que le système « ne se souvient de rien », et la réponse immédiate est de réécrire les instructions système. On ajoute des phrases en majuscules : « RAPPELLE-TOI TOUJOURS LE BUDGET DE L'UTILISATEUR ». Le comportement ne s'améliore pas. On fait évoluer le modèle vers une version plus coûteuse. Le comportement ne s'améliore toujours pas. Finalement, quelqu'un examine le payload exact qui est parvenu au modèle au moment de la défaillance et découvre que le budget n'a jamais été récupéré depuis la base de données, ou qu'il a été récupéré mais filtré avant l'assemblage, ou qu'il a bien été inclus mais placé à la fin d'un prompt de trente mille tokens où le modèle ne l'a effectivement pas traité.

Chacun de ces scénarios implique une intervention entièrement différente. Sans visibilité sur l'état exact du pipeline au moment de l'inférence, le diagnostic relève du tâtonnement. Et le tâtonnement dans les systèmes d'IA a un coût : temps d'ingénierie gaspillé, itérations de prompt qui ne résolvent rien, et dégradation progressive de la confiance des utilisateurs pendant que l'équipe technique travaille au mauvais endroit du stack.

Le traçage déterministe résout ce problème. Enregistrer le prompt compilé complet, accompagné des décisions de routage actives et des sorties brutes des outils, à l'instant précis avant l'inférence. Avec cette visibilité, la question de diagnostic cesse d'être « pourquoi le modèle s'est-il comporté ainsi » pour devenir « qu'a reçu le modèle exactement ». C'est la différence entre déboguer un microservice avec des logs de requête et sans eux.

L'évaluation hors ligne complète le traçage en production. Construire des ensembles de tests avec des conversations à plusieurs échanges où la bonne réponse dépend de contraintes établies en début de session permet de mesurer, avant le déploiement, si le système récupère et utilise correctement ces données. Les métriques qui importent dans ce contexte ne sont pas celles des benchmarks de modèles : ce sont le taux de succès de récupération, la précision du rappel mémoire, l'utilisation réelle du contexte injecté et la latence cumulée des couches de récupération. Sans ces métriques, les équipes optimisent des indicateurs intermédiaires qui semblent bons lors de tests isolés mais ne prédisent pas le comportement du système complet.

L'avantage concurrentiel ne réside plus dans le modèle que vous avez choisi

À mesure que les modèles de frontière convergent dans leurs capacités de raisonnement, la différenciation se déplace vers l'infrastructure qui les entoure. L'organisation qui a déployé le plus grand modèle en 2023 ne dispose plus d'un avantage structurel sur celle qui a déployé un modèle plus petit mais avec un pipeline de contexte plus précis. Des recherches publiées par des équipes de données d'entreprise montrent des différences substantielles en termes de précision des réponses entre des systèmes opérant sur des schémas sans contexte structuré et des systèmes dotés de couches de contexte gouvernées — des différences qu'aucun ajustement de prompt ne peut compenser.

Ce que cela signifie pour la planification stratégique produit n'est pas anodin. Premièrement, le choix du fournisseur de modèle devient moins déterminant que l'architecture mémorielle. Deuxièmement, les équipes qui ont construit leur couche de contexte sur une infrastructure propre et ouverte disposent d'une portabilité : elles peuvent changer de modèle sans reconstruire leur représentation de la connaissance. Les équipes qui ont injecté leurs contraintes directement dans des prompts propriétaires ne bénéficient pas de cette flexibilité. Troisièmement, la gouvernance du contexte — qui peut mettre à jour quel champ du dépôt d'entités, dans quelles conditions, avec quelle traçabilité — devient une question d'architecture organisationnelle que les équipes produit ne peuvent pas déléguer indéfiniment aux équipes de données.

L'assistant qui semble le plus capable pour l'utilisateur final n'est pas nécessairement celui qui tourne sur le modèle avec le plus de paramètres. C'est généralement celui qui dispose du système de gestion d'état le plus rigoureux en coulisses. C'est la différence entre une intelligence apparente et une intelligence durable à l'échelle. Et construire la seconde exige de traiter le pipeline de contexte avec le même niveau de discipline d'ingénierie que celui appliqué à tout autre composant critique d'infrastructure : avec des contrats d'interface, une validation de schéma, un versionnage et une observabilité permanente.

Les organisations qui continueront à diagnostiquer les défaillances de contexte comme des défaillances de modèle continueront à investir dans la partie du stack qui en a le moins besoin.

Partager

Vous pourriez aussi aimer