L'un des tutoriels les plus simples et les plus compréhensibles pour la création d'applications RAG

构建RAG应用最简单易懂的教程之一
ChatGPT a créé un moment important qui a permis aux entreprises de concevoir de nouveaux scénarios d'application et a accéléré l'adoption de l'IA par ces entreprises. Une application typique dans le domaine de l'entreprise consiste à permettre aux utilisateurs de parler à des chatbots et d'obtenir des réponses à leurs questions en se basant sur la base de connaissances interne de l'entreprise. Cependant, ChatGPT ou d'autres modèles de grand langage ne sont pas formés sur ces données internes et ne peuvent donc pas répondre directement aux questions basées sur les bases de connaissances internes. Une solution intuitive consiste à fournir la base de connaissances interne au modèle en tant que contexte, c'est-à-dire en tant qu'élément de l'invite. Cependant, la plupart des grands modèles linguistiques de jeton La limite n'est que de quelques milliers, ce qui est loin d'être suffisant pour prendre en compte l'énorme base de connaissances de la plupart des organisations. Par conséquent, l'utilisation de modèles linguistiques de grande taille disponibles dans le commerce ne permettra pas de relever ce défi. Toutefois, les deux approches populaires suivantes peuvent être utilisées individuellement ou en combinaison pour résoudre ce problème.

Affiner le modèle de langue de grande taille open source

Cette approche consiste à affiner un grand modèle de langage open-source tel que Llama2 sur le corpus du client. Le modèle affiné est capable d'assimiler et de comprendre les connaissances spécifiques au domaine du client afin de répondre aux questions pertinentes sans contexte supplémentaire. Toutefois, il convient de noter que les corpus de nombreux clients sont limités en taille et contiennent souvent des erreurs grammaticales. Cela peut poser un problème lors de l'affinement de modèles linguistiques de grande taille. Toutefois, des résultats encourageants ont été observés lors de l'utilisation du modèle linguistique de grande taille affiné dans les techniques de génération améliorées par la recherche d'information discutées ci-dessous.

Génération améliorée par la recherche

La deuxième façon de résoudre ce problème consiste à récupérer la génération augmentée (RAG). Cette approche consiste d'abord à fragmenter les données, puis à les stocker dans une base de données vectorielle. Lorsqu'il répond à une question, le système récupère les morceaux de données les plus pertinents en fonction de la requête et les transmet au grand modèle de langage pour générer la réponse. Actuellement, un certain nombre de solutions technologiques open source combinant des modèles de grands langages, un stockage vectoriel et des cadres d'orchestration sont populaires sur l'internet. Un schéma d'une solution utilisant la technologie RAG est présenté ci-dessous.

构建RAG应用最简单易懂的教程之一

Cependant, l'élaboration d'une solution à l'aide de l'approche susmentionnée pose certains problèmes. Les performances de la solution dépendent d'un certain nombre de facteurs, tels que la taille des morceaux de texte, le degré de chevauchement entre les morceaux, la technique d'intégration, etc. Il appartient à l'utilisateur de déterminer les paramètres optimaux pour chacun de ces facteurs. Voici quelques-uns des facteurs clés susceptibles d'affecter les performances :

Taille de la partie du document

Comme indiqué précédemment, la longueur du contexte d'un grand modèle linguistique est limitée, et le document doit donc être divisé en morceaux plus petits. Cependant, la taille des morceaux est déterminante pour les performances de la solution. Les morceaux trop petits ne peuvent pas répondre aux questions qui requièrent l'analyse d'informations sur plusieurs passages, tandis que les morceaux trop grands occupent rapidement la longueur du contexte, ce qui réduit le nombre de morceaux pouvant être traités. En outre, la taille des morceaux et la technique d'intégration déterminent la pertinence des morceaux extraits par rapport à la question.

Chevauchement entre morceaux voisins

Le découpage nécessite un chevauchement approprié afin de garantir que l'information n'est pas coupée de manière rigide. Idéalement, il faudrait s'assurer que tout le contexte nécessaire pour répondre à une question est présent dans son intégralité dans au moins un élément. Cependant, un chevauchement trop important, tout en résolvant ce problème, peut créer un nouveau défi : plusieurs morceaux se chevauchant et contenant des informations similaires, ce qui se traduit par des résultats de recherche remplis de contenu dupliqué.

Technologie embarquée

Les techniques d'intégration sont des algorithmes qui convertissent les morceaux de texte en vecteurs qui sont ensuite stockés dans un extracteur de documents. La technique utilisée pour intégrer les morceaux et les questions détermine la pertinence des morceaux récupérés par rapport à la question, ce qui affecte la qualité du contenu fourni au Big Language Model.

recherche de documents

Un récupérateur de documents (également connu sous le nom de magasin de vecteurs) est une base de données permettant de stocker des vecteurs intégrés et de les récupérer rapidement. Les algorithmes utilisés pour faire correspondre les voisins les plus proches dans le récupérateur (par exemple, le produit de points, la similarité de cosinus) déterminent la pertinence des morceaux récupérés. En outre, les extracteurs de documents devraient être capables de s'adapter horizontalement pour prendre en charge de grandes bases de connaissances.

modèle de macrolangue

Le choix du bon modèle de langage étendu est un élément clé de la solution. Le choix du meilleur modèle dépend de plusieurs facteurs, notamment des caractéristiques de l'ensemble de données et des autres facteurs mentionnés ci-dessus. Pour optimiser la solution, il est recommandé d'essayer différents modèles biglangues et de déterminer celui qui fournit les meilleurs résultats. Si certaines organisations sont heureuses d'adopter cette approche, d'autres peuvent être limitées par l'impossibilité d'utiliser les modèles GPT4, Palm ou Claude Abacus.AI offre une variété d'options de grands modèles linguistiques, y compris GPT3.5, GPT4, Palm, Azure OpenAI, Claude, Llama2, et les modèles propriétaires d'Abacus.AI. En outre, Abacus.AI a la capacité d'affiner le grand modèle linguistique sur les données de l'utilisateur et de l'utiliser pour les techniques de génération améliorées par la recherche, tirant ainsi parti des deux.

Nombre de morceaux

Certaines questions requièrent des informations provenant de différentes parties du document, voire de plusieurs documents. Par exemple, pour répondre à une question telle que "Citez quelques films contenant des animaux sauvages", il faut des clips ou des morceaux de différents films. Il arrive que les morceaux les plus pertinents n'apparaissent pas en tête de la recherche vectorielle. Dans ce cas, il est important de fournir plusieurs morceaux de données au grand modèle de langage pour l'évaluation et la génération de réponses.

Le réglage de chacun de ces paramètres nécessite un effort important de la part de l'utilisateur et implique un processus d'évaluation manuelle fastidieux.

Solutions Abacus.AI

Pour résoudre ce problème, Abacus.AI a adopté une approche innovante pour fournir des capacités AutoML à ses utilisateurs. Cette approche itère automatiquement sur diverses combinaisons de paramètres, y compris le réglage fin du grand modèle linguistique, afin de trouver la meilleure combinaison pour un cas d'utilisation particulier. Outre la documentation fournie par l'utilisateur, un ensemble de données d'évaluation contenant une série de questions et les réponses standard correspondantes rédigées manuellement est nécessaire. Abacus.AI utilise cet ensemble de données pour comparer les réponses générées par différentes combinaisons de paramètres afin de déterminer la configuration optimale.

构建RAG应用最简单易懂的教程之一

Abacus.AI génère les mesures d'évaluation suivantes, et l'utilisateur peut sélectionner ses mesures préférées pour déterminer la combinaison la plus performante.

Score BLEU

Le score BLEU (Bilingual Evaluation of Alternatives) est une mesure d'évaluation automatisée couramment utilisée pour évaluer la qualité des traductions automatiques. Il vise à fournir une mesure quantitative de la qualité de la traduction qui est fortement corrélée avec les notes humaines.

Le score BLEU est obtenu en comparant une traduction candidate (la traduction produite par la machine) à une ou plusieurs traductions de référence (traductions générées par l'homme) et en calculant le degré de chevauchement des n-grammes entre la traduction candidate et la traduction de référence. Plus précisément, il évalue dans quelle mesure les n-grammes (c'est-à-dire les séquences de n mots) des traductions candidates correspondent à ceux des traductions de référence.

Score METEOR

Le score METEOR (Metrics for Evaluating Explicitly Ordered Translations) est une autre mesure d'évaluation automatique couramment utilisée pour évaluer la qualité des traductions automatiques. Il est conçu pour compenser certaines lacunes d'autres mesures d'évaluation telles que le BLEU, notamment en introduisant une correspondance explicite de l'ordre des mots et en prenant en compte les synonymes et la prosodie.

Score de BERT

Le score BERT est une mesure d'évaluation automatisée conçue pour évaluer la qualité de la génération de texte. Le score est obtenu en calculant la similarité entre chaque token dans la phrase candidate et la phrase de référence. Contrairement à la correspondance exacte, cette mesure utilise l'intégration contextuelle pour déterminer la similarité des tokens.

Score ROUGE

Les scores ROUGE (Recall-Oriented Alternatives for Summary Evaluation) sont un ensemble de mesures d'évaluation automatisées couramment utilisées dans le traitement du langage naturel et le résumé de texte. À l'origine, ces mesures ont été conçues pour évaluer la qualité des systèmes de résumé de texte, mais elles sont désormais largement utilisées dans d'autres domaines tels que la traduction automatique et la génération de texte.

Le score ROUGE mesure la qualité du texte généré (par exemple, un résumé ou une traduction) en le comparant à un ou plusieurs textes de référence (généralement des résumés ou des traductions générés par des humains). Il mesure principalement le degré de chevauchement des n-grammes (c'est-à-dire des séquences de n mots) et des séquences de mots entre le texte candidat et le texte de référence.

构建RAG应用最简单易懂的教程之一

Chacun de ces scores va de 0 à 1, les scores les plus élevés indiquant une meilleure performance du modèle. Avec Abacus.AI, vous pouvez essayer plusieurs modèles et mesures pour trouver rapidement celui qui fonctionne le mieux avec vos données et votre application spécifique.

© déclaration de droits d'auteur

Articles connexes

Pas de commentaires

Vous devez être connecté pour participer aux commentaires !
S'inscrire maintenant
aucun
Pas de commentaires...