L’ingénierie contextuelle représente un changement important dans l’intelligence artificielle, s’éloignant des invites individuelles et se dirigeant vers la construction d’écosystèmes d’informations complets autour des grands modèles de langage (LLM). À mesure que les applications d’IA évoluent des chatbots de base aux agents sophistiqués capables d’exécuter des tâches complexes en plusieurs étapes, la qualité des résultats du modèle dépend de plus en plus des informations fournies. Par conséquent, l’ingénierie contextuelle est devenue essentielle pour créer des applications d’IA fiables et puissantes qui offrent des expériences utilisateur impressionnantes.
Le Changement de Paradigme : Des Invites aux Systèmes
L’accent se déplace de la création d’invites individuelles vers la construction systématique d’un écosystème d’informations complet autour des grands modèles de langage (LLM). À mesure que les applications d’IA évoluent des simples chatbots aux agents intelligents capables d’effectuer des tâches complexes en plusieurs étapes, la qualité du résultat du modèle dépend de plus en plus de la qualité des informations fournies. Les leaders de l’industrie et les chercheurs en IA reconnaissent l’importance de ce changement, soulignant la nécessité de fournir aux LLM un contexte complet pour résoudre efficacement les tâches. L’ingénierie contextuelle implique l’art et la science de combler le contexte avec les bonnes informations, permettant aux modèles de prendre des décisions éclairées.
L’argument central est que l’échec de la plupart des agents intelligents provient d’une déficience contextuelle plutôt que d’une défaillance du modèle. Cette affirmation redéfinit le défi fondamental de l’ingénierie de l’IA, déplaçant l’attention du réglage du modèle vers le développement de systèmes de support d’informations. Comprendre et maîtriser l’ingénierie contextuelle est devenu une condition préalable à la création d’applications d’IA fiables et robustes.
Définir l’Ingénierie Contextuelle
L’ingénierie contextuelle n’est pas simplement une version améliorée de l’ingénierie d’invite ; c’est une discipline d’ingénierie unique au niveau du système axée sur la création d’un système de diffusion d’informations dynamique, plutôt que de simplement optimiser l’entrée de texte.
L’ingénierie contextuelle peut être définie comme une discipline d’ingénierie axée sur la conception et la construction de systèmes dynamiques qui fournissent aux LLM les informations et les outils nécessaires pour effectuer correctement les tâches, dans le bon format et au bon moment.
Composants clés :
- "Conception et construction de systèmes dynamiques": Cela souligne que l’ingénierie contextuelle est une activité d’ingénierie, axée sur l’architecture du système plutôt que sur le simple libellé. Le contexte est la sortie d’un système qui s’exécute avant l’appel LLM principal. Les ingénieurs doivent créer des pipelines de données, des modules de mémoire et des mécanismes de récupération d’informations pour préparer la mémoire de travail du LLM.
- "Informations et outils corrects": englobe les faits, les données, le contenu de la base de connaissances (via RAG) et les préférences de l’utilisateur. Les outils font référence à des capacités telles que les interfaces API, les fonctions ou les requêtes de base de données. Fournir à la fois des connaissances et des capacités est fondamental pour les tâches complexes.
- "Format correct, au bon moment": Souligne l’importance de la présentation de l’information et du timing. Un résumé concis est souvent mieux que des données brutes, et un schéma d’outil clair est plus efficace que des instructions vagues. Fournir un contexte à la demande est crucial pour éviter de distraire le modèle avec des informations non pertinentes.
- "Effectuer la tâche de manière fiable": C’est l’objectif ultime de l’ingénierie contextuelle. Il transforme les applications d’IA en systèmes fiables qui peuvent produire systématiquement des sorties de haute qualité. Avec une gestion précise du contexte, les sorties deviennent plus cohérentes, réduisent les hallucinations et prennent en charge les flux de travail d’agent intelligent complexes et à long cycle.
L’évolution de l’Ingénierie d’Invite à l’Ingénierie Contextuelle
Bien que l’ingénierie contextuelle et l’ingénierie d’invite visent à optimiser la sortie LLM, elles diffèrent en termes de portée, de nature et d’objectifs. Une comparaison au niveau du système met en évidence ces différences :
- Portée: L’ingénierie d’invite se concentre sur l’optimisation des interactions uniques ou des chaînes de texte, tandis que l’ingénierie contextuelle se concentre sur l’ensemble de l’écosystème de l’information, couvrant l’ensemble du cycle de vie de la tâche.
- Dynamisme: Les invites sont généralement statiques, tandis que le contexte est généré dynamiquement en fonction de la tâche et évolue au cours de l’interaction.
- Composition des entrées: Les ingénieurs d’invite construisent des entrées autour des requêtes des utilisateurs, tandis que les ingénieurs contextuels considèrent les requêtes des utilisateurs comme faisant partie d’un "package de contexte" plus large qui comprend les instructions du système, les documents extraits, les sorties d’outils et l’historique des conversations.
- Analogie: Si les invites sont comme une seule ligne dans une pièce de théâtre, le contexte est tout le décor, l’histoire de fond et le scénario du film, fournissant ensemble profondeur et signification.
Le tableau ci-dessous compare en outre les deux :
Ingénierie d’Invite vs. Ingénierie Contextuelle
Dimension | Ingénierie d’Invite | Ingénierie Contextuelle |
---|---|---|
Portée | Interaction unique, chaîne d’entrée unique | Flux de travail d’agent intelligent complet, écosystème d’informations complet |
Nature | Statique ou semi-statique, basé sur des modèles | Dynamique, assemblé en temps réel, évolue avec la tâche |
Objectif | Guider le LLM pour donner une réponse de haute qualité | Donner aux LLM les moyens d’effectuer des tâches complexes de manière fiable et continue |
Produit de Base | Modèles d’invite optimisés, ensembles d’instructions | Pipelines de données, systèmes RAG, modules de mémoire, gestionnaires d’état |
Compétences de Base | Linguistique, raisonnement logique, conception d’instructions | Architecture du système, ingénierie des données, développement de logiciels |
Analogie de Base | Poser une question précise | Construire une bibliothèque complète pour un chercheur |
Redéfinir l’Ingénierie de l’IA
Ce passage de l’ingénierie d’invite à l’ingénierie contextuelle remodèle le rôle des ingénieurs en IA. L’ingénierie d’invite se concentre sur le perfectionnement des chaînes d’entrée, nécessitant des compétences en linguistique et en logique. Toutefois, lorsque la tâche consiste à construire des systèmes qui assemblent dynamiquement ces entrées à partir de bases de données, d’API et de mémoire, les compétences de base se déplacent vers l’ingénierie logicielle et l’architecture du système.
Les frameworks comme LangChain et LlamaIndex sont populaires car ils prennent en charge l’ingénierie contextuelle, offrant des modèles architecturaux pour la construction de systèmes d’assemblage de contexte dynamique, tels que les Chaînes, les Graphes et les Agents.
L’essor de l’ingénierie contextuelle marque un passage dans le développement de l’IA, d’un domaine de niche centré sur les modèles à une discipline d’ingénierie logicielle dominante. Le principal défi n’est pas seulement le modèle lui-même, mais l’ensemble de la pile d’applications construite autour de lui.
Contexte : Dissection et Principes
Cette section détaille les composants du "contexte" et décrit les principes d’une gestion efficace.
Déconstruire la Fenêtre de Contexte
La fenêtre de contexte est l’ensemble des informations que le modèle peut "voir" ou "se souvenir" lors de la génération d’une réponse. Un "package de contexte" complet est la somme de toutes les informations fournies.
- Instructions/Invite Système: Cette couche de base définit le comportement du modèle, définissant son rôle, son style, ses règles, ses contraintes et ses objectifs.
- Invite Utilisateur: La question directe ou l’instruction de tâche qui déclenche l’agent intelligent.
- Historique des Conversations/Mémoire à Court Terme: Les échanges précédents fournissent un contexte direct, géré par l’élagage ou la synthèse en raison des limitations de la fenêtre de contexte.
- Mémoire à Long Terme: Une base de connaissances persistante qui enregistre les informations apprises des interactions, telles que les préférences de l’utilisateur, les résumés de projet ou les faits explicitement indiqués à retenir.
- Informations Récupérées/RAG: Pour surmonter les coupures de connaissances et garantir des réponses basées sur des faits, le système récupère dynamiquement les informations pertinentes provenant de sources de connaissances externes.
- Outils Disponibles: Définit les schémas et les descriptions des fonctions appelables ou des outils intégrés, donnant au modèle le pouvoir d’agir, pas seulement de savoir.
- Sorties d’Outils: Les résultats des appels d’outils doivent être réinjectés dans le contexte pour que le modèle puisse les utiliser dans le raisonnement et les actions ultérieurs.
- Schéma de Sortie Structurée: Définit le format de sortie attendu (comme le Schéma JSON) pour guider les résultats structurés et prévisibles.
Le Framework "LLM en tant que Système d’Exploitation"
Cette analogie fournit un framework théorique solide pour comprendre et pratiquer la gestion du contexte.
LLM en tant que CPU, Fenêtre de Contexte en tant que RAM: Cette analogie positionne la fenêtre de contexte comme une ressource limitée et précieuse. L’ingénierie contextuelle est comme la gestion du système d’exploitation, chargeant efficacement les bonnes informations au bon moment dans la mémoire de travail.
Contexte du Noyau vs. Contexte de l’Utilisateur: Ce framework divise le contexte en deux couches ; similaire à l’espace noyau et à l’espace utilisateur.
- Contexte du Noyau: Représente l’état géré, variable et persistant de l’agent intelligent. Il comprend les blocs de mémoire de base et les systèmes de fichiers que le LLM peut observer, mais ne modifier que par le biais d’"appels système" contrôlés.
- Contexte de l’Utilisateur: Représente l’"espace utilisateur" ou le tampon de message, où les interactions dynamiques se produisent. Il comprend les messages des utilisateurs, les réponses de l’assistant et les appels à des outils "programme utilisateur" non privilégiés.
Appels Système et Outils Personnalisés: Cette distinction clarifie la façon dont l’agent interagit avec son état interne et le monde extérieur. Les appels système modifient le contexte du noyau, modifiant l’état persistant de l’agent, tandis que les outils personnalisés apportent des informations externes dans le contexte de l’utilisateur.
Principes Directeurs de l’Ingénierie Contextuelle
L’ingénierie contextuelle efficace suit des principes de base, dérivés des praticiens, pour construire des systèmes d’agent intelligent fiables.
- Contexte Continu et Complet: Également connu sous le nom de "Tout Voir", ce principe exige que l’agent ait accès à l’intégralité de son historique opérationnel, y compris les interactions précédentes des utilisateurs, les sorties d’appel d’outils, les processus de pensée internes et les résultats intermédiaires.
- Éviter le Parallélisme Non Coordonné: Permettre à plusieurs sous-agents ou sous-tâches de travailler en parallèle sans un contexte partagé et continuellement mis à jour conduit presque inévitablement à des incohérences de sortie, des objectifs conflictuels et des échecs.
- Contexte Dynamique et Évolutif: Le contexte ne doit pas être un bloc d’informations statique. Il doit être assemblé et évoluer dynamiquement en fonction de l’avancement de la tâche, acquérant ou mettant à jour les informations au moment de l’exécution.
- Couverture Contextuelle Complète: Le modèle doit recevoir toutes les informations dont il pourrait avoir besoin, et pas seulement la dernière question de l’utilisateur. L’ensemble du package d’entrée (instructions, données, historique, etc.) doit être soigneusement conçu.
Stratégies de Gestion du Contexte :
Écrire : Conserver le Contexte :
Cela implique de stocker des informations au-delà de la fenêtre de contexte immédiate pour une utilisation future, en développant les capacités de mémoire de l’agent.
- Blocs-notes: Utilisés pour stocker la mémoire à court terme au sein de la session.
- Systèmes de Mémoire: Utilisés pour construire une mémoire à long terme sur plusieurs sessions.
Sélectionner : Récupérer le Contexte :
Cela implique d’extraire les bonnes informations du stockage externe dans la fenêtre de contexte au bon moment.
- Sélectionner dans la Mémoire/Blocs-notes: L’agent doit être capable d’interroger efficacement sa mémoire et ses blocs-notes conservés lorsqu’il a besoin de se souvenir des connaissances passées.
- Sélectionner dans les Outils: Lorsque l’agent dispose de nombreux outils disponibles, il est efficace d’appliquer des techniques RAG aux descriptions des outils elles-mêmes, en récupérant et en fournissant dynamiquement uniquement les outils les plus pertinents en fonction de la tâche actuelle.
- Sélectionner dans la Connaissance: C’est la fonction principale de la Génération Augmentée de Récupération (RAG), acquérant dynamiquement des informations factuelles à partir de bases de connaissances externes pour améliorer les capacités de réponse du modèle.
Compression : Optimisation du Contexte :
Cela implique de réduire le nombre de jetons utilisés dans le contexte tout en conservant les informations de base.
- Synthèse: Utiliser le LLM pour synthétiser de longs historiques de conversation, des documents ou des sorties d’outils, en extrayant les informations clés.
- Élagage: Utiliser des règles heuristiques pour réduire le contexte, comme simplement supprimer les premiers tours de dialogue lorsque l’historique de la conversation est trop long.
Isolation : Partitionnement du Contexte :
Cela implique de décomposer le contexte en différentes parties pour améliorer la concentration du model et gérer la complexité de la tâche.
- Systèmes Multi-agents: Les vastes tâches peuvent être réparties entre plusieurs sous-agents, chacun avec son propre contexte, ses outils et ses instructions dédiés et isolés.
- Environnements Sandbox: Les opérations qui consomment un grand nombre de jetons peuvent être exécutées dans un environnement isolé, ne renvoyant que les principaux résultats finaux au contexte du LLM principal.
Architectures de Mémoire Avancées
La mémoire est la clé pour construire des agents intelligents capables d’apprendre et de s’adapter. Les composants clés incluent la mémoire à court terme via des tampons d’historique de dialogue et des blocs-notes, et la mémoire à long terme pour la persistance et la personnalisation.
Techniques de Mise en Œuvre :
- Génération Automatisée de Mémoire : Le système peut automatiquement générer et stocker des souvenirs en fonction des interactions de l’utilisateur.
- Mécanismes de Réflexion : L’agent peut autoréfléchir sur son comportement et ses résultats après avoir terminé des tâches, synthétisant les leçons apprises en nouveaux souvenirs.
- Synthèse de Dialogue : Synthétiser régulièrement les conversations passées et stocker les synthèses dans le cadre de la mémoire à long terme.
Mémoire Structurée (Graphes de Connaissances Temporelles) : Une architecture de mémoire plus avancée qui stocke non seulement les faits, mais aussi les relations entre les faits et les horodatages pour chaque information.
Génération Augmentée de Récupération (RAG) : La Pierre Angulaire de l’Ingénierie Contextuelle
RAG est une technique de base pour "sélectionner" des connaissances externes dans l’ingénierie contextuelle, reliant les LLM à des bases de connaissances externes. Un système RAG typique comporte trois étapes :
- Indexation: Les documents sont divisés en blocs sémantiques, puis convertis en vecteurs de grande dimension à l’aide d’un modèle d’incorporation. Ces vecteurs et textes sources sont stockés dans la base de données vectorielle.
- Récupération: L’utilisateur convertit une requête en un vecteur avec le même modèle d’incorporation et recherche dans la base de données vectorielle d’autres vecteurs proches avec des requêtes similaires.
- Génération: Le système combine la requête originale et les blocs de texte associés dans une invite, puis la soumet au LLM pour générer une réponse appropriée.
Stratégies Avancées de Récupération et de Classement
L’architecture RAG de base a souvent besoin de stratégies plus complexes pour améliorer la qualité de la récupération dans le monde réel. Combiner la recherche sémantique avec des index de mots clés et le classement est essentiel pour améliorer la qualité de la recherche. La récupération d’informations contextuelles d’Anthropic améliorera le contexte des LLM.
- Recherche Hybride: Combine la recherche sémantique (basée sur des vecteurs) et la recherche par mots clés pour exploiter les forces complémentaires.
- Récupération Contextuelle: Utilise un LLM pour générer un court résumé du contexte de chaque bloc de texte.
- Reclassement: Ajoute une étape de reclassement, en utilisant un modèle plus puissant pour reclasser les résultats en fonction de la pertinence.
RAG vs. Ajustement Fin : Un Framework de Décision Stratégique
Choisir entre RAG et l’ajustement fin est une décision clé. Le choix dépend des exigences du projet.
Avantages de RAG:
- Adapté à l’intégration de connaissances en temps réel
- Réduit les hallucinations en fournissant des faits vérifiables
- Permet aux entreprises de conserver les données propriétaires dans des bases de données internes sécurisées
Avantages de l’Ajustement Fin:
- Idéal pour enseigner à un model un nouveau comportement, un style de discours ou une terminologie spécialisée
- Peut aligner la sortie du modèle sur l’image de marque de l’organisation
Approches Hybrides: Afin d’obtenir les meilleures performances avec les modèles, vous devez utiliser à la fois l’ajustement fin pour les performances et RAG pour la précision.
Optimisation et Filtrage du Contexte
Même en utilisant des mécanismes de récupération puissants, en gérant la fenêtre de contexte et en évitant les modes de défaillance courants, vous rencontrerez toujours des erreurs.
Modes de défaillance courants :
- Empoisonnement du Contexte : lorsqu’une erreur apparemment factuelle est présentée, elle corrompt l’ensemble du système à partir de ce point.
- Distraction du Contexte : Les modèles sont distraits lorsqu’ils sont présentés avec des informations non pertinentes.
- Confusion du Contexte : Les informations contextuelles peuvent être accablantes pour le modèle, l’éloignant de la bonne réponse.
- Conflit de Contexte : Les modèles sont confus avec des informations contradictoires et peuvent produire une réponse contradictoire.
Solutions:
Les ingénieurs doivent adopter des techniques de filtrage pour atténuer ces défaillances. S’assurer que la mémoire de travail du modèle est pleine d’informations très pertinentes et complètement optimisées devient essentiel pour la pratique et la théorie.
L’Ingénierie Contextuelle en Pratique : Études de Cas
L’analyse de différentes applications permet de mieux comprendre la valeur et la mise en œuvre de l’ingénierie contextuelle.
Assistants de Programmation de l’IA
- Le Problème : Les premières tentatives de programmation de l’IA étaient souvent chaotiques, s’appuyant sur des invites vagues avec peu de compréhension de la base de code plus importante.
- La Solution : Traiter la documentation du projet, les directives de code, les modèles de conception et les exigences comme n’importe quelle ressource d’ingénierie.
Recherche d’Entreprise et Gestion des Connaissances
- Le Problème: Les moteurs de recherche d’entreprise traditionnels s’appuient sur la correspondance des mots clés, sans comprendre l’intention de l’utilisateur, le rôle ou la raison de sa recherche.
- La Solution: Construire des systèmes de recherche intelligents en utilisant le contexte pour comprendre chaque recherche.
Assistance Client Automatisée
- Le Problème: Les LLM généraux ne connaissent pas les spécificités des produits, les politiques de retour ou l’historique des clients, ce qui conduit à des réponses inexactes ou inutiles.
- La Solution: Utiliser des chatbots basés sur RAG, des systèmes qui récupèrent des informations dans la base de connaissances de l’entreprise, pour garantir une assistance précise, personnalisée et à jour.
Moteurs de Recommandation Personnalisés
- Le Problème: Les systèmes de recommandation traditionnels ont du mal à saisir l’intention immédiate et spécifique des utilisateurs, ce qui entraîne des recommandations génériques.
- La Solution: L’ingénierie contextuelle utilise RAG pour rendre l’expérience plus conversationnelle.
Atténuer les Défauts Fondamentaux des Grands Modèles de Langage
L’ingénierie contextuelle est un moyen essentiel de remédier à deux lacunes fondamentales des LLM : les hallucinations et la coupure de connaissances.
Lutter Contre les Hallucinations
Le Problème: Lorsque les LLM sont incertains ou manquent de connaissances pertinentes, ils ont tendance à fabriquer des informations plausibles mais fausses.
La Solution: L’ingénierie Contextuelle, en particulier RAG, sont les stratégies les plus efficaces.
- Fournir une Base Factuelle: En fournissant des documents vérifiables provenant d’une source fiable pendant la réponse, les hallucinations peuvent être évitées efficacement.
- Honnêteté "Je ne sais pas.": Afin d’être transparent, indiquer aux modèles d’afficher "Je ne sais pas" lorsqu’aucune information n’est disponible.