Améliorer les grands modèles de langage avec une génération augmentée par la récupération ou une optimisation fine
Dans une série d’articles, nous abordons les mécanismes de récupération des connaissances que les grands modèles de langage (LLM) utilisent pour générer des réponses. Par défaut, un LLM n’a accès qu’à ses données d’entraînement. Toutefois, vous pouvez augmenter le modèle pour inclure des données en temps réel ou des données privées.
Le premier mécanisme est la génération augmentée par la recherche (RAG). RAG est une forme de prétraitement qui combine la recherche sémantique avec l’priming contextuel. L'amorçage contextuel est abordé en détail dans Concepts et considérations clés pour la construction de solutions d'IA générative.
Le second mécanisme est le réglage fin. Dans l'ajustement fin, un GML est formé sur un ensemble de données spécifique après sa formation initiale générale. L’objectif est d’adapter le LLM pour mieux effectuer des tâches ou de comprendre les concepts liés au jeu de données. Ce processus aide le modèle à se spécialiser ou à améliorer sa précision et son efficacité dans la gestion de types spécifiques d’entrée ou de domaines.
Les sections suivantes décrivent ces deux mécanismes plus en détail.
Présentation de RAG
RAG est souvent utilisé pour activer le scénario « discuter sur mes données ». Dans ce scénario, une organisation a un corpus potentiellement volumineux de contenu textuel, tel que des documents, de la documentation et d’autres données propriétaires. Il utilise ce corpus comme base pour les réponses aux demandes de l'utilisateur.
À un niveau élevé, vous créez une entrée de base de données pour chaque document ou pour une partie d’un document appelé segment. Le segment est indexé sur son intégration, c'est-à-dire un vecteur (tableau) de nombres qui représentent les facettes du document. Lorsqu’un utilisateur envoie une requête, vous recherchez dans la base de données des documents similaires, puis envoyez la requête et les documents au LLM pour composer une réponse.
Remarque
Nous utilisons le terme de génération augmentée de récupération (RAG) de manière accommodante. Le processus d’implémentation d’un système de conversation basé sur RAG tel que décrit dans cet article peut être appliqué, que vous souhaitiez utiliser des données externes dans une capacité de support (RAG) ou comme pièce centrale de la réponse (RCG). La distinction nuanceuse n’est pas traitée dans la plupart des lectures liées à RAG.
Création d’un index de documents vectorisés
La première étape de création d’un système de conversation basé sur RAG consiste à créer un magasin de données vectorielles qui contient l’incorporation vectorielle du document ou du bloc. Considérez le diagramme suivant, qui décrit les étapes de base de la création d’un index vectorisé de documents.
Le diagramme représente un pipeline de données . Le pipeline est responsable de l’ingestion, du traitement et de la gestion des données que le système utilise. Le pipeline inclut le prétraitement des données à stocker dans la base de données vectorielle et s’assurer que les données qui sont transmises dans le LLM sont au format correct.
L’ensemble du processus est piloté par la notion d’incorporation, qui est une représentation numérique des données (généralement des mots, des expressions, des phrases, des phrases ou même des documents entiers) qui capture les propriétés sémantiques de l’entrée d’une manière qui peut être traitée par des modèles Machine Learning.
Pour créer une incorporation, vous envoyez le bloc de contenu (phrases, paragraphes ou documents entiers) à l’API Azure OpenAI Embeddings. L’API retourne un vecteur. Chaque valeur du vecteur représente une caractéristique (dimension) du contenu. Les dimensions peuvent inclure la matière des rubriques, la signification sémantique, la syntaxe et la grammaire, l’utilisation des mots et des expressions, les relations contextuelles, le style ou le ton. Ensemble, toutes les valeurs du vecteur représentent l’espace dimensionnel du contenu. Si vous pensez à une représentation 3D d’un vecteur qui a trois valeurs, un vecteur spécifique se trouve dans une zone spécifique du plan du plan XYZ. Que se passe-t-il si vous avez 1 000 valeurs, voire plus ? Même s’il n’est pas possible pour les humains de dessiner un graphique de 1 000 dimensions sur une feuille de papier pour le rendre plus compréhensible, les ordinateurs n’ont aucun problème à comprendre ce degré d’espace dimensionnel.
L’étape suivante du diagramme illustre le stockage du vecteur et du contenu (ou un pointeur vers l’emplacement du contenu) et d’autres métadonnées dans une base de données vectorielle. Une base de données vectorielle est semblable à n’importe quel type de base de données, mais avec deux différences :
- Les bases de données vectorielles utilisent un vecteur comme index pour rechercher des données.
- Les bases de données vectorielles mettent en œuvre un algorithme appelé « cosinus similar search », également appelé « nearest neighbor » L’algorithme utilise des vecteurs qui correspondent le plus étroitement aux critères de recherche.
Avec le corpus de documents stockés dans une base de données vectorielle, les développeurs peuvent créer un composant récupérateur pour récupérer des documents qui correspondent à la requête de l’utilisateur. Les données sont utilisées pour fournir au LLM de quoi répondre à la requête de l’utilisateur.
Réponse aux requêtes à l’aide de vos documents
Un système RAG utilise d’abord la recherche sémantique pour rechercher des articles susceptibles d’être utiles au LLM lorsqu’il compose une réponse. L'étape suivante consiste à envoyer les articles correspondants avec la requête originale de l'utilisateur au GML pour qu'il compose une réponse.
Considérez le diagramme suivant comme une implémentation RAG simple (parfois appelée RAG naïve) :
Dans le diagramme, un utilisateur envoie une requête. La première étape consiste à créer une représentation vectorielle afin que le prompt de l'utilisateur retourne un vecteur. L'étape suivante consiste à rechercher dans la base de données vectorielle les documents (ou parties de documents) qui correspondent au plus proche voisin.
La similarité cosinus est une mesure qui permet de déterminer à quel point deux vecteurs sont similaires. Essentiellement, la métrique évalue le cosinus de l’angle entre eux. Une similarité cosinus proche de 1 indique un degré élevé de similarité (un petit angle). Une similarité proche de -1 indique une dissimilarité (angle de près de 180 degrés). Cette métrique est cruciale pour les tâches telles que la similarité des documents, où l’objectif est de trouver des documents qui ont du contenu ou une signification similaires.
Algorithmes des plus proches voisins travaillent en recherchant les vecteurs les plus proches (voisins) pour un point dans l’espace vectoriel. Dans l’algorithme k-nearest neighbors (KNN), k fait référence au nombre de voisins les plus proches à prendre en compte. Cette approche est largement utilisée dans la classification et la régression, où l’algorithme prédit l’étiquette d’une nouvelle donnée en fonction de l’étiquette majoritaire de ses k voisins les plus proches dans l’ensemble d’entraînement. La similarité KNN et cosinus est souvent utilisée ensemble dans des systèmes comme les moteurs de recommandation, où l’objectif est de trouver des éléments les plus similaires aux préférences d’un utilisateur, représentés en tant que vecteurs dans l’espace d’incorporation.
Vous sélectionnez les meilleurs résultats de cette recherche et envoyez le contenu correspondant avec la requête de l’utilisateur, dans l'espoir de générer une réponse guidée par ce contenu correspondant.
Défis et considérations
Un système RAG a son ensemble de défis de mise en œuvre. La confidentialité des données est primordiale. Le système doit gérer les données utilisateur de manière responsable, en particulier lorsqu’il récupère et traite des informations à partir de sources externes. Les exigences de calcul peuvent également être significatives. Le processus de récupération et les processus de génération sont gourmands en ressources. Garantir la précision et la pertinence des réponses tout en gérant les biais dans les données ou le modèle est une autre considération essentielle. Les développeurs doivent parcourir attentivement ces défis pour créer des systèmes RAG efficaces, éthiques et précieux.
Créer des systèmes de génération augmentée par récupération avancée vous donne plus d’informations sur la construction des données et des pipelines d’inférence pour mettre en œuvre un système RAG prêt pour la production.
Si vous souhaitez commencer à expérimenter immédiatement la création d’une solution d’INTELLIGENCE artificielle générative, nous vous recommandons de vous familiariser avec la conversation à l’aide de votre propre exemple de données pour Python. Le didacticiel est également disponible pour .NET, javaet JavaScript.
Réglage précis d’un modèle
Dans le contexte d’un LLM, le réglage précis est le processus d’ajustement des paramètres du modèle en l’entraînent sur un jeu de données spécifique à un domaine après que le LLM a été initialement formé sur un jeu de données volumineux et diversifié.
Les modules LLM sont formés (préentraînés) sur un jeu de données large, la structure du langage, le contexte et un large éventail de connaissances. Cette étape implique l’apprentissage des modèles de langage généraux. Le réglage précis ajoute davantage d’entraînement au modèle préentraîné en fonction d’un jeu de données plus petit et spécifique. Cette phase de formation secondaire vise à adapter le modèle afin d’effectuer de meilleures tâches ou de comprendre des domaines spécifiques, améliorant sa précision et sa pertinence pour ces applications spécialisées. Pendant le réglage précis, les pondérations du modèle sont ajustées pour mieux prédire ou comprendre les nuances de ce jeu de données plus petit.
Tenez compte des points suivants :
- Spécialisation : Le réglage précis adapte le modèle à des tâches spécifiques, telles que l’analyse de documents juridiques, l’interprétation de texte médical ou les interactions avec les services à la clientèle. Cette spécialisation rend le modèle plus efficace dans ces domaines.
- Efficacité: il est plus efficace d’affiner un modèle préentraîné pour une tâche spécifique que d’entraîner un modèle à partir de zéro. Le réglage précis nécessite moins de données et moins de ressources de calcul.
- l’adaptabilité: le réglage précis permet l’adaptation aux nouvelles tâches ou domaines qui ne faisaient pas partie des données d’apprentissage d’origine. L’adaptabilité des llMs les rend polyvalents pour diverses applications.
- Amélioration des performances: pour les tâches qui diffèrent des données sur laquelle le modèle a été initialement formé, le réglage précis peut entraîner de meilleures performances. Le réglage précis ajuste le modèle pour comprendre le langage, le style ou la terminologie spécifiques utilisés dans le nouveau domaine.
- Personnalisation : Dans certaines applications, le réglage précis peut aider à personnaliser les réponses ou prédictions du modèle pour répondre aux besoins ou préférences spécifiques d’un utilisateur ou d’une organisation. Toutefois, le réglage précis présente des inconvénients et des limitations spécifiques. Comprendre ces facteurs peut vous aider à décider quand opter pour un réglage précis et des alternatives comme RAG.
- exigences en matière de données: le réglage précis nécessite un jeu de données suffisamment volumineux et de haute qualité spécifique à la tâche ou au domaine cible. La collecte et la création de ce jeu de données peuvent être difficiles et gourmandes en ressources.
- Risque de surajustement: le surajustement est un risque, en particulier avec un petit jeu de données. Le surajustement rend le modèle performant sur les données d’entraînement, mais mal sur les données nouvelles et invisibles. La généralisabilité est réduite lorsque le surajustement se produit.
- Coût et ressources: bien que moins gourmande en ressources que l’entraînement à partir de zéro, le réglage précis nécessite toujours des ressources de calcul, en particulier pour les grands modèles et jeux de données. Le coût peut être prohibitif pour certains utilisateurs ou projets.
- Maintenance et mise à jour: les modèles affinés peuvent nécessiter des mises à jour régulières pour rester efficaces à mesure que les informations spécifiques au domaine changent au fil du temps. Cette maintenance continue nécessite des ressources et des données supplémentaires.
- dérive de modèle: étant donné que le modèle est affiné pour des tâches spécifiques, il peut perdre une partie de sa compréhension générale du langage et de sa polyvalence. Ce phénomène est appelé dérive du modèle.
Personnaliser un modèle par le biais d’un réglage précis explique comment ajuster un modèle. À un niveau élevé, vous fournissez un jeu de données JSON de questions potentielles et de réponses préférées. La documentation suggère qu’il existe des améliorations notables en fournissant 50 à 100 paires question-réponse, mais le bon nombre varie considérablement sur le cas d’usage.
Ajustement et RAG
À première vue, il peut sembler qu'il y ait beaucoup de chevauchements entre le réglage fin et le RAG. Le choix entre l’optimisation et la génération augmentée par récupération dépend des exigences spécifiques de votre tâche, notamment les attentes en matière de performances, la disponibilité des ressources et la nécessité d’une spécificité de domaine par rapport à la généralisabilité.
Quand utiliser le réglage précis au lieu de RAG :
- performances spécifiques à la tâche: le réglage précis est préférable lorsque des performances élevées sur une tâche spécifique sont essentielles et qu’il existe suffisamment de données spécifiques au domaine pour entraîner efficacement le modèle sans risque important de surajustement.
- Contrôler les données: si vous avez des données propriétaires ou hautement spécialisées qui diffèrent considérablement des données sur lesquelles le modèle de base a été formé, un réglage précis vous permet d’incorporer ces connaissances uniques dans le modèle.
- Besoin limité de mises à jour en temps réel : Si la tâche n'exige pas que le modèle soit constamment mis à jour avec les informations les plus récentes, le réglage fin peut être plus efficace, car les modèles de GCR doivent généralement avoir accès à des bases de données externes actualisées ou à l'internet pour tirer des données récentes.
Quand préférer RAG au réglage précis :
- contenu dynamique ou l’évolution du contenu: RAG est plus adapté aux tâches où les informations les plus actuelles sont essentielles. Étant donné que les modèles RAG peuvent extraire des données à partir de sources externes en temps réel, ils sont mieux adaptés aux applications telles que la génération d’actualités ou répondre aux questions sur les événements récents.
- Généralisation sur la spécialisation: si l’objectif est de maintenir de solides performances sur un large éventail de sujets plutôt que d’exceller dans un domaine étroit, RAG peut être préférable. Il utilise des base de connaissances externes, ce qui lui permet de générer des réponses entre différents domaines sans risque de surajustement à un jeu de données spécifique.
- contraintes de ressources: pour les organisations disposant de ressources limitées pour la collecte de données et l’entraînement des modèles, l’utilisation d’une approche RAG peut offrir une alternative économique au réglage précis, en particulier si le modèle de base effectue déjà raisonnablement bien sur les tâches souhaitées.
Considérations finales relatives à la conception de l’application
Voici une courte liste des éléments à prendre en compte et d’autres points à prendre en compte dans cet article qui peuvent influencer vos décisions de conception d’application :
- Choisissez entre réglage précis et RAG en fonction des besoins spécifiques de votre application. Le réglage précis peut offrir de meilleures performances pour les tâches spécialisées, tandis que RAG peut fournir une flexibilité et un contenu up-to-date pour les applications dynamiques.