L'IA conversationnelle a parcouru un long chemin ces dernières années grâce aux développements rapides de l'IA générative, en particulier aux améliorations des performances des grands modèles de langage (LLM) introduites par des techniques de formation telles que le réglage fin des instructions et l'apprentissage par renforcement à partir des commentaires humains. Lorsqu'ils y sont correctement invités, ces modèles peuvent mener des conversations cohérentes sans aucune donnée de formation spécifique à une tâche. Cependant, ils ne peuvent pas généraliser correctement aux questions spécifiques à l’entreprise car, pour générer une réponse, ils s’appuient sur les données publiques auxquelles ils ont été exposés lors de la pré-formation. Ces données manquent souvent des connaissances spécialisées contenues dans les documents internes disponibles dans les entreprises modernes, qui sont généralement nécessaires pour obtenir des réponses précises dans des domaines tels que la recherche pharmaceutique, les enquêtes financières et le support client.
Pour créer des assistants IA capables d’avoir des discussions fondées sur des connaissances spécialisées de l’entreprise, nous devons connecter ces LLM puissants mais génériques aux bases de connaissances internes des documents. Cette méthode d'enrichissement du contexte de génération LLM avec des informations extraites de vos sources de données internes est appelée Retrieval Augmented Generation (RAG) et produit des assistants spécifiques au domaine et plus fiables, comme le montre Génération de récupération augmentée pour les tâches PNL à forte intensité de connaissances. Un autre facteur qui explique la popularité de RAG est sa facilité de mise en œuvre et l’existence de solutions de recherche vectorielles matures, telles que celles proposées par Amazone Kendra (voir Amazon Kendra lance l'API de récupération) et Service Amazon OpenSearch (voir Recherche k-Nearest Neighbor (k-NN) dans Amazon OpenSearch Service), entre autres.
Cependant, le modèle de conception RAG populaire avec recherche sémantique ne peut pas répondre à tous les types de questions possibles sur les documents. Cela est particulièrement vrai pour les questions qui nécessitent un raisonnement analytique sur plusieurs documents. Par exemple, imaginez que vous planifiez la stratégie d’une société d’investissement pour l’année prochaine. Une étape essentielle serait d’analyser et de comparer les résultats financiers et les risques potentiels des entreprises candidates. Cette tâche consiste à répondre à des questions de raisonnement analytique. Par exemple, la requête « Donnez-moi les 5 entreprises ayant généré les revenus les plus élevés au cours des 2 dernières années et identifiez leurs principaux risques » nécessite plusieurs étapes de raisonnement, dont certaines peuvent utiliser la recherche sémantique, tandis que d'autres nécessitent des capacités analytiques.
Dans cet article, nous montrons comment concevoir un assistant documentaire intelligent capable de répondre à des questions analytiques et de raisonnement en plusieurs étapes en trois parties. Dans la première partie, nous passons en revue le modèle de conception RAG et ses limites sur les questions analytiques. Nous vous présentons ensuite une architecture plus polyvalente qui surmonte ces limitations. La partie 1 vous aide à approfondir le pipeline d'extraction d'entités utilisé pour préparer les données structurées, qui est un ingrédient clé pour répondre aux questions analytiques. La troisième partie vous explique comment utiliser Socle amazonien Des LLM pour interroger ces données et créer un agent LLM qui améliore RAG avec des capacités analytiques, vous permettant ainsi de créer des assistants de documents intelligents capables de répondre à des questions complexes spécifiques à un domaine sur plusieurs documents.
Partie 1 : Limites de RAG et aperçu de la solution
Dans cette section, nous passons en revue le modèle de conception RAG et discutons de ses limites sur les questions analytiques. Nous présentons également une architecture plus polyvalente qui surmonte ces limitations.
Présentation de RAG
Les solutions RAG s'inspirent de apprentissage de la représentation et de recherche sémantique des idées qui ont été progressivement adoptées dans les problèmes de classement (par exemple, recommandation et recherche) et les tâches de traitement du langage naturel (NLP) depuis 2010.
L’approche populaire utilisée aujourd’hui est composée de trois étapes :
- Une tâche de traitement par lots hors ligne ingère des documents à partir d'une base de connaissances d'entrée, les divise en morceaux, crée une intégration pour chaque morceau afin de représenter sa sémantique à l'aide d'un modèle d'intégration pré-entraîné, tel que Titan d'Amazonie modèles d'intégration, puis utilise ces intégrations comme entrée pour créer un index de recherche sémantique.
- Lorsque vous répondez à une nouvelle question en temps réel, la question d'entrée est convertie en une intégration, qui est utilisée pour rechercher et extraire les morceaux de documents les plus similaires à l'aide d'une métrique de similarité, telle que la similarité cosinus, et d'un algorithme approximatif des voisins les plus proches. La précision de la recherche peut également être améliorée grâce au filtrage des métadonnées.
- Une invite est construite à partir de la concaténation d'un message système avec un contexte formé des morceaux de documents pertinents extraits à l'étape 2 et de la question d'entrée elle-même. Cette invite est ensuite présentée à un modèle LLM pour générer la réponse finale à la question à partir du contexte.
Avec le bon modèle d'intégration sous-jacent, capable de produire des représentations sémantiques précises des morceaux de documents d'entrée et des questions d'entrée, et un module de recherche sémantique efficace, cette solution est capable de répondre aux questions qui nécessitent de récupérer des informations existantes dans une base de données de documents. Par exemple, si vous avez un service ou un produit, vous pouvez commencer par indexer sa section FAQ ou sa documentation et disposer d'une première IA conversationnelle adaptée à votre offre spécifique.
Limites de RAG basées sur la recherche sémantique
Bien que RAG soit un composant essentiel des assistants d'IA modernes spécifiques à un domaine et un point de départ judicieux pour construire une IA conversationnelle autour d'une base de connaissances spécialisée, il ne peut pas répondre aux questions qui nécessitent d'analyser, de comparer et de raisonner sur tous les documents de votre base de connaissances. simultanément, surtout lorsque l’augmentation repose uniquement sur la recherche sémantique.
Pour comprendre ces limites, reprenons l’exemple de la décision où investir sur la base des rapports financiers. Si nous devions utiliser RAG pour discuter de ces rapports, nous pourrions poser des questions telles que « Quels sont les risques auxquels l'entreprise X est confrontée en 2022 » ou « Quel est le chiffre d'affaires net de l'entreprise Y en 2022 ? Pour chacune de ces questions, le vecteur d'intégration correspondant, qui code la signification sémantique de la question, est utilisé pour récupérer les K premiers morceaux de documents sémantiquement similaires disponibles dans l'index de recherche. Ceci est généralement accompli en employant une solution approximative des voisins les plus proches telle que FAISS, NMSLIB, pgvector ou autres, qui s'efforcent de trouver un équilibre entre vitesse de récupération et rappel pour obtenir des performances en temps réel tout en conservant une précision satisfaisante.
Cependant, l’approche précédente ne peut pas répondre avec précision aux questions analytiques de tous les documents, telles que « Quelles sont les 5 principales entreprises ayant les revenus nets les plus élevés en 2022 ? »
En effet, la recherche sémantique tente de trouver les K morceaux de documents les plus similaires à la question d'entrée. Mais comme aucun des documents ne contient de résumés complets des revenus, il renverra des morceaux de documents contenant simplement des mentions de « revenus nets » et éventuellement de « 2022 », sans remplir la condition essentielle de se concentrer sur les entreprises ayant les revenus les plus élevés. Si nous présentons ces résultats de récupération à un LLM comme contexte pour répondre à la question d'entrée, il peut formuler une réponse trompeuse ou refuser de répondre, car les informations correctes requises sont manquantes.
Ces limitations sont inhérentes à la conception, car la recherche sémantique n'effectue pas une analyse approfondie de tous les vecteurs d'intégration pour trouver les documents pertinents. Au lieu de cela, il utilise des méthodes approximatives du plus proche voisin pour maintenir une vitesse de récupération raisonnable. Une stratégie clé pour l'efficacité de ces méthodes consiste à segmenter l'espace d'intégration en groupes lors de l'indexation. Cela permet d'identifier rapidement quels groupes peuvent contenir des incorporations pertinentes lors de la récupération, sans avoir besoin de comparaisons par paires. De plus, même les techniques traditionnelles des plus proches voisins comme KNN, qui analysent tous les documents, ne calculent que des mesures de distance de base et ne conviennent pas aux comparaisons complexes nécessaires au raisonnement analytique. Par conséquent, RAG avec recherche sémantique n’est pas conçu pour répondre à des questions qui impliquent un raisonnement analytique dans tous les documents.
Pour surmonter ces limitations, nous proposons une solution qui combine RAG avec l'extraction de métadonnées et d'entités, les requêtes SQL et les agents LLM, comme décrit dans les sections suivantes.
Surmonter les limitations de RAG avec les agents de métadonnées, SQL et LLM
Examinons plus en profondeur une question sur laquelle RAG échoue, afin de pouvoir retracer le raisonnement nécessaire pour y répondre efficacement. Cette analyse devrait nous orienter vers la bonne approche qui pourrait compléter RAG dans la solution globale.
Considérez la question : « Quelles sont les 5 entreprises ayant les revenus les plus élevés en 2022 ?
Pour pouvoir répondre à cette question, il faudrait :
- Identifiez les revenus de chaque entreprise.
- Filtrez pour conserver les revenus de 2022 pour chacun d’eux.
- Triez les revenus par ordre décroissant.
- Découpez les 5 principaux revenus à côté des noms d’entreprise.
Typiquement, ces opérations analytiques sont effectuées sur des données structurées, à l'aide d'outils tels que des pandas ou des moteurs SQL. Si nous avions accès à une table SQL contenant les colonnes company
, revenue
et une year
, nous pourrions facilement répondre à notre question en exécutant une requête SQL, similaire à l'exemple suivant :
SELECT company, revenue FROM table_name WHERE year = 2022 ORDER BY revenue DESC LIMIT 5;
Le stockage de métadonnées structurées dans une table SQL contenant des informations sur les entités pertinentes vous permet de répondre à de nombreux types de questions analytiques en écrivant la requête SQL correcte. C'est pourquoi nous complétons RAG dans notre solution avec un module d'interrogation SQL en temps réel sur une table SQL, peuplée de métadonnées extraites lors d'un processus hors ligne.
Mais comment pouvons-nous mettre en œuvre et intégrer cette approche à une IA conversationnelle basée sur LLM ?
Il y a trois étapes pour pouvoir ajouter un raisonnement analytique SQL :
- Extraction de métadonnées – Extraire les métadonnées de documents non structurés dans une table SQL
- Texte en SQL – Formuler avec précision des requêtes SQL à partir de questions d’entrée à l’aide d’un LLM
- Sélection d'outil – Identifiez si une question doit recevoir une réponse à l’aide de RAG ou d’une requête SQL
Pour mettre en œuvre ces étapes, nous reconnaissons d'abord que l'extraction d'informations à partir de documents non structurés est une tâche de PNL traditionnelle pour laquelle les LLM se montrent prometteurs en atteignant une grande précision grâce à un apprentissage zéro ou en quelques coups. Deuxièmement, la capacité de ces modèles à générer des requêtes SQL à partir du langage naturel est prouvée depuis des années, comme le montre le 2020 communiqué of Amazon QuickSightQ. Enfin, la sélection automatique du bon outil pour une question spécifique améliore l'expérience utilisateur et permet de répondre à des questions complexes grâce à un raisonnement en plusieurs étapes. Pour implémenter cette fonctionnalité, nous approfondissons les agents LLM dans une section ultérieure.
Pour résumer, la solution que nous proposons est composée des éléments de base suivants :
- Récupération de recherche sémantique pour augmenter le contexte de génération
- Extraction et interrogation de métadonnées structurées avec SQL
- Un agent capable d'utiliser les bons outils pour répondre à une question
Vue d'ensemble de la solution
Le diagramme suivant représente une architecture simplifiée de la solution. Il vous aide à identifier et à comprendre le rôle des composants principaux et la manière dont ils interagissent pour implémenter le comportement complet de l'assistant LLM. La numérotation correspond à l'ordre des opérations lors de la mise en œuvre de cette solution.
En pratique, nous avons implémenté cette solution comme indiqué dans l’architecture détaillée suivante.
Pour cette architecture, nous proposons une implémentation sur GitHub, avec des composants faiblement couplés où le backend (5), les pipelines de données (1, 2, 3) et le front-end (4) peuvent évoluer séparément. Il s'agit de simplifier la collaboration entre les compétences lors de la personnalisation et de l'amélioration de la solution pour la production.
Déployez la solution
Pour installer cette solution dans votre compte AWS, procédez comme suit :
- Cloner le référentiel sur GitHub.
- Installer le back-end Kit de développement AWS Cloud (AWSCDK) appli:
- Ouvrez le
backend
dossier. - Courir
npm install
pour installer les dépendances. - Si vous n'avez jamais utilisé le AWS CDK dans le compte et la région actuels, exécutez amorçage comprenant
npx cdk bootstrap
. - Courir
npx cdk deploy
pour déployer la pile.
- Ouvrez le
- Éventuellement, exécutez le
streamlit-ui
comme suit:- Nous vous recommandons de cloner ce référentiel dans un Amazon SageMakerStudio environnement. Pour plus d'informations, reportez-vous à Intégration au domaine Amazon SageMaker à l'aide de la configuration rapide.
- À l'intérieur de l'
frontend/streamlit-ui
dossier, exécutezbash run-streamlit-ui.sh
. - Choisissez le lien au format suivant pour ouvrir la démo :
https://{domain_id}.studio.{region}.sagemaker.aws/jupyter/default/proxy/{port_number}/
.
- Enfin, vous pouvez exécuter le Amazon Sage Maker pipeline défini dans le
data-pipelines/04-sagemaker-pipeline-for-documents-processing.ipynb
notebook pour traiter les documents PDF d'entrée et préparer la table SQL et l'index de recherche sémantique utilisés par l'assistant LLM.
Dans le reste de cet article, nous nous concentrons sur l'explication des composants et des choix de conception les plus importants, dans le but, nous l'espérons, de vous inspirer lors de la conception de votre propre assistant IA sur une base de connaissances interne. Nous supposons que les composants 1 et 4 sont simples à comprendre et nous nous concentrons sur les composants principaux 2, 3 et 5.
Partie 2 : Pipeline d'extraction d'entités
Dans cette section, nous approfondissons le pipeline d'extraction d'entités utilisé pour préparer des données structurées, qui est un ingrédient clé pour répondre aux questions analytiques.
Extraction de texte
Les documents sont généralement stockés au format PDF ou sous forme d'images numérisées. Ils peuvent être constitués de paragraphes simples ou de tableaux complexes et contenir du texte numérique ou manuscrit. Pour extraire correctement les informations, nous devons transformer ces documents bruts en texte brut, tout en préservant leur structure d'origine. Pour ce faire, vous pouvez utiliser Extrait d'Amazon, qui est un service d'apprentissage automatique (ML) qui fournit des API matures pour l'extraction de texte, de tableaux et de formulaires à partir d'entrées numériques et manuscrites.
Dans le composant 2, nous extrayons le texte et les tableaux comme suit :
- Pour chaque document, nous appelons Amazon Textract pour extraire le texte et les tableaux.
- Nous utilisons ce qui suit Script Python pour recréer des tables en tant que pandas DataFrames.
- Nous consolidons les résultats dans un seul document et insérons des tableaux sous forme de démarque.
Ce processus est décrit par l'organigramme suivant et démontré concrètement dans notebooks/03-pdf-document-processing.ipynb
.
Extraction et interrogation d'entités à l'aide de LLM
Pour répondre efficacement aux questions analytiques, vous devez extraire les métadonnées et entités pertinentes de la base de connaissances de votre document vers un format de données structurées accessible. Nous suggérons d'utiliser SQL pour stocker ces informations et récupérer les réponses en raison de sa popularité, de sa facilité d'utilisation et de son évolutivité. Ce choix bénéficie également de la capacité des modèles de langage éprouvés à générer des requêtes SQL à partir du langage naturel.
Dans cette section, nous approfondissons les composants suivants qui permettent de poser des questions analytiques :
- Un processus par lots qui extrait des données structurées à partir de données non structurées à l'aide de LLM
- Un module en temps réel qui convertit les questions en langage naturel en requêtes SQL et récupère les résultats d'une base de données SQL
Vous pouvez extraire les métadonnées pertinentes pour prendre en charge les questions analytiques comme suit :
- Définissez un schéma JSON pour les informations que vous devez extraire, qui contient une description de chaque champ et son type de données, et inclut des exemples de valeurs attendues.
- Pour chaque document, invitez un LLM avec le schéma JSON et demandez-lui d'extraire les données pertinentes avec précision.
- Lorsque la longueur du document dépasse la longueur du contexte et pour réduire le coût d'extraction avec les LLM, vous pouvez utiliser la recherche sémantique pour récupérer et présenter les morceaux de documents pertinents au LLM lors de l'extraction.
- Analysez la sortie JSON et validez l'extraction LLM.
- Vous pouvez éventuellement sauvegarder les résultats sur Amazon S3 sous forme de fichiers CSV.
- Chargez-le dans la base de données SQL pour une requête ultérieure.
Ce processus est géré par l'architecture suivante, où les documents au format texte sont chargés avec un script Python qui s'exécute dans un Traitement d'Amazon SageMaker travail pour effectuer l’extraction.
Pour chaque groupe d'entités, nous construisons dynamiquement une invite qui inclut une description claire de la tâche d'extraction d'informations, ainsi qu'un schéma JSON qui définit le résultat attendu et inclut les morceaux de document pertinents comme contexte. Nous ajoutons également quelques exemples d'entrée et de sortie correcte pour améliorer les performances d'extraction avec un apprentissage en quelques étapes. Ceci est démontré dans notebooks/05-entities-extraction-to-structured-metadata.ipynb
.
Partie 3 : Créer un assistant documentaire agent avec Amazon Bedrock
Dans cette section, nous montrons comment utiliser les LLM d'Amazon Bedrock pour interroger des données et créer un agent LLM qui améliore RAG avec des capacités analytiques, vous permettant ainsi de créer des assistants de documents intelligents capables de répondre à des questions complexes spécifiques à un domaine sur plusieurs documents. Vous pouvez vous référer au Fonction Lambda sur GitHub pour la mise en œuvre concrète de l'agent et des outils décrits dans cette partie.
Formuler des requêtes SQL et répondre aux questions analytiques
Maintenant que nous disposons d'un magasin de métadonnées structuré avec les entités pertinentes extraites et chargées dans une base de données SQL que nous pouvons interroger, la question qui reste est de savoir comment générer la bonne requête SQL à partir des questions d'entrée en langage naturel ?
Les LLM modernes sont efficaces pour générer du SQL. Par exemple, si vous faites une demande à l'Anthropic Claude LLM via Socle amazonien pour générer une requête SQL, vous verrez des réponses plausibles. Cependant, nous devons respecter quelques règles lors de l'écriture de l'invite pour obtenir des requêtes SQL plus précises. Ces règles sont particulièrement importantes pour les requêtes complexes afin de réduire les hallucinations et les erreurs de syntaxe :
- Décrivez la tâche avec précision dans l'invite
- Incluez le schéma des tables SQL dans l'invite, tout en décrivant chaque colonne de la table et en spécifiant son type de données
- Dites explicitement au LLM d'utiliser uniquement les noms de colonnes et les types de données existants
- Ajoutez quelques lignes des tables SQL
Vous pouvez également post-traiter la requête SQL générée à l'aide d'un linter tel que sqlfluff pour corriger le formatage, ou un analyseur tel que sqlglot pour détecter les erreurs de syntaxe et optimiser la requête. De plus, lorsque les performances ne répondent pas aux exigences, vous pouvez fournir quelques exemples dans l'invite pour orienter le modèle avec un apprentissage en quelques étapes vers la génération de requêtes SQL plus précises.
Du point de vue de la mise en œuvre, nous utilisons un AWS Lambda fonction pour orchestrer le processus suivant :
- Appelez un modèle Anthropic Claude dans Amazon Bedrock avec la question d'entrée pour obtenir la requête SQL correspondante. Ici, nous utilisons le Base de données SQL classe de LangChain pour ajouter des descriptions de schéma des tables SQL pertinentes et utiliser une invite personnalisée.
- Analysez, validez et exécutez la requête SQL sur le Édition compatible Amazon Aurora PostgreSQL base de données.
L'architecture de cette partie de la solution est mise en évidence dans le diagramme suivant.
Considérations de sécurité pour empêcher les attaques par injection SQL
Lorsque nous permettons à l’assistant IA d’interroger une base de données SQL, nous devons nous assurer que cela n’introduit pas de failles de sécurité. Pour y parvenir, nous proposons les mesures de sécurité suivantes pour prévenir les attaques par injection SQL :
- Appliquer les autorisations IAM de moindre privilège – Limitez l'autorisation de la fonction Lambda qui exécute les requêtes SQL à l'aide d'un Gestion des identités et des accès AWS (IAM) et le rôle qui suit la principe du moindre privilège. Dans ce cas, nous accordons un accès en lecture seule.
- Limiter l'accès aux données – Ne donnez accès qu’au strict minimum de tables et de colonnes pour empêcher les attaques de divulgation d’informations.
- Ajouter une couche de modération – Introduire une couche de modération qui détecte très tôt les tentatives d’injection rapide et empêche leur propagation au reste du système. Cela peut prendre la forme de filtres basés sur des règles, d'une comparaison de similarité avec une base de données d'exemples d'injection rapide connus ou d'un classificateur ML.
Récupération de recherche sémantique pour augmenter le contexte de génération
La solution que nous proposons utilise RAG avec recherche sémantique dans le composant 3. Vous pouvez implémenter ce module en utilisant bases de connaissances pour Amazon Bedrock. De plus, il existe une variété d'autres options pour implémenter RAG, telles que API de récupération Amazon Kendra, Base de données vectorielles Amazon OpenSearchet une Amazon Aurora PostgreSQL avec pgvector, entre autres. Le paquet open source aws-genai-llm-chatbot montre comment utiliser plusieurs de ces options de recherche vectorielle pour implémenter un chatbot alimenté par LLM.
Dans cette solution, comme nous avons besoin à la fois de requêtes SQL et de recherche vectorielle, nous avons décidé d'utiliser Amazon Aurora PostgreSQL avec le pgvecteur extension, qui prend en charge les deux fonctionnalités. Par conséquent, nous implémentons le composant RAG de recherche sémantique avec l’architecture suivante.
Le processus de réponse aux questions en utilisant l’architecture précédente se déroule en deux étapes principales.
Tout d'abord, un processus par lots hors ligne, exécuté en tant que tâche SageMaker Processing, crée l'index de recherche sémantique comme suit :
- Soit périodiquement, soit dès réception de nouveaux documents, une tâche SageMaker est exécutée.
- Il charge les documents texte d'Amazon S3 et les divise en morceaux qui se chevauchent.
- Pour chaque morceau, il utilise un modèle d'intégration Amazon Titan pour générer un vecteur d'intégration.
- Il utilise le PGVecteur de LangChain pour ingérer les intégrations, avec leurs morceaux de documents et leurs métadonnées, dans Amazon Aurora PostgreSQL et créer un index de recherche sémantique sur tous les vecteurs d'intégration.
Deuxièmement, en temps réel et pour chaque nouvelle question, nous construisons une réponse comme suit :
- La question est reçue par l'orchestrateur qui s'exécute sur une fonction Lambda.
- L'orchestrateur intègre la question avec le même modèle d'intégration.
- Il récupère les K morceaux de documents les plus pertinents de l'index de recherche sémantique PostgreSQL. Il utilise éventuellement le filtrage des métadonnées pour améliorer la précision.
- Ces morceaux sont insérés dynamiquement dans une invite LLM à côté de la question d'entrée.
- L'invite est présentée à Anthropic Claude sur Amazon Bedrock, pour lui demander de répondre à la question d'entrée en fonction du contexte disponible.
- Enfin, la réponse générée est renvoyée à l'orchestrateur.
Un agent capable d’utiliser des outils pour raisonner et agir
Jusqu'à présent dans cet article, nous avons discuté du traitement séparé des questions qui nécessitent un raisonnement RAG ou analytique. Cependant, de nombreuses questions du monde réel nécessitent les deux capacités, parfois en plusieurs étapes de raisonnement, afin de parvenir à une réponse finale. Pour répondre à ces questions plus complexes, nous devons introduire la notion d’agent.
Agents LLM, tels que le agents pour Amazon Bedrock, sont apparus récemment comme une solution prometteuse capable d'utiliser les LLM pour raisonner et s'adapter en utilisant le contexte actuel et pour choisir les actions appropriées parmi une liste d'options, qui présente un cadre général de résolution de problèmes. Comme discuté dans Agents autonomes propulsés par LLM, il existe plusieurs stratégies d'incitation et modèles de conception pour les agents LLM qui prennent en charge un raisonnement complexe.
L'un de ces modèles de conception est Reason and Act (ReAct), introduit dans ReAct : Synergiser le raisonnement et l'action dans les modèles de langage. Dans ReAct, l’agent prend en entrée un objectif qui peut être une question, identifie les informations manquantes pour y répondre et propose de manière itérative le bon outil pour collecter des informations en fonction des descriptions des outils disponibles. Après avoir reçu la réponse d'un outil donné, le LLM réévalue s'il dispose de toutes les informations nécessaires pour répondre pleinement à la question. Dans le cas contraire, il effectue une autre étape de raisonnement et utilise le même outil ou un autre pour recueillir plus d'informations, jusqu'à ce qu'une réponse finale soit prête ou qu'une limite soit atteinte.
Le diagramme de séquence suivant explique comment un agent ReAct travaille pour répondre à la question « Donnez-moi les 5 principales entreprises ayant généré les revenus les plus élevés au cours des 2 dernières années et identifiez les risques associés à la première. »
Les détails de la mise en œuvre de cette approche en Python sont décrits dans Agent LLM personnalisé. Dans notre solution, l'agent et les outils sont implémentés avec l'architecture partielle mise en évidence suivante.
Pour répondre à une question de saisie, nous utilisons les services AWS comme suit :
- Un utilisateur saisit sa question via une interface utilisateur, qui appelle une API sur Passerelle d'API Amazon.
- API Gateway envoie la question à une fonction Lambda implémentant l'exécuteur de l'agent.
- L'agent appelle le LLM avec une invite contenant une description des outils disponibles, le format d'instruction ReAct et la question d'entrée, puis analyse l'action suivante à terminer.
- L'action contient l'outil à appeler et quelle est l'entrée de l'action.
- Si l'outil à utiliser est SQL, l'exécuteur de l'agent appelle SQLQA pour convertir la question en SQL et l'exécuter. Ensuite, il ajoute le résultat à l'invite et appelle à nouveau le LLM pour voir s'il peut répondre à la question d'origine ou si des actions supplémentaires sont nécessaires.
- De même, si l'outil à utiliser est la recherche sémantique, alors l'entrée de l'action est analysée et utilisée pour extraire l'index de recherche sémantique PostgreSQL. Il ajoute les résultats à l'invite et vérifie si le LLM est capable de répondre ou a besoin d'une autre action.
- Une fois que toutes les informations nécessaires pour répondre à une question sont disponibles, l'agent LLM formule une réponse finale et la renvoie à l'utilisateur.
Vous pouvez étendre l'agent avec d'autres outils. Dans l'implémentation disponible sur GitHub, nous montrons comment vous pouvez ajouter un moteur de recherche et une calculatrice comme outils supplémentaires au moteur SQL et aux outils de recherche sémantique susmentionnés. Pour stocker l'historique des conversations en cours, nous utilisons un Amazon DynamoDB tableau.
D’après notre expérience jusqu’à présent, nous avons vu que les éléments suivants sont les clés du succès d’un agent :
- Un LLM sous-jacent capable de raisonner avec le format ReAct
- Une description claire des outils disponibles, quand les utiliser, et une description de leurs arguments d'entrée avec, potentiellement, un exemple de l'entrée et du résultat attendu
- Un aperçu clair du format ReAct que le LLM doit suivre
- Les bons outils pour résoudre la question business mis à disposition de l'agent LLM
- Analyser correctement les résultats des réponses de l'agent LLM au fur et à mesure du raisonnement
Pour optimiser les coûts, nous vous recommandons de mettre en cache les questions les plus courantes avec leurs réponses et de mettre à jour ce cache périodiquement afin de réduire les appels au LLM sous-jacent. Par exemple, vous pouvez créer un index de recherche sémantique avec les questions les plus courantes, comme expliqué précédemment, et faire correspondre la question du nouvel utilisateur avec l'index avant d'appeler le LLM. Pour explorer d'autres options de mise en cache, reportez-vous à Intégrations de mise en cache LLM.
Prise en charge d'autres formats tels que les fichiers vidéo, image, audio et 3D
Vous pouvez appliquer la même solution à différents types d'informations, telles que des images, des vidéos, de l'audio et des fichiers de conception 3D tels que des fichiers CAO ou de maillage. Cela implique d'utiliser des techniques de ML établies pour décrire le contenu du fichier sous forme de texte, qui peut ensuite être ingéré dans la solution que nous avons explorée précédemment. Cette approche vous permet de mener des conversations d’assurance qualité sur ces divers types de données. Par exemple, vous pouvez étendre votre base de données de documents en créant des descriptions textuelles d'images, de vidéos ou de contenu audio. Vous pouvez également améliorer la table de métadonnées en identifiant les propriétés via la classification ou la détection d'objets sur les éléments au sein de ces formats. Une fois ces données extraites indexées soit dans le magasin de métadonnées, soit dans l'index de recherche sémantique des documents, l'architecture globale du système proposé reste largement cohérente.
Conclusion
Dans cet article, nous avons montré comment l'utilisation de LLM avec le modèle de conception RAG est nécessaire pour créer un assistant d'IA spécifique à un domaine, mais est insuffisante pour atteindre le niveau de fiabilité requis pour générer de la valeur commerciale. Pour cette raison, nous avons proposé d'étendre le modèle de conception RAG populaire avec les concepts d'agents et d'outils, où la flexibilité des outils nous permet d'utiliser à la fois les techniques traditionnelles de PNL et les capacités LLM modernes pour permettre à un assistant IA de disposer de plus d'options pour rechercher des informations et aider. utilisateurs à résoudre efficacement les problèmes commerciaux.
La solution démontre le processus de conception vers un assistant LLM capable de répondre à différents types de questions de récupération, de raisonnement analytique et de raisonnement en plusieurs étapes dans l'ensemble de votre base de connaissances. Nous avons également souligné l'importance de réfléchir en arrière par rapport aux types de questions et de tâches pour lesquelles votre assistant LLM est censé aider les utilisateurs. Dans ce cas, le parcours de conception nous a conduit à une architecture avec les trois composants : recherche sémantique, extraction de métadonnées et requêtes SQL, ainsi qu'un agent et des outils LLM, que nous pensons suffisamment génériques et flexibles pour de multiples cas d'utilisation. Nous pensons également qu’en vous inspirant de cette solution et en approfondissant les besoins de vos utilisateurs, vous serez en mesure d’étendre davantage cette solution vers ce qui vous convient le mieux.
À propos des auteurs
Mohamed Ali Jamaoui est un architecte senior de prototypage ML avec 10 ans d'expérience dans l'apprentissage automatique de production. Il aime résoudre des problèmes commerciaux grâce à l'apprentissage automatique et à l'ingénierie logicielle, et aider les clients à extraire de la valeur commerciale grâce au ML. Dans le cadre d'AWS EMEA Prototyping and Cloud Engineering, il aide les clients à créer des solutions commerciales qui tirent parti des innovations en matière de MLOP, NLP, CV et LLM.
Giuseppe Hannen est un consultant associé ProServe. Giuseppe applique ses compétences analytiques en combinaison avec l'IA&ML pour développer des solutions claires et efficaces pour ses clients. Il aime trouver des solutions simples à des problèmes complexes, en particulier ceux qui impliquent les derniers développements technologiques et recherches.
Laurens dix Cate est un data scientist senior. Laurens travaille avec des entreprises clientes de la région EMEA et les aide à accélérer leurs résultats commerciaux à l'aide des technologies AWS AI/ML. Il se spécialise dans les solutions PNL et se concentre sur le secteur de la chaîne d'approvisionnement et de la logistique. Dans ses temps libres, il aime la lecture et l’art.
Irina Radu est un responsable de l'engagement de prototypage, qui fait partie d'AWS EMEA Prototyping and Cloud Engineering. Elle aide les clients à tirer le meilleur parti des dernières technologies, à innover plus rapidement et à voir plus grand.
- Contenu propulsé par le référencement et distribution de relations publiques. Soyez amplifié aujourd'hui.
- PlatoData.Network Ai générative verticale. Autonomisez-vous. Accéder ici.
- PlatoAiStream. Intelligence Web3. Connaissance Amplifiée. Accéder ici.
- PlatonESG. Carbone, Technologie propre, Énergie, Environnement, Solaire, La gestion des déchets. Accéder ici.
- PlatoHealth. Veille biotechnologique et essais cliniques. Accéder ici.
- La source: https://aws.amazon.com/blogs/machine-learning/boosting-rag-based-intelligent-document-assistants-using-entity-extraction-sql-querying-and-agents-with-amazon-bedrock/
- :possède
- :est
- :ne pas
- :où
- $UP
- 1
- 10
- 100
- 2022
- 3d
- 7
- a
- capacité
- Capable
- A Propos
- accélérer
- accès
- accessible
- accompli
- Compte
- précision
- Avec cette connaissance vient le pouvoir de prendre
- avec précision
- atteindre
- la réalisation de
- à travers
- Agis
- intérim
- Action
- actes
- adapter
- ajouter
- En outre
- Ajoute
- adopté
- Après
- encore
- à opposer à
- Agent
- agents
- AI
- Assistant IA
- AI / ML
- algorithme
- Aligne
- Tous
- permet
- aux côtés de
- aussi
- Amazon
- Amazon Sage Maker
- Extrait d'Amazon
- Amazon Web Services
- parmi
- an
- analyse
- Analytique
- il analyse
- et de
- Une autre
- répondre
- réponses
- Anthropique
- tous
- api
- Apis
- s'applique
- Appliquer
- une approche
- approprié
- approximatif
- architecture
- SONT
- arguments
- autour
- Art
- AS
- demander
- aider
- Assistante gérante
- assistants
- Associé(e)
- associé
- assumer
- At
- Attaques
- Tentatives
- acoustique
- augmenter
- augmentée
- Aurora
- automatiquement
- autonome
- disponibles
- AWS
- RETOUR
- backend
- Balance
- base
- basé
- Essentiel
- BE
- car
- était
- before
- humain
- derrière
- CROYONS
- avantages.
- LES MEILLEURS
- jusqu'à XNUMX fois
- Au-delà
- plus gros
- stimuler
- tous les deux
- construire
- Développement
- la performance des entreprises
- entreprises
- mais
- by
- Cache
- CAD
- Appelez-nous
- appelé
- appel
- Appels
- CAN
- candidat
- capacités
- capable
- porter
- maisons
- cas
- chaîne
- Chatbot
- Contrôles
- le choix
- choix
- Selectionnez
- classe
- classification
- clair
- le cloud
- COHÉRENT
- collaboration
- Colonne
- Colonnes
- combinaison
- moissonneuses-batteuses
- comment
- Commun
- Sociétés
- Société
- comparer
- comparant
- comparaisons
- Complément
- complet
- complexe
- compliqué
- composant
- composants électriques
- composé
- complet
- calcul
- concepts
- béton
- condition
- Conduire
- NOUS CONTACTER
- Considérer
- considérations
- cohérent
- consolider
- construire
- consultant
- contiennent
- contenu
- contient
- contenu
- contexte
- Conversation
- de la conversation
- IA conversationnel
- conversations
- convertir
- converti
- Core
- correct
- correctement
- Correspondant
- Prix
- Costs
- pourriez
- accouplé
- engendrent
- crée des
- La création
- Courant
- Customiser
- des clients
- Support à la clientèle
- Clients
- données
- accès aux données
- Data Scientist
- Base de données
- décidé
- Décider
- profond
- profond
- défini
- Définit
- delve
- Demande
- demo
- démontrer
- démontré
- démontre
- dépendances
- déployer
- décrire
- décrit
- décrivant
- la description
- Conception
- modèles de conception
- procédé de design
- conception
- détaillé
- détails
- détecter
- Détection
- développer
- Développement
- développements
- numérique
- divulgation
- discuter
- discuté
- discussions
- distance
- plongeon
- plusieurs
- plongée
- do
- document
- Documentation
- INSTITUTIONNELS
- Ne fait pas
- domaine
- domaines
- fait
- down
- driver
- deux
- pendant
- dynamiquement
- chacun
- Plus tôt
- "Early Bird"
- facilité
- facilité d'utilisation
- même
- Efficace
- de manière efficace
- efficace
- efficace
- efficacement
- non plus
- éléments
- enrobage
- EMEA
- émergé
- employant
- permettre
- permet
- permettant
- fin
- participation
- Moteur
- ENGINEERING
- Moteurs
- de renforcer
- Améliore
- assez
- enrichissant
- Entreprise
- entités
- entité
- Environment
- Erreurs
- notamment
- d'essentielles
- établies
- Pourtant, la
- évolue
- examiner
- exemple
- exemples
- existence
- existant
- Développer vous
- attendu
- d'experience
- expliqué
- expliquant
- Explique
- explorez
- Exploré
- exposé
- étendre
- extension
- extension
- supplémentaire
- extrait
- extraction
- Extraits
- face
- échoue
- QFP
- loin
- plus rapide
- Fonctionnalité
- Fonctionnalités:
- Réactions
- few
- champ
- Déposez votre dernière attestation
- Fichiers
- filtration
- filtres
- finale
- finalement
- la traduction de documents financiers
- Trouvez
- Prénom
- Flexibilité
- flexible
- flux
- Focus
- mettant l'accent
- Abonnement
- suit
- Pour
- formulaire
- le format
- formé
- document
- Framework
- gratuitement ici
- De
- avant
- L'extrémité avant
- l'accomplissement
- plein
- d’étiquettes électroniques entièrement
- fonction
- plus
- porte
- recueillir
- Général
- générer
- généré
- générateur
- génération
- génératif
- IA générative
- obtenez
- obtention
- GitHub
- donné
- objectif
- Bien
- peu à peu
- subvention
- Réservation de groupe
- Groupes
- ait eu
- Vous avez
- ayant
- he
- aider
- aider
- aide
- ici
- Haute
- le plus élevé
- Surbrillance
- sa
- Histoire
- Avec optimisme
- Comment
- How To
- Cependant
- HTML
- HTTPS
- humain
- et idées cadeaux
- identifie
- identifier
- identifier
- Identite
- if
- image
- satellite
- image
- Mettre en oeuvre
- la mise en oeuvre
- mis en œuvre
- la mise en œuvre
- importance
- important
- améliorer
- amélioré
- améliorations
- l'amélioration de
- in
- inclut
- indice
- indexé
- industrie
- d'information
- extraction d'informations
- initiale
- innovons
- innovations
- contribution
- entrées
- Inspiration
- inspirer
- inspiré
- installer
- instance
- plutôt ;
- intégrer
- Intelligent
- interagir
- interne
- développement
- introduire
- introduit
- Investir
- enquête
- un investissement
- impliquer
- IT
- SES
- lui-même
- Emploi
- chemin
- jpg
- json
- XNUMX éléments à
- ACTIVITES
- clés
- spécialisées
- connu
- langue
- gros
- principalement
- Nom
- plus tard
- Nouveautés
- lance
- couche
- apprentissage
- au
- LED
- Longueur
- Niveau
- Levier
- comme
- LIMIT
- limites
- LINK
- Liste
- LLM
- charges
- logistique
- industrie de la logistique
- Location
- aime
- click
- machine learning
- LES PLANTES
- Entrée
- maintenir
- Maintenir
- a prendre une
- gérés
- manager
- de nombreuses
- Match
- assorti
- mature
- Mai..
- me
- sens
- les mesures
- Découvrez
- mentions
- seulement
- engrener
- message
- Métadonnées
- méthode
- méthodes
- métrique
- Métrique
- minimum
- trompeur
- manquant
- ML
- MLOps
- modèle
- numériques jumeaux (digital twin models)
- modération
- Villas Modernes
- Module
- PLUS
- Par ailleurs
- (en fait, presque toutes)
- plusieurs
- must
- noms
- Nature
- Traitement du langage naturel
- nécessaire
- Besoin
- nécessaire
- Besoins
- voisins
- net
- revenu net
- n'allons jamais
- Nouveauté
- next
- nlp
- Aucun
- cahier
- Notion
- objet
- Détection d'objet
- of
- présenté
- offrant
- direct
- souvent
- on
- ONE
- en cours
- uniquement
- ouvert
- open source
- Opérations
- Optimiser
- Options
- or
- de commander
- original
- Autre
- Autres
- nos
- ande
- les résultats
- contour
- décrit
- sortie
- sorties
- plus de
- global
- Overcome
- propre
- paquet
- pandas
- partie
- les pièces
- Patron de Couture
- motifs
- Effectuer
- performant
- autorisation
- objectifs
- Pharmaceutique
- pièces
- pipeline
- Plaine
- et la planification de votre patrimoine
- Platon
- Intelligence des données Platon
- PlatonDonnées
- plausible
- Point
- politique
- Populaire
- popularité
- peuplé
- possible
- peut-être
- Post
- Postgresql
- défaillances
- l'éventualité
- alimenté
- solide
- pratique
- La précision
- Préparer
- représentent
- présenté
- cadeaux
- conservation
- empêcher
- empêche
- précédemment
- privilège
- résolution de problèmes
- d'ouvrabilité
- processus
- traitement
- produit
- produire
- Produit
- Vidéo
- PROMETTONS
- prometteur
- propriétés
- proposer
- proposé
- propose
- prototypage
- proven
- fournir
- fournit
- public
- Python
- Questions et réponses
- requêtes
- question
- fréquemment posées
- Rapide
- vite.
- Classement
- Nos tests de diagnostic produisent des résultats rapides et précis sans nécessiter d'équipement de laboratoire complexe et coûteux,
- raw
- nous joindre
- atteint
- Réagir
- en cours
- solutions
- réal
- monde réel
- en temps réel
- raison
- raisonnable
- reçu
- recevoir
- récent
- récemment
- reconnaître
- recommander
- Recommandation
- réduire
- reportez-vous
- région
- pertinent
- fiabilité
- compter
- reste
- Rapports
- dépôt
- représentent
- nécessaire
- exigent
- conditions
- exigence
- a besoin
- un article
- réponse
- réponses
- REST
- résultat
- Résultats
- retourner
- de revenus
- recettes
- Avis
- bon
- risques
- Rôle
- Courir
- pour le running
- fonctionne
- sagemaker
- même
- Évolutivité
- balayage
- balayage
- Scientifique
- scénario
- Rechercher
- moteur de recherche
- Deuxièmement
- Section
- les sections
- sécurité
- Mesures de sécurité
- sur le lien
- Chercher
- vu
- la sélection
- sélection
- sémantique
- envoie
- supérieur
- envoyé
- Séquence
- service
- Services
- elle
- devrait
- montrer
- montré
- montré
- similaires
- étapes
- simplifié
- simplifier
- simultanément
- depuis
- unique
- compétences
- So
- jusqu'à présent
- Logiciels
- génie logiciel
- uniquement
- sur mesure
- Solutions
- Résoudre
- quelques
- parfois
- Identifier
- Sources
- l'espace
- spécialisé
- spécialise
- groupe de neurones
- vitesse
- splits
- empiler
- étapes
- Commencer
- Commencez
- diriger
- étapes
- Étapes
- Boutique
- stockée
- simple
- les stratégies
- de Marketing
- grève
- s'efforcer
- structure
- structuré
- studio
- réussi
- tel
- suggérer
- convient
- résumé
- la quantité
- chaîne d'approvisionnement
- Support
- Les soutiens
- sûr
- syntaxe
- combustion propre
- table
- Prenez
- prend
- Tâche
- tâches
- technologie
- techniques
- technologique
- Les technologies
- dire
- Dix
- texte
- textuel
- Merci
- qui
- La
- les informations
- leur
- Les
- puis
- Là.
- ainsi
- donc
- Ces
- l'ont
- penser
- En pensant
- this
- ceux
- trois
- Avec
- fiable
- Titan
- à
- aujourd'hui
- outil
- les outils
- top
- haut 5
- vers
- vers
- Tracer
- traditionnel
- Formation
- Transformer
- traitement
- oui
- digne de confiance
- deux
- type
- types
- typiquement
- ui
- sous-jacent
- comprendre
- jusqu'à
- la mise à jour
- sur
- us
- utilisé
- d'utiliser
- Utilisateur
- Expérience utilisateur
- utilisateurs
- Usages
- en utilisant
- VALIDER
- Plus-value
- Valeurs
- variété
- divers
- polyvalente
- Vidéo
- Vidéos
- vulnérabilités
- marche
- Façon..
- we
- web
- services Web
- WELL
- ont été
- Quoi
- quand
- Les
- que
- qui
- tout en
- why
- Wikipédia
- sera
- comprenant
- dans les
- sans
- vos contrats
- pourra
- écriture
- X
- an
- années
- Vous n'avez
- Votre
- zéphyrnet