Cet article est co-écrit avec Stanislav Yeshchenko de Q4 Inc.
Les entreprises se tournent vers la génération augmentée de récupération (RAG) comme approche courante pour créer des chatbots de questions-réponses. Nous continuons de constater l’émergence de défis liés à la nature de l’assortiment d’ensembles de données disponibles. Ces ensembles de données sont souvent un mélange de données numériques et textuelles, parfois structurées, non structurées ou semi-structurées.
Q4 inc. devait relever certains de ces défis dans l'un de leurs nombreux cas d'utilisation de l'IA construits sur AWS. Dans cet article, nous discutons d'un cas d'utilisation de robot Q&A mis en œuvre par Q4, des défis présentés par les ensembles de données numériques et structurés et de la manière dont Q4 a conclu que l'utilisation de SQL peut être une solution viable. Enfin, nous examinons de plus près comment l'équipe du quatrième trimestre a utilisé Socle amazonien et SQLDatabaseChain pour implémenter une solution basée sur RAG avec génération SQL.
Présentation des cas d'utilisation
Q4 Inc., dont le siège social est à Toronto et qui possède des bureaux à New York et à Londres, est une plateforme d'accès aux marchés des capitaux de premier plan qui transforme la façon dont les émetteurs, les investisseurs et les vendeurs se connectent, communiquent et interagissent efficacement les uns avec les autres. La plateforme Q4 facilite les interactions sur les marchés de capitaux grâce à des produits de sites Web IR, des solutions d'événements virtuels, des analyses d'engagement, des relations avec les investisseurs, des outils de gestion de la relation client (CRM), des analyses d'actionnaires et de marché, des outils de surveillance et d'ESG.
Dans le paysage financier actuel, en évolution rapide et axé sur les données, les responsables des relations avec les investisseurs (IRO) jouent un rôle essentiel en favorisant la communication entre une entreprise et ses actionnaires, analystes et investisseurs. Dans le cadre de leurs tâches quotidiennes, les IRO analysent divers ensembles de données, notamment le CRM, les registres de propriété et les données boursières. L'ensemble de ces données est utilisé pour générer des rapports financiers, définir des objectifs de relations avec les investisseurs et gérer la communication avec les investisseurs existants et potentiels.
Pour répondre à la demande croissante de récupération de données efficace et dynamique, Q4 visait à créer un outil de questions et réponses de chatbot qui fournirait aux IRO une méthode intuitive et simple pour accéder aux informations nécessaires dont ils ont besoin dans un format convivial.
L'objectif final était de créer un chatbot qui intégrerait de manière transparente les données accessibles au public, ainsi que les données propriétaires spécifiques au client du quatrième trimestre, tout en maintenant le plus haut niveau de sécurité et de confidentialité des données. En ce qui concerne les performances, l'objectif était de maintenir un temps de réponse aux requêtes de quelques secondes pour garantir une expérience positive aux utilisateurs finaux.
Les marchés financiers sont un secteur réglementé avec des enjeux élevés. Fournir des informations incorrectes ou obsolètes peut nuire à la confiance des investisseurs et des actionnaires, en plus d’autres risques possibles en matière de confidentialité des données. Comprenant le secteur et ses exigences, Q4 définit la confidentialité des données et l'exactitude des réponses comme principes directeurs dans l'évaluation de toute solution avant qu'elle puisse être commercialisée.
Pour la preuve de concept, Q4 a décidé d'utiliser un ensemble de données sur la propriété financière. L'ensemble de données se compose de points de données de séries chronologiques représentant le nombre d'actifs détenus ; l'historique des transactions entre les institutions d'investissement, les particuliers et les entreprises publiques ; et bien d'autres éléments.
Parce que Q4 voulait s'assurer qu'il pourrait satisfaire à toutes les exigences fonctionnelles et non fonctionnelles dont nous avons discuté, le projet devait également rester commercialement réalisable. Cela a été respecté tout au long du processus de décision sur l’approche, l’architecture, le choix de la technologie et les éléments spécifiques à la solution.
Expérimentation et défis
Il était clair dès le début que pour comprendre une question en langage humain et générer des réponses précises, Q4 devrait utiliser des modèles de langage étendus (LLM).
Voici quelques-unes des expériences menées par l’équipe, ainsi que les défis identifiés et les leçons apprises :
- Pré-formation – Q4 a compris la complexité et les défis liés à la pré-formation d'un LLM à l'aide de son propre ensemble de données. Il est rapidement devenu évident que cette approche est gourmande en ressources et comporte de nombreuses étapes non triviales, telles que le prétraitement des données, la formation et l'évaluation. En plus des efforts impliqués, cela serait prohibitif. Compte tenu de la nature de l'ensemble de données de séries chronologiques, Q4 s'est également rendu compte qu'il lui faudrait continuellement effectuer une pré-formation incrémentielle à mesure que de nouvelles données arrivaient. Cela aurait nécessité une équipe interdisciplinaire dédiée possédant une expertise en science des données, en apprentissage automatique et en domaine. connaissance.
- Réglage fin – Affiner un modèle de base (FM) pré-entraîné à l'aide de plusieurs exemples étiquetés. Cette approche a connu un certain succès initial, mais dans de nombreux cas, l’hallucination du modèle a constitué un défi. Le modèle a eu du mal à comprendre les signaux contextuels nuancés et a renvoyé des résultats incorrects.
- RAG avec recherche sémantique – Le RAG conventionnel avec recherche sémantique était la dernière étape avant de passer à la génération SQL. L'équipe a expérimenté l'utilisation de la recherche, de la recherche sémantique et de l'intégration pour extraire le contexte. Au cours de l'expérience d'intégration, l'ensemble de données a été converti en intégrations, stocké dans une base de données vectorielle, puis mis en correspondance avec les intégrations de la question pour extraire le contexte. Le contexte récupéré dans l'une des trois expériences a ensuite été utilisé pour augmenter l'invite d'origine en tant qu'entrée dans le LLM. Cette approche a bien fonctionné pour le contenu textuel, où les données sont constituées de langage naturel avec des mots, des phrases et des paragraphes. Compte tenu de la nature de l’ensemble de données du quatrième trimestre, qui est principalement constitué de données financières composées de chiffres, de transactions financières, de cotations boursières et de dates, les résultats dans les trois cas étaient sous-optimaux. Même en utilisant des intégrations, les intégrations générées à partir de nombres avaient du mal à établir un classement de similarité et conduisaient dans de nombreux cas à récupérer des informations incorrectes.
Conclusion du quatrième trimestre : la génération de SQL est la voie à suivre
Compte tenu des défis rencontrés avec la méthodologie RAG conventionnelle, l’équipe a commencé à envisager la génération SQL. L'idée était d'utiliser le LLM pour générer d'abord une instruction SQL à partir de la question de l'utilisateur, présentée au LLM en langage naturel. La requête générée est ensuite exécutée sur la base de données pour récupérer le contexte pertinent. Le contexte est enfin utilisé pour augmenter l'invite de saisie pour une étape de résumé.
L'hypothèse de Q4 était que pour obtenir un rappel plus élevé pour l'étape de récupération, en particulier pour l'ensemble de données numériques, ils devaient d'abord générer du SQL à partir de la question de l'utilisateur. On pensait que cela non seulement augmentait la précision, mais permettait également de maintenir le contexte dans le domaine commercial pour une question donnée. Pour la génération de requêtes et pour générer du SQL précis, Q4 devait rendre le LLM pleinement conscient du contexte de la structure de son ensemble de données. Cela signifiait que l'invite devait inclure le schéma de la base de données, quelques exemples de lignes de données et des explications de champ lisibles par l'homme pour les champs qui ne sont pas faciles à comprendre.
Sur la base des premiers tests, cette méthode a donné d’excellents résultats. Le LLM équipé de toutes les informations nécessaires a pu générer le code SQL correct, qui a ensuite été exécuté sur la base de données pour récupérer le contexte correct. Après avoir expérimenté cette idée, Q4 a décidé que la génération SQL était la voie à suivre pour relever les défis d'extraction de contexte pour leur propre ensemble de données spécifique.
Commençons par décrire l’approche globale de la solution, décomposons-la en ses composants, puis assemblons les éléments.
Vue d'ensemble de la solution
Les LLM sont de grands modèles avec des milliards de paramètres pré-entraînés à l'aide de très grandes quantités de données provenant de diverses sources. En raison de l'étendue des ensembles de données de formation, les LLM doivent posséder des connaissances générales dans une variété de domaines. Les LLM sont également connus pour leurs capacités de raisonnement, qui varient d'un modèle à l'autre. Ce comportement général peut être optimisé pour un domaine ou un secteur spécifique en optimisant davantage un modèle de base à l'aide de données de pré-formation supplémentaires spécifiques au domaine ou en affinant à l'aide de données étiquetées. Avec le contexte, les métadonnées et les instructions appropriés, un LLM à usage général bien sélectionné peut produire du SQL de bonne qualité tant qu'il a accès au bon contexte spécifique au domaine.
Dans le cas d'utilisation de Q4, nous commençons par traduire la question du client en SQL. Pour ce faire, nous combinons la question de l'utilisateur, le schéma de la base de données, quelques exemples de lignes de base de données et des instructions détaillées pour inviter le LLM à générer du SQL. Une fois que nous avons le SQL, nous pouvons exécuter une étape de validation si cela est jugé nécessaire. Lorsque nous sommes satisfaits de la qualité du SQL, nous exécutons la requête sur la base de données pour récupérer le contexte pertinent dont nous avons besoin pour l'étape suivante. Maintenant que nous disposons du contexte pertinent, nous pouvons renvoyer la question originale de l’utilisateur, le contexte récupéré et un ensemble d’instructions au LLM pour produire une réponse finale résumée. L'objectif de la dernière étape est que le LLM résume les résultats et fournisse une réponse contextuelle et précise qui peut ensuite être transmise à l'utilisateur.
Le choix du LLM utilisé à chaque étape du processus a un impact important sur la précision, le coût et les performances. Choisir une plate-forme ou une technologie qui peut vous offrir la flexibilité de basculer entre les LLM dans le même cas d'utilisation (plusieurs voyages LLM pour différentes tâches) ou entre différents cas d'utilisation, peut être bénéfique pour optimiser la qualité du résultat, la latence et le coût. . Nous abordons le choix du LLM plus loin dans cet article.
Éléments constitutifs de la solution
Maintenant que nous avons mis en évidence l’approche à un niveau élevé, entrons dans les détails, en commençant par les éléments constitutifs de la solution.
Socle amazonien
Amazon Bedrock est un service entièrement géré qui offre un choix de FM hautes performances provenant d'entreprises de premier plan, notamment AI21 Labs, Anthropic, Cohere, Meta, Stability AI et Amazon. Amazon Bedrock propose également un large éventail d'outils nécessaires pour créer des applications d'IA générative, simplifier le processus de développement et préserver la confidentialité et la sécurité. De plus, avec Amazon Bedrock, vous pouvez choisir parmi diverses options FM et affiner davantage les modèles en privé en utilisant vos propres données pour aligner les réponses des modèles sur les exigences de votre cas d'utilisation. Amazon Bedrock est entièrement sans serveur, sans infrastructure sous-jacente pour gérer l'extension de l'accès aux modèles disponibles via une seule API. Enfin, Amazon Bedrock prend en charge plusieurs exigences de sécurité et de confidentialité, notamment l'éligibilité HIPAA et la conformité au RGPD.
Dans la solution de Q4, nous utilisons Amazon Bedrock comme élément de base de modèle multi-fondations sans serveur, basé sur une API. Étant donné que nous avons l'intention d'effectuer plusieurs déplacements vers le LLM dans le même cas d'utilisation, en fonction du type de tâche, nous pouvons choisir le modèle le plus optimal pour une tâche spécifique, qu'il s'agisse de génération SQL, de validation ou de résumé.
LangChaîne
LangChaîne est un framework d'intégration et d'orchestration open source avec un ensemble de modules prédéfinis (E/S, récupération, chaînes et agents) que vous pouvez utiliser pour intégrer et orchestrer des tâches entre les FM, les sources de données et les outils. Le framework facilite la création d'applications d'IA génératives qui nécessitent d'orchestrer plusieurs étapes pour produire le résultat souhaité, sans avoir à écrire du code à partir de zéro. LangChain prend en charge Amazon Bedrock en tant qu'API de modèle multi-fondations.
Spécifique au cas d'utilisation de Q4, nous utilisons LangChain pour coordonner et orchestrer les tâches de notre flux de travail, y compris la connexion aux sources de données et aux LLM. Cette approche a simplifié notre code car nous pouvons utiliser les modules LangChain existants.
Chaîne de base de données SQL
Chaîne de base de données SQL est une chaîne LangChain qui peut être importée depuis langchain_experimental. SLDatabaseChain facilite la création, la mise en œuvre et l'exécution de requêtes SQL, grâce à ses conversions et implémentations texte-SQL efficaces.
Dans notre cas d'utilisation, nous utilisons SQLDatabaseChain dans la génération SQL, simplifiant et orchestrant les interactions entre la base de données et le LLM.
Le jeu de données
Notre ensemble de données structurées peut résider dans une base de données SQL, un lac de données ou un entrepôt de données tant que nous prenons en charge SQL. Dans notre solution, nous pouvons utiliser n'importe quel type d'ensemble de données avec le support SQL ; cela doit être abstrait de la solution et ne doit en aucun cas changer la solution.
Détails d'implémentation
Maintenant que nous avons exploré l’approche de la solution, les composants de la solution, le choix de la technologie et les outils, nous pouvons assembler les éléments. Le diagramme suivant met en évidence la solution de bout en bout.
Passons en revue les détails de mise en œuvre et le déroulement du processus.
Générer la requête SQL
Pour simplifier le codage, nous utilisons des frameworks existants. Nous utilisons LangChain comme framework d'orchestration. Nous commençons par l'étape de saisie, où nous recevons la question de l'utilisateur en langage naturel.
Dans cette première étape, nous prenons cette entrée et générons un SQL équivalent que nous pouvons exécuter sur la base de données pour l'extraction du contexte. Pour générer du SQL, nous utilisons SQLDatabaseChain, qui s'appuie sur Amazon Bedrock pour accéder à notre LLM souhaité. Avec Amazon Bedrock, en utilisant une seule API, nous avons accès à un certain nombre de LLM sous-jacents et pouvons choisir celui qui convient à chaque voyage LLM que nous effectuons. Nous établissons d’abord une connexion à la base de données et récupérons le schéma de table requis ainsi que quelques exemples de lignes des tables que nous avons l’intention d’utiliser.
Lors de nos tests, nous avons constaté que 2 à 5 lignes de données de tableau étaient suffisantes pour fournir suffisamment d'informations au modèle sans ajouter trop de surcharge inutile. Trois lignes suffisaient juste pour fournir le contexte, sans surcharger le modèle avec trop d'entrées. Dans notre cas d'utilisation, nous avons commencé avec Anthropic Claude V2. Le modèle est connu pour son raisonnement avancé et ses réponses contextuelles articulées lorsqu’il est fourni avec le bon contexte et les bonnes instructions. Dans le cadre des instructions, nous pouvons inclure davantage de détails clarifiants au LLM. Par exemple, nous pouvons décrire cette colonne Comp_NAME
représente le nom de l'entreprise. Nous pouvons maintenant construire l'invite en combinant la question de l'utilisateur telle quelle, le schéma de la base de données, trois exemples de lignes de la table que nous avons l'intention d'utiliser et un ensemble d'instructions pour générer le SQL requis dans un format SQL propre, sans commentaires ni ajouts.
Tous les éléments d'entrée combinés sont considérés comme l'invite de saisie du modèle. Une invite de saisie bien conçue, adaptée à la syntaxe préférée du modèle, a un impact important sur la qualité et les performances de la sortie. Le choix du modèle à utiliser pour une tâche spécifique est également important, non seulement parce qu'il a un impact sur la qualité du résultat, mais également parce qu'il a des implications en termes de coûts et de performances.
Nous discutons de la sélection du modèle, de l'ingénierie et de l'optimisation des invites plus loin dans cet article, mais il convient de noter que pour l'étape de génération de requêtes, nous avons remarqué que Claude Instant était capable de produire des résultats comparables, en particulier lorsque la question de l'utilisateur est bien formulée et moins sophistiquée. Cependant, Claude V2 a produit de meilleurs résultats même avec une saisie utilisateur plus complexe et indirecte. Nous avons appris que même si dans certains cas Claude Instant peut fournir une précision suffisante avec une latence et un prix meilleurs, notre argument en faveur de la génération de requêtes était mieux adapté à Claude V2.
Vérifier la requête SQL
Notre prochaine étape consiste à vérifier que le LLM a généré avec succès la bonne syntaxe de requête et que la requête a un sens contextuel compte tenu des schémas de base de données et des exemples de lignes fournis. Pour cette étape de vérification, nous pouvons revenir à la validation de requête native dans SQLDatabaseChain, ou nous pouvons effectuer un deuxième voyage vers le LLM incluant la requête générée avec les instructions de validation.
Si nous utilisons un LLM pour l'étape de validation, nous pouvons utiliser le même LLM qu'avant (Claude V2) ou un LLM plus petit et plus performant pour une tâche plus simple, comme Claude Instant. Étant donné que nous utilisons Amazon Bedrock, cela devrait être un ajustement très simple. En utilisant la même API, nous pouvons modifier le nom du modèle dans notre appel API, qui se charge du changement. Il est important de noter que dans la plupart des cas, un LLM plus petit peut offrir une meilleure efficacité en termes de coût et de latence et doit être envisagé, à condition d’obtenir la précision souhaitée. Dans notre cas, les tests ont prouvé que la requête générée était toujours précise et avec la bonne syntaxe. Sachant cela, nous avons pu ignorer cette étape de validation et économiser sur la latence et les coûts.
Exécutez la requête SQL
Maintenant que nous disposons de la requête SQL vérifiée, nous pouvons exécuter la requête SQL sur la base de données et récupérer le contexte pertinent. Cela devrait être une étape simple.
Nous prenons le contexte généré, le fournissons au LLM de notre choix avec la question initiale de l'utilisateur et quelques instructions, et demandons au modèle de générer un résumé contextuel et articulé. Nous présentons ensuite le résumé généré à l'utilisateur comme une réponse à la question initiale, le tout aligné sur le contexte extrait de notre ensemble de données.
Pour le LLM impliqué dans l'étape de synthèse, nous pouvons utiliser soit Titan Text Express, soit Claude Instant. Ils présenteraient tous deux de bonnes options pour la tâche de synthèse.
Intégration d'applications
La capacité de chatbot Q&A est l’un des services d’IA de Q4. Pour garantir la modularité et l'évolutivité, Q4 crée des services d'IA sous forme de microservices accessibles aux applications Q4 via des API. Cette approche basée sur l'API permet une intégration transparente avec l'écosystème de la plateforme Q4 et facilite l'exposition des capacités des services d'IA à la suite complète d'applications de la plateforme.
L'objectif principal des services d'IA est de fournir des fonctionnalités simples permettant de récupérer des données à partir de toute source de données publique ou propriétaire en utilisant le langage naturel comme entrée. De plus, les services d'IA fournissent des couches d'abstraction supplémentaires pour garantir que les exigences fonctionnelles et non fonctionnelles, telles que la confidentialité et la sécurité des données, sont respectées. Le diagramme suivant illustre le concept d'intégration.
Défis de mise en œuvre
En plus des défis présentés par la nature de l'ensemble de données numériques structurées dont nous avons discuté plus tôt, le quatrième trimestre a été confronté à un certain nombre d'autres défis de mise en œuvre qui ont dû être résolus.
Sélection et performance du LLM
La sélection du LLM adapté à la tâche est cruciale car elle a un impact direct sur la qualité du résultat ainsi que sur les performances (latence aller-retour). Voici quelques facteurs qui jouent dans le processus de sélection LLM :
- Type de LLM – La façon dont les FM sont architecturés et les données initiales sur lesquelles le modèle a été pré-entraîné déterminent les types de tâches pour lesquelles le LLM serait bon et sa qualité. Par exemple, un LLM texte serait efficace pour la génération et la synthèse de texte, tandis qu'un modèle texte-image ou image-texte serait plus orienté vers l'analyse et les tâches de génération d'images.
- Taille LLM – Les tailles FM sont mesurées par le nombre de paramètres de modèle d'un modèle particulier, généralement en milliards pour les LLM modernes. En règle générale, plus le modèle est grand, plus la formation initiale ou la mise au point ultérieure sont coûteuses. D’un autre côté, en général, pour une même architecture de modèle, plus le modèle est grand, plus nous attendons de lui qu’il soit intelligent dans l’exécution du type de tâche pour laquelle il est destiné.
- Performances du LLM – En règle générale, plus le modèle est grand, plus il faut de temps pour générer la sortie, en supposant que vous utilisez les mêmes paramètres de calcul et d'E/S (taille de l'invite et de la sortie). De plus, pour une même taille de modèle, les performances dépendent fortement de l'optimisation de votre invite, de la taille des jetons d'E/S, ainsi que de la clarté et de la syntaxe de l'invite. Une invite bien conçue, ainsi qu'une taille de jeton d'E/S optimisée, peuvent améliorer le temps de réponse du modèle.
Par conséquent, lorsque vous optimisez votre tâche, tenez compte des bonnes pratiques suivantes :
- Choisissez un modèle adapté à la tâche à accomplir
- Sélectionnez la plus petite taille de modèle capable de produire la précision que vous recherchez
- Optimisez votre structure d'invite et soyez aussi précis que possible avec les instructions d'une manière facile à comprendre pour le modèle
- Utilisez la plus petite invite de saisie pouvant fournir suffisamment d’instructions et de contexte pour produire le niveau de précision que vous recherchez
- Limitez la taille de sortie à la plus petite taille qui peut être significative pour vous et satisfaire vos exigences de sortie
En tenant compte des facteurs de sélection du modèle et d'optimisation des performances, nous nous sommes mis au travail pour optimiser notre cas d'utilisation de génération SQL. Après quelques tests, nous avons remarqué que, à condition d'avoir le bon contexte et les bonnes instructions, Claude Instant, avec les mêmes données d'invite, produirait une qualité de SQL comparable à celle de Claude V2 à un prix et des performances bien meilleurs. Cela est vrai lorsque la saisie de l’utilisateur est de nature plus directe et plus simple. Pour une saisie plus sophistiquée, Claude V2 était nécessaire pour produire la précision souhaitée.
L'application de la même logique à la tâche de résumé nous a amené à conclure que l'utilisation de Claude Instant ou Titan Text Express produirait la précision requise à un bien meilleur point de performance que si nous utilisions un modèle plus grand tel que Claude V2. Titan Text Expressed offrait également un meilleur rapport qualité-prix, comme nous l'avons évoqué précédemment.
Le défi de l’orchestration
Nous avons réalisé qu'il y avait beaucoup à orchestrer avant de pouvoir obtenir une réponse significative à la question de l'utilisateur. Comme le montre la présentation de la solution, le processus impliquait plusieurs déplacements dans la base de données et plusieurs déplacements LLM qui sont entrelacés. Si nous devions construire à partir de zéro, nous aurions dû faire un investissement important dans le gros du travail indifférencié juste pour préparer le code de base. Nous avons rapidement opté pour LangChain comme cadre d'orchestration, tirant parti de la puissance de la communauté open source et réutilisant les modules existants sans réinventer la roue.
Le défi SQL
Nous avons également réalisé que générer du SQL n'est pas aussi simple que des mécanismes d'extraction de contexte comme la recherche sémantique ou l'utilisation d'intégrations. Nous devons d'abord obtenir le schéma de la base de données et quelques exemples de lignes à inclure dans notre invite au LLM. Il y a aussi l'étape de validation SQL, où nous devions interagir à la fois avec la base de données et le LLM. SQLDatabaseChain était le choix d'outil évident. Parce qu'il fait partie de LangChain, il a été simple à adapter, et nous pouvons désormais gérer la génération et la vérification SQL assistées par la chaîne, minimisant ainsi la quantité de travail que nous devions effectuer.
Défis de performances
Avec l'utilisation de Claude V2 et après une ingénierie rapide appropriée (dont nous discutons dans la section suivante), nous avons pu produire du SQL de haute qualité. Compte tenu de la qualité du SQL généré, nous avons commencé à examiner la valeur réellement ajoutée par l’étape de validation. Après une analyse plus approfondie des résultats, il est devenu clair que la qualité du code SQL généré était toujours précise, ce qui rendait défavorable le rapport coût/bénéfice de l'ajout d'une étape de validation SQL. Nous avons fini par éliminer l'étape de validation SQL sans impact négatif sur la qualité de notre sortie et avons réduit le temps d'aller-retour de validation SQL.
En plus d'optimiser pour un LLM plus efficace en termes de coûts et de performances pour l'étape de synthèse, nous avons pu utiliser Titan Text Express pour obtenir de meilleures performances et une meilleure rentabilité.
Une optimisation supplémentaire des performances impliquait d'affiner le processus de génération de requêtes à l'aide de techniques d'ingénierie d'invite efficaces. Plutôt que de fournir une abondance de jetons, l'accent a été mis sur la fourniture du moins de jetons d'entrée, dans la bonne syntaxe pour laquelle le modèle est formé et avec un ensemble d'instructions minimal mais optimal. Nous en discuterons davantage dans la section suivante : c'est un sujet important qui s'applique non seulement ici mais également dans d'autres cas d'utilisation.
Ingénierie et optimisation rapides
Vous pouvez ajuster Claude sur Amazon Bedrock pour divers cas d'utilisation professionnelle si les bonnes techniques d'ingénierie rapide sont utilisées. Claude agit principalement comme assistant conversationnel utilisant un format humain/assistant. Claude est formé pour remplir du texte pour le rôle d'assistant. Compte tenu des instructions et des achèvements d'invite souhaités, nous pouvons optimiser nos invites pour Claude en utilisant plusieurs techniques.
Nous commençons par un modèle d'invite correctement formaté qui donne une complétion valide, puis nous pouvons optimiser davantage les réponses en expérimentant des invites avec divers ensembles d'entrées représentatives des données du monde réel. Il est recommandé d’obtenir de nombreuses contributions lors du développement d’un modèle d’invite. Vous pouvez également utiliser des ensembles distincts de données de développement rapide et de données de test.
Une autre façon d'optimiser la réponse de Claude consiste à expérimenter et à itérer en ajoutant des règles, des instructions et optimisations utiles. A partir de ces optimisations, vous pouvez visualiser différents types de complétions en disant par exemple à Claude de mentionner « Je ne sais pas » pour éviter les hallucinations, en réfléchissant étape par étape, en utilisant l'enchaînement d'invites, en laissant de la place à la « réflexion » au fur et à mesure qu'elle génère des réponses. , et une double vérification de la compréhension et de l'exactitude.
Utilisons notre tâche de génération de requêtes et discutons de certaines des techniques que nous avons utilisées pour optimiser notre invite. Quelques éléments essentiels ont bénéficié à nos efforts de génération de requêtes :
- Utiliser la syntaxe humaine/assistant appropriée
- Utiliser les balises XML (Claude respecte et comprend les balises XML)
- Ajout d'instructions claires pour le modèle afin d'éviter les hallucinations
L'exemple générique suivant montre comment nous avons utilisé la syntaxe humain/assistant, appliqué des balises XML et ajouté des instructions pour restreindre la sortie au SQL et demander au modèle de dire « désolé, je ne peux pas vous aider » s'il ne peut pas produire du SQL pertinent. . Les balises XML ont été utilisées pour encadrer les instructions, les astuces supplémentaires, le schéma de base de données, les explications de tableau supplémentaires et les exemples de lignes.
La solution de travail finale
Après avoir relevé tous les défis identifiés lors de la preuve de concept, nous avons rempli toutes les exigences de la solution. Q4 était satisfait de la qualité du SQL généré par le LLM. Cela est vrai pour les tâches simples qui nécessitent uniquement une clause WHERE pour filtrer les données, ainsi que pour les tâches plus complexes qui nécessitent des agrégations basées sur le contexte avec GROUP BY et des fonctions mathématiques. La latence de bout en bout de la solution globale correspondait à ce qui était défini comme acceptable pour le cas d'utilisation : secondes à un chiffre. Tout cela grâce au choix d'un LLM optimal à chaque étape, à une ingénierie d'invite appropriée, à l'élimination de l'étape de vérification SQL et à l'utilisation d'un LLM efficace pour l'étape de résumé (Titan Text Express ou Claude Instant).
Il convient de noter que l'utilisation d'Amazon Bedrock en tant que service entièrement géré et la possibilité d'accéder à une suite de LLM via la même API ont permis l'expérimentation et la commutation transparente entre les LLM en modifiant le nom du modèle dans l'appel d'API. Grâce à ce niveau de flexibilité, Q4 a pu choisir le LLM le plus performant pour chaque appel LLM en fonction de la nature de la tâche, qu'il s'agisse de génération de requêtes, de vérification ou de résumé.
Conclusion
Il n’existe pas de solution unique adaptée à tous les cas d’utilisation. Dans une approche RAG, la qualité du résultat dépend fortement de la fourniture du bon contexte. Extraire le bon contexte est essentiel, et chaque ensemble de données est différent avec ses caractéristiques uniques.
Dans cet article, nous avons démontré que pour les ensembles de données numériques et structurés, l'utilisation de SQL pour extraire le contexte utilisé pour l'augmentation peut conduire à des résultats plus favorables. Nous avons également démontré que des frameworks comme LangChain peuvent minimiser l'effort de codage. De plus, nous avons discuté de la nécessité de pouvoir basculer entre les LLM dans le même cas d'utilisation afin d'obtenir une précision, des performances et un coût optimaux. Enfin, nous avons souligné comment Amazon Bedrock, étant sans serveur et doté d'une variété de LLM sous le capot, offre la flexibilité nécessaire pour créer des applications sécurisées, performantes et optimisées en termes de coûts avec un minimum de tâches lourdes.
Commencez votre parcours vers la création d’applications génératives basées sur l’IA en identifiant un cas d’utilisation intéressant pour votre entreprise. La génération SQL, comme l'a appris l'équipe du quatrième trimestre, peut changer la donne dans la création d'applications intelligentes qui s'intègrent à vos magasins de données, libérant ainsi un potentiel de revenus.
À propos des auteurs
Dompteur Soliman est architecte de solutions senior chez AWS. Il aide les clients des fournisseurs de logiciels indépendants (ISV) à innover, à créer et à évoluer sur AWS. Il possède plus de deux décennies d’expérience dans le secteur du conseil, de la formation et des services professionnels. Il est un inventeur de plusieurs brevets avec trois brevets accordés et son expérience couvre plusieurs domaines technologiques, notamment les télécommunications, les réseaux, l'intégration d'applications, l'IA/ML et les déploiements cloud. Il se spécialise dans les réseaux AWS et a une profonde passion pour l'apprentissage automatique, l'IA et l'IA générative.
Mani Khanouja est responsable technique – Spécialistes de l'IA générative, auteur du livre – Apprentissage automatique appliqué et calcul haute performance sur AWS, et membre du conseil d'administration de la Women in Manufacturing Education Foundation. Elle dirige des projets d'apprentissage automatique (ML) dans divers domaines tels que la vision par ordinateur, le traitement du langage naturel et l'IA générative. Elle aide les clients à créer, former et déployer de grands modèles d'apprentissage automatique à grande échelle. Elle intervient lors de conférences internes et externes telles que re:Invent, Women in Manufacturing West, les webinaires YouTube et GHC 23. Pendant son temps libre, elle aime faire de longues courses le long de la plage.
Stanislav Iechchenko est architecte logiciel chez Q4 Inc.. Il possède plus d'une décennie d'expérience dans l'industrie du développement de logiciels et de l'architecture système. Son expérience diversifiée couvrant des rôles tels que celui de responsable technique et de développeur Full Stack senior, alimente ses contributions à l'avancement de l'innovation de la plateforme Q4. Stanislav se consacre à stimuler l’innovation technique et à élaborer des solutions stratégiques dans le domaine.
- 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/how-q4-inc-used-amazon-bedrock-rag-and-sqldatabasechain-to-address-numerical-and-structured-dataset-challenges-building-their-qa-chatbot/
- :possède
- :est
- :ne pas
- :où
- $UP
- 100
- 118
- 125
- 15%
- 23
- 7
- a
- capacités
- capacité
- Capable
- abstraction
- abondance
- acceptable
- accès
- accessible
- Compte
- précision
- Avec cette connaissance vient le pouvoir de prendre
- atteindre
- à travers
- actes
- actually
- adapter
- ajoutée
- ajoutant
- ajout
- Supplémentaire
- En outre
- ajouts
- propos
- adressé
- Le réglage
- Avancée
- de suivre
- Avantage
- Après
- à opposer à
- agents
- agrégat
- AI
- Services d'IA
- cas d'utilisation de l'IA
- AI / ML
- Destinée
- aligner
- aligné
- Tous
- permettre
- permis
- le long de
- aussi
- Bien que
- am
- Amazon
- Amazon Web Services
- montant
- quantités
- an
- selon une analyse de l’Université de Princeton
- Analystes
- analytique
- il analyse
- l'analyse
- et de
- Une autre
- répondre
- réponses
- Anthropique
- tous
- quoi que ce soit d'artificiel
- api
- Apis
- en vigueur
- Application
- applications
- appliqué
- une approche
- architecture
- SONT
- AS
- demander
- Outils
- Assistante gérante
- assisté
- assortiment
- At
- augmenter
- augmentée
- auteur
- disponibles
- conscients
- AWS
- RETOUR
- fond
- basé
- Essentiel
- BE
- Plage
- est devenu
- car
- était
- before
- Début
- humain
- va
- cru
- avantageux
- LES MEILLEURS
- les meilleures pratiques
- Améliorée
- jusqu'à XNUMX fois
- milliards
- Block
- Blocs
- planche
- conseil d'administration
- livre
- Bot
- tous les deux
- largeur
- Pause
- vaste
- construire
- Développement
- construit
- construit
- la performance des entreprises
- mais
- by
- Appelez-nous
- venu
- CAN
- Peut obtenir
- capacités
- aptitude
- capital
- Marchés de capitaux
- les soins
- maisons
- cas
- chaîne
- Chaînes
- challenge
- globaux
- construction de défis
- Change
- Échangeur
- en changeant
- caractéristiques
- Chatbot
- Chatbots
- le choix
- Selectionnez
- choose
- clarté
- espace extérieur plus propre,
- clair
- plus
- le cloud
- code
- Codage
- Colonne
- combiné
- combinant
- comment
- commentaires
- commercialement
- communiquer
- Communication
- Communautés
- Sociétés
- Société
- comparable
- achèvement
- complexe
- complexité
- conformité
- composants électriques
- comprendre
- calcul
- ordinateur
- Vision par ordinateur
- informatique
- concept
- conclut
- conclu
- conclusion
- menée
- conférences
- NOUS CONTACTER
- Connecter les
- connexion
- Considérer
- considéré
- considérant
- régulièrement
- Qui consiste
- consiste
- construire
- consulting
- contenu
- contexte
- contextuel
- continuer
- continuellement
- contributions
- conventionnel
- de la conversation
- conversions
- converti
- coordination
- Core
- correct
- Prix
- pourriez
- engendrent
- critique
- CRM
- crucial
- des clients
- Clients
- Tous les jours
- données
- Lac de données
- points de données
- confidentialité des données
- Confidentialité et sécurité des données
- science des données
- data-driven
- Base de données
- ensembles de données
- Dates
- décennie
- décennies
- décidé
- Décider
- dévoué
- réputé
- défini
- Demande
- démontré
- démontre
- dépend
- déployer
- déploiements
- décrire
- décrivant
- voulu
- détaillé
- détails
- détermine
- Développeur
- développement
- Développement
- différent
- directement
- Administration
- discuter
- discuté
- plongeon
- plusieurs
- do
- domaine
- domaines
- Ne pas
- double vérification
- down
- conduite
- deux
- pendant
- Dynamic
- chacun
- Plus tôt
- Easy
- risque numérique
- Éducation
- Efficace
- efficace
- efficace
- efficacement
- effort
- efforts
- non plus
- éléments
- admissibilité
- l'élimination
- économies émergentes.
- employés
- permet
- fin
- end-to-end
- terminé
- s'engager
- participation
- ENGINEERING
- assez
- assurer
- équipé
- Équivalent
- (ESG)
- notamment
- établir
- évaluer
- évaluation
- Pourtant, la
- événements
- Chaque
- exemple
- exemples
- existant
- attendre
- attendu
- cher
- d'experience
- expérience
- expériences
- expert
- nous a permis de concevoir
- Exploré
- express
- exprimé
- extension
- externe
- extrait
- extraction
- face
- facilite
- facteurs
- rapide
- favorable
- réalisable
- few
- champ
- Des champs
- remplir
- une fonction filtre
- finale
- finalement
- la traduction de documents financiers
- données financières
- Prénom
- Flexibilité
- flux
- Focus
- suivre
- Abonnement
- Pour
- le format
- Avant
- favoriser
- trouvé
- Fondation
- CADRE
- Framework
- cadres
- gratuitement ici
- De
- plein
- Un paquet entier
- d’étiquettes électroniques entièrement
- fonctionnel
- fonctions
- plus
- jeu
- changeur de jeu
- RGPD
- Conformité GDPR
- adapté
- Général
- générer
- généré
- génère
- générateur
- génération
- génératif
- IA générative
- obtenez
- obtention
- Donner
- donné
- donne
- Don
- Go
- objectif
- Objectifs
- Bien
- accordée
- l'
- Réservation de groupe
- Croissance
- ait eu
- main
- heureux vous
- Vous avez
- ayant
- he
- siège social
- lourd
- levage de charges lourdes
- aider
- aide
- ici
- ici
- Haute
- haute performance
- de haute qualité
- augmentation
- le plus élevé
- Surbrillance
- Faits saillants
- très
- indices
- sa
- Histoire
- capuche
- Comment
- Cependant
- HTTPS
- humain
- lisible par l'homme
- i
- idée
- identifié
- identifier
- if
- image
- Impact
- impact
- impactant
- Impacts
- Mettre en oeuvre
- la mise en oeuvre
- implémentations
- mis en œuvre
- implications
- important
- améliorer
- in
- Dans d'autres
- Inc
- comprendre
- Y compris
- Améliore
- incrémental
- indépendant
- individus
- industrie
- d'information
- Infrastructure
- initiale
- possible
- innovons
- Innovation
- contribution
- entrées
- instantané
- les établissements privés
- Des instructions
- intégrer
- l'intégration
- l'intention
- interagir
- interactions
- interne
- entrelacé
- développement
- intuitif
- un investissement
- investor
- Investisseurs
- impliqué
- émetteurs
- Isv
- IT
- SES
- chemin
- jpg
- juste
- XNUMX éléments à
- ACTIVITES
- connaissance
- spécialisées
- connu
- Labs
- lac
- paysage d'été
- langue
- gros
- plus importantes
- Nom
- enfin
- Latence
- plus tard
- poules pondeuses
- conduire
- conduisant
- Conduit
- savant
- apprentissage
- au
- LED
- Cours
- Leçons apprises
- Niveau
- lifting
- comme
- aime
- LLM
- logique
- London
- Location
- Style
- recherchez-
- Lot
- click
- machine learning
- LES PLANTES
- Entrée
- principalement
- Courant dominant
- maintenir
- Maintenir
- a prendre une
- FAIT DU
- gérer
- gérés
- gestion
- fabrication
- de nombreuses
- Marché
- Analyse de marché
- Données du marché
- Marchés
- appariés
- mathématique
- Mai..
- significative
- signifiait
- mécanismes
- Découvrez
- membre
- la ficelle d'étiquettes/étiquettes volantes en carton
- Meta
- Métadonnées
- méthode
- Méthodologie
- microservices
- minimal
- réduisant au minimum
- mélanger
- ML
- modèle
- numériques jumeaux (digital twin models)
- Villas Modernes
- Modules
- PLUS
- (en fait, presque toutes)
- la plupart
- en mouvement
- beaucoup
- multi
- plusieurs
- prénom
- indigène
- Nature
- Traitement du langage naturel
- Nature
- nécessaire
- Besoin
- nécessaire
- négativement
- de mise en réseau
- Nouveauté
- New York
- next
- aucune
- noter
- notant
- maintenant
- nombre
- numéros
- objectif
- évident
- of
- de rabais
- présenté
- Offres Speciales
- les officiers
- bureaux
- souvent
- on
- ONE
- uniquement
- ouvert
- open source
- optimaux
- à mettre en œuvre pour gérer une entreprise rentable. Ce guide est basé sur trois décennies d'expérience
- Optimiser
- optimisé
- l'optimisation
- Options
- or
- orchestrer
- orchestration
- de commander
- original
- Autre
- nos
- sortie
- plus de
- global
- vue d'ensemble
- accablant
- propre
- propriété
- possession
- paramètres
- partie
- particulier
- passé
- passion
- brevet
- Brevets
- chemin
- Effectuer
- performant
- effectuer
- en particulier pendant la préparation
- pièces
- plateforme
- Platon
- Intelligence des données Platon
- PlatonDonnées
- Jouez
- Point
- des notes bonus
- positif
- possible
- Post
- défaillances
- power
- pouvoirs
- pratiques
- préféré
- représentent
- présenté
- empêcher
- prix
- principes
- la confidentialité
- Confidentialité et sécurité
- processus
- traitement
- produire
- Produit
- Produits
- professionels
- profond
- Projet
- projets
- instructions
- preuve
- preuve de concept
- correct
- propriétaire
- prouvé
- fournir
- à condition de
- fournit
- aportando
- public
- Entreprises publiques
- publiquement
- but
- mettre
- Questions et réponses
- qualité
- requêtes
- question
- vite.
- citations
- Classement
- plutôt
- RE
- solutions
- monde réel
- réalisé
- recevoir
- recommandé
- Articles
- référencement
- réglementé
- rapports
- relation amoureuse
- pertinent
- Rapports
- représentant
- représentation
- représente
- exigent
- conditions
- Exigences
- ressource
- respecté
- respects
- réponse
- réponses
- restreindre
- Résultats
- de revenus
- revenir
- examen
- bon
- risques
- Rôle
- rôle
- Salle
- Round
- Courir
- fonctionne
- même
- satisfait
- satisfait avec
- Épargnez
- dire
- Évolutivité
- Escaliers intérieurs
- Sciences
- gratter
- fluide
- de façon transparente
- Rechercher
- Deuxièmement
- secondes
- Section
- sécurisé
- sécurité
- sur le lien
- sélection
- Sellers
- envoyer
- supérieur
- sens
- séparé
- Série
- Sans serveur
- service
- Services
- set
- Sets
- plusieurs
- mise en forme
- actionnaire
- Actionnaires
- elle
- devrait
- montré
- montré
- Spectacles
- significative
- étapes
- plus simple
- simplifié
- simplifier
- simplifiant
- unique
- Taille
- tailles
- faibles
- smart
- plus intelligents
- Logiciels
- développement de logiciels
- sur mesure
- Solutions
- quelques
- sophistiqué
- Identifier
- Sources
- enjambant
- travées
- parle
- spécialistes
- spécialise
- groupe de neurones
- spécifiquement
- Stabilité
- empiler
- Étape
- enjeux
- Utilisation d'un
- peuplements
- Commencer
- j'ai commencé
- Commencez
- Déclaration
- rester
- étapes
- Étapes
- stock
- marché boursier
- stockée
- STORES
- simple
- Stratégique
- structure
- structuré
- Par la suite
- succès
- Avec succès
- tel
- suffisant
- convient
- suite
- résumé
- RÉSUMÉ
- Support
- Les soutiens
- surveillance
- Interrupteur
- syntaxe
- combustion propre
- table
- Prenez
- tâches
- prend
- prise
- Tâche
- tâches
- équipe
- technologie
- Technique
- techniques
- Technologie
- télécommunications
- dire
- modèle
- tester
- Essais
- tests
- texte
- que
- Merci
- qui
- La
- Le Capital
- leur
- puis
- Là.
- Ces
- l'ont
- En pensant
- this
- trois
- Avec
- tout au long de
- fiable
- Des séries chronologiques
- fois
- Titan
- à
- aujourd'hui
- ensemble
- jeton
- Tokens
- trop
- outil
- les outils
- sujet
- toronto
- vers
- Train
- qualifié
- Formation
- transaction
- Transactions
- transformer
- voyage
- oui
- La confiance
- TOUR
- deux
- type
- types
- typiquement
- incapable
- sous
- sous-jacent
- comprendre
- compréhension
- comprend
- compris
- expérience unique et authentique
- déverrouillage
- inutile
- us
- utilisé
- cas d'utilisation
- d'utiliser
- Utilisateur
- convivial
- en utilisant
- utilise
- Info de contact.
- validation
- Plus-value
- variété
- divers
- vendeur
- Vérification
- vérifié
- vérifier
- très
- viable
- Voir
- Salle de conférence virtuelle
- vision
- marcher
- voulu
- était
- Façon..
- we
- web
- services Web
- Webinaires
- Site Web
- WELL
- est allé
- ont été
- Ouest
- Quoi
- Jante
- quand
- Les
- qui
- tout en
- sera
- comprenant
- dans les
- sans
- Femme
- des mots
- activités principales
- travaillé
- workflow
- de travail
- vaut
- pourra
- écrire
- écrire du code
- XML
- encore
- york
- Vous n'avez
- Votre
- Youtube
- zéphyrnet