Modifier

Partager via


Phase d’incorporation générée par RAG

Azure AI services
Azure AI Search
Azure OpenAI Service
Azure Machine Learning

Dans les étapes précédentes de votre solution de génération de Retrieval-Augmented (RAG), vous avez divisé vos documents en blocs et enrichi les blocs. Dans cette étape, vous générez des incorporations pour ces blocs et tous les champs de métadonnées sur lesquels vous prévoyez d’effectuer des recherches vectorielles.

Cet article fait partie d’une série. Lisez l’introduction .

Une incorporation est une représentation mathématique d’un objet, tel que du texte. Lorsqu’un réseau neuronal est entraîné, de nombreuses représentations d’un objet sont créées. Chaque représentation a des connexions à d’autres objets du réseau. Une incorporation est importante, car elle capture la signification sémantique de l’objet.

La représentation d’un objet a des connexions à des représentations d’autres objets. Vous pouvez donc comparer des objets mathématiquement. L’exemple suivant montre comment les incorporations capturent la signification sémantique et les relations entre elles :

embedding (king) - embedding (man) + embedding (woman) = embedding (queen)

Les incorporations sont comparées les unes aux autres en utilisant les notions de similarité et de distance. La grille suivante montre une comparaison des incorporations.

Diagramme montrant une comparaison de vecteurs.

Dans une solution RAG, vous incorporez souvent la requête utilisateur à l’aide du même modèle d’incorporation que vos blocs. Ensuite, vous recherchez dans votre base de données des vecteurs pertinents pour retourner les blocs les plus sémantiquement pertinents. Le texte d’origine des blocs appropriés est transmis au modèle de langage comme données de base.

Note

Les vecteurs représentent la signification sémantique du texte d’une manière qui permet une comparaison mathématique. Vous devez nettoyer les blocs afin que la proximité mathématique entre les vecteurs reflète avec précision leur pertinence sémantique.

Importance du modèle d’incorporation

Le modèle d’incorporation que vous choisissez peut affecter considérablement la pertinence de vos résultats de recherche vectorielle. Vous devez prendre en compte le vocabulaire du modèle d’incorporation. Chaque modèle d’incorporation est entraîné avec un vocabulaire spécifique. Par exemple, la taille du vocabulaire du modèle BERT est d’environ 30 000 mots.

Le vocabulaire d’un modèle d’incorporation est important, car il gère les mots qui ne sont pas dans son vocabulaire d’une manière unique. Si un mot n’est pas dans le vocabulaire du modèle, il calcule toujours un vecteur pour celui-ci. Pour ce faire, de nombreux modèles décomposent les mots en sous-mots. Ils traitent les sous-mots comme des jetons distincts, ou ils agrègent les vecteurs pour les sous-mots afin de créer un seul incorporation.

Par exemple, le mot histamine peut ne pas se trouver dans le vocabulaire d’un modèle incorporé. Le mot histamine a une signification sémantique comme un produit chimique que votre corps libère, ce qui provoque des symptômes d’allergie. Le modèle d’incorporation ne contient pas histamine. Ainsi, il peut séparer le mot en sous-mots qui sont dans son vocabulaire, comme son, ta, et mine.

Diagramme montrant l’histogramme de mot divisé en sous-mots suivants : son, ta et mien.

Les significations sémantiques de ces sous-mots sont loin de la signification de histamine. Les valeurs de vecteur individuelles ou combinées des sous-mots entraînent des correspondances vectorielles plus médiocres par rapport à si histamine étaient dans le vocabulaire du modèle.

Choisir un modèle d’incorporation

Déterminez le modèle d’incorporation approprié pour votre cas d’usage. Considérez le chevauchement entre le vocabulaire du modèle d’incorporation et les mots de vos données lorsque vous choisissez un modèle d’incorporation.

Diagramme montrant le flux de choix d’un modèle d’incorporation.

Tout d’abord, déterminez si vous avez du contenu spécifique au domaine. Par exemple, vos documents sont-ils spécifiques à un cas d’usage, à votre organisation ou à un secteur ? Une bonne façon de déterminer la spécificité du domaine consiste à vérifier si vous pouvez trouver les entités et les mots clés dans votre contenu sur Internet. Si vous le pouvez, un modèle d’incorporation général peut également.

Contenu général ou non spécifique à un domaine

Lorsque vous choisissez un modèle d’incorporation général, commencez par le leaderboard Hugging Face. Obtenez up-to-date incorporation de classements de modèles. Évaluez le fonctionnement des modèles avec vos données et commencez par les modèles de classement supérieur.

Contenu spécifique au domaine

Pour le contenu spécifique au domaine, déterminez si vous pouvez utiliser un modèle spécifique à un domaine. Par exemple, vos données peuvent se trouver dans le domaine biomédical. Vous pouvez donc utiliser le modèle bioGPT . Ce modèle de langage est préentraîné sur une grande collection de littérature biomédicale. Vous pouvez l’utiliser pour l’exploration et la génération de texte biomédicales. Si des modèles spécifiques à un domaine sont disponibles, évaluez le fonctionnement de ces modèles avec vos données.

Si vous n’avez pas de modèle spécifique à un domaine ou si le modèle spécifique au domaine ne fonctionne pas correctement, vous pouvez affiner un modèle d’incorporation général avec votre vocabulaire spécifique au domaine.

Important

Pour tout modèle que vous choisissez, vous devez vérifier que la licence répond à vos besoins et que le modèle fournit la prise en charge linguistique nécessaire.

Évaluer les modèles d’incorporation

Pour évaluer un modèle d’incorporation, visualisez les incorporations et évaluez la distance entre les vecteurs de question et de segment.

Visualiser les incorporations

Vous pouvez utiliser des bibliothèques, telles que t-SNE, pour tracer les vecteurs de vos blocs et votre question sur un graphique X-Y. Vous pouvez ensuite déterminer la distance entre les blocs et la question. Le graphique suivant montre les vecteurs de segment tracés. Les deux flèches proches les unes des autres représentent deux vecteurs de bloc. L’autre flèche représente un vecteur de question. Vous pouvez utiliser cette visualisation pour comprendre la distance entre la question et les segments.

Graph qui affiche une visualisation d’une incorporation. L’image montre plusieurs points bleus tracés sur une échelle X-Y.

Deux flèches pointent vers des points de traçage près les uns des autres, et une autre flèche montre un point de traçage loin des deux autres.

Calculer les distances d’incorporation

Vous pouvez utiliser une méthode programmatique pour évaluer le fonctionnement de votre modèle d’incorporation avec vos questions et blocs. Calculez la distance entre les vecteurs de question et les vecteurs de segment. Vous pouvez utiliser la distance euclide ou la distance manhattan.

Intégration de l’économie

Lorsque vous choisissez un modèle d’incorporation, vous devez parcourir un compromis entre les performances et les coûts. Les modèles d’incorporation volumineux ont généralement de meilleures performances sur les jeux de données d’évaluation. Mais l’augmentation des performances ajoute des coûts. Les vecteurs volumineux nécessitent davantage d’espace dans une base de données vectorielle. Ils nécessitent également davantage de ressources de calcul et de temps pour comparer les incorporations. Les petits modèles incorporés ont généralement des performances inférieures sur les mêmes benchmarks. Ils nécessitent moins d’espace dans votre base de données vectorielle et moins de calcul et de temps pour comparer les incorporations.

Lorsque vous concevez votre système, vous devez prendre en compte le coût de l’incorporation en termes de stockage, de calcul et de performances. Vous devez valider les performances des modèles via l’expérimentation. Les benchmarks disponibles publiquement sont principalement des jeux de données universitaires et peuvent ne pas s’appliquer directement à vos données métier et cas d’usage. Selon les exigences, vous pouvez favoriser les performances par rapport au coût ou accepter un compromis de bonnes performances pour réduire les coûts.

Étape suivante