Les applications modernes de recherche et de génération augmentée par la recherche (RAG) nécessitent des incorporations de vecteurs pour capturer le sens sémantique des objets de données (par exemple, du texte) et les représenter sous forme d’array de nombres. Dans cet article, nous vous guiderons sur la sélection du bon modèle d’incorporation pour votre application de recherche ou de RAG, en fonction de votre cas d’utilisation et de vos besoins spécifiques.
Déterminez si un modèle polyvalent serait suffisant pour atteindre vos objectifs, ou si vous avez des besoins spécifiques tels que la modalité (par exemple, texte uniquement ou multimodal), le domaine d’objet (par exemple, codage, droit, médical, multilingue, etc.) et le mode de déploiement. Dans la plupart des cas, commencer par un modèle polyvalent pour vos modalités souhaitées serait une ligne de base sensée.
La tableau d’efficacité des modèles d’incorporation (MTEB) est un bon point de départ pour avoir un aperçu du paysage actuel de la large gamme de modèles d’incorporation de texte propriétaires et open source. Pour chaque modèle d’incorporation, le MTEB répertorie diverses métriques telles que la taille du modèle, l’utilisation de la mémoire, les dimensions d’incorporation, le nombre maximal de jetons et son score pour des tâches telles que la recherche, la résumé, etc.
Voici quelques considérations pour choisir le meilleur modèle pour votre application:
Bien que le classement MTEB soit un excellent point de départ, vous devez prendre ses résultats avec prudence et scepticisme. Gardez à l’esprit que ces résultats sont auto-déclarés. Il est également possible que certains modèles produisent des scores de performance gonflés, car ils peuvent inclure les ensembles de données MTEB dans leurs données d’entraînement puisqu’ils sont publiquement disponibles. Enfin, les ensembles de données sur lesquels les modèles sont évalués pourraient ne pas représenter avec précision les données avec lesquelles vous travaillez. Ainsi, nous vous recommandons d’évaluer le modèle d’incorporation sur votre propre ensemble de données, comme nous vous le montrerons ci-dessous. Vous pouvez trouver le code associé dans notre [lien_vers_le_code].
Pour cela, vous pourriez générer un petit ensemble de données étiqueté à la main avec 50 à 100 objets de données et voir quelle performance vous pouvez atteindre. Nous allons créer un ensemble de données minimal avec huit pâtisseries différentes pour suivre l’exemple utilisé dans [lien_vers_l’exemple] et notre [lien_vers_le_guide]. Vous pouvez trouver le fichier .csv dans le [lien_vers_le_fichier].
ID | Nom de la pâtisserie | Description de la pâtisserie |
---|---|---|
1 | Bagel | Un pain rond classique avec un intérieur moelleux et une croûte dorée, parfait pour griller ou garnir de fromage à la crème, de saumon fumé ou de vos tartinades préférées. |
2 | Rouleau | Moelleux et moelleux, ces rouleaux sont des compagnons polyvalents pour n’importe quel repas. Dégustez-les frais sortis du four ou coupés pour des sandwichs, remplis de votre choix de viandes, fromages et légumes. |
3 | Beignet | Laissez-vous tenter par ces délices sucrés et frits. Glacés, saupoudrés ou garnis de crèmes décadentes et de confitures de fruits, chaque bouchée est une explosion de saveur et de nostalgie. |
4 | Muffin | Moelleux et tendre, ces muffins débordent de saveur. Que vous préfériez les myrtilles classiques, les pépites de chocolat indulgentes ou le son copieux, il y a un muffin pour chaque envie. |
5 | Croissant | Des couches beurrées de pâte feuilletée sont pliées à la perfection, créant une friandise délicate et irrésistible. Dégustez-les natures, farcis de garnitures salées ou accompagnés de votre café préféré. |
6 | Scone | Friable mais tendre, ces scones sont l’incarnation du confort. Dégustez-les natures ou parsemés de fruits, de noix ou de pépites de chocolat, accompagnés d’une cuillerée de crème caillée et de confiture. |
7 | Bretzel | Croquants à l’extérieur, moelleux à l’intérieur, ces bretzels sont le rêve d’un amateur de collations salées. Dégustez-les torsadés dans des formes traditionnelles ou trempés dans des garnitures sucrées ou salées pour une touche délicieuse. |
8 | Sandwich | Le pain fraîchement cuit est la base de ces sandwichs copieux. Empilez des couches de viandes, de fromages, de légumes croquants et de tartinades savoureuses pour un repas satisfaisant à emporter. |
Maintenant, générons et stockons les vecteurs d’incorporation correspondants dans notre base de données de vecteurs Weaviate. Pour cela, vous vous connecterez d’abord à un client Weaviate dans [lien_vers_le_client] pour la simplicité ().
Ensuite, vous configurerez une collection de données appelée [nom_de_la_collection] et configurerez les propriétés et le vectoriseur. Cet exemple utilise le modèle d’incorporation OpenAI [nom_du_modèle] pour vectoriser les données à l’importation et à la requête automatiquement. Notez que nous répéterons cette étape plus tard avec [nom_du_deuxième_modèle] pour comparer les deux modèles. Pour cela, vous voudrez peut-être jeter un œil à [lien_vers_la_documentation].
Enfin, vous pouvez importer vos données:
importer_vos_données
Maintenant, vous pouvez exécuter quelques requêtes:
quelques_requêtes
Cette section compare deux modèles d’incorporation OpenAI, [nom_du_premier_modèle] et [nom_du_deuxième_modèle], pour trois requêtes d’exemple. Notez que les résultats souhaités pour chaque requête sont très subjectifs. Mais c’est exactement le point: vous devez décider du résultat que vous souhaitez pour votre cas d’utilisation.
Divers [métriques] sont disponibles, tels que la précision, le rappel, MRR, MAP et NDCG. Dans cette section, nous utiliserons la précision et le rappel comme métriques d’évaluation.
Requête 1: “Pâtisserie sucrée”
Articles pertinents: Beignet, Muffin, Scone (Notez que cette liste est subjective car nous avons décidé de ce qui sera pertinent pour cette requête)
Résultats:
Rang | text-embedding-3-small | text-embedding-3-large |
---|---|---|
1 | ✅ Beignet | ❌ Croissant |
2 | ❌ Croissant | ✅ Beignet |
3 | ❌ Rouleau | ✅ Scone |
4 | ❌ Bagel | ❌ Sandwich |
Précision: 0.25 Rappel: 0.33
Requête 2: “Convient pour le déjeuner”
Articles pertinents: Sandwich, Bagel, Rouleau, Bretzel (Notez que cette liste est subjective car nous avons décidé de ce qui sera pertinent pour cette requête)
Résultats:
Rang | text-embedding-3-small | text-embedding-3-large |
---|---|---|
1 | ✅ Sandwich | ✅ Sandwich |
2 | ✅ Rouleau | ✅ Rouleau |
3 | ✅ Bagel | ✅ Bagel |
4 | ❌ Scone | ❌ Croissant |
Précision: 0.75 Rappel: 0.75
Requête 3: “Se marie bien avec de la confiture”
Articles pertinents: Bagel, Croissant, Rouleau (Notez que cette liste est subjective car nous avons décidé de ce qui sera pertinent pour cette requête)
Résultats:
Rang | text-embedding-3-small | text-embedding-3-large |
---|---|---|
1 | ❌ Sandwich | ❌ Scone |
2 | ✅ Bagel | ✅ Bagel |
3 | ❌ Scone | ❌ Beignet |
4 | ✅ Rouleau | ❌ Sandwich |
Précision: 0.5 Rappel: 0.67
À travers les trois requêtes d’exemple, à la fois [nom_du_premier_modèle] et [nom_du_deuxième_modèle] donnent une précision moyenne de 0.5 et un rappel moyen de 0.58, bien qu’ils renvoient des résultats différents pour les requêtes. Comme vous pouvez le voir, vous devrez augmenter à la fois le nombre d’objets de données dans l’ensemble de données et le nombre de requêtes pour évaluer les modèles d’incorporation. Cependant, cet petit exemple devrait vous donner un bon point de départ pour construire votre propre pipeline d’évaluation.
Après avoir construit un pipeline initial pour votre cas d’utilisation avec un petit modèle de base, vous pouvez expérimenter avec quelques modèles d’incorporation différents et voir si vous pouvez faire mieux que votre choix de base.
L’ajustement fin d’un modèle d’incorporation n’est qu’une étape facultative. Idéalement, vous pouvez trouver un modèle adapté tel quel, et l’ajustement fin ne serait peut-être nécessaire que pour obtenir les dernières performances.
Cet article est inspiré d’une récente discussion entre [nom_de_la_personne] et [nom_de_la_personne]. Il a discuté des étapes que vous pouvez suivre pour sélectionner le bon modèle d’incorporation pour votre application de recherche ou d’IA générative. Vous pouvez écouter la discussion complète sur YouTube et trouver le code associé dans notre [lien_vers_le_code].
Consultez [lien_vers_la_ressource], et commencez à construire des applications incroyables avec l’essai gratuit de [nom_du_produit].
Inscrivez-vous à notre newsletter bihebdomadaire pour rester informé!
By submitting, I agree to the terms and conditions and privacy policy.
[iframe_vers_la_newsletter]