Les modèles d'embedding sont des réseaux de neurones basés sur des transformers, qui transforment les morceaux de documents (c’est-à-dire les passages de texte) en représentation numérique ou vecteur. Les contenus ayant une signification similaire seront mappés à une représentation similaire dans l’espace latent, comme on le voit dans l’image ci-dessous.
La vectorisation du langage permet des applications alimentées par l’A de type « discuter avec les documents» ou la recherche sémantique, à la place de la recherche traditionnelle par mots-clés (lexicale).
Le modèle d’embedding que vous choisissez aura un impact significatif sur la précision de la récupération, la latence et le coût de calcul de votre système RAG. Votre choix de modèle d’embedding sera largement influencé par sa taille, qui dépend de deux caractéristiques : la dimension d’embedding et le nombre de paramètres du modèle.
Un modèle d’embedding plus grand améliore généralement la performance de récupération, mais au prix d’une latence, d’un stockage et d’un coût (financier) de calcul accrus. Inversement, un modèle d’embedding plus petit offre généralement une performance de récupération réduite, mais occupe moins de mémoire, nécessite moins de puissance de calcul et est plus rapide à l’exécution. Choisissez un modèle d’embedding qui concilie exigences de performance et ressources disponibles.
Certains modèles d’embedding sont spécifiques à une langue (par exemple, les modèles d’embedding espagnols conçus pour des clients espagnols) et à un domaine (par exemple, un modèle entraîné sur la terminologie oncologique pour permettre la RAG sur les dossiers médicaux).
Il est recommandé d’utiliser des modèles d’embedding déployés dans watsonx : les modèles Slate développés par IBM ou les modèles tiers listés ci-dessous. Veuillez consulter cette documentation pour obtenir des détails sur chaque modèle. Pour plus d’informations sur les classes de facturation, consultez les formules tarifaires de watsonx.
Modèles IBM Slate
| Nom de modèle | model_id de l’API | Classe de facturation | Nombre maximum de tokens d’entrée | Nombre de dimensions | Plus d’informations |
|---|---|---|---|---|---|
| slate-125m-english-rtrvr | ibm/slate-125m-english-rtrvr | Classe C1 | 512 | 768 | Fiche du modèle |
| slate-30m-english-rtrvr | ibm/slate-30m-english-rtrvr | Classe C1 | 512 | 384 | Fiche du modèle |
Le modèle de fondation slate-125m-english-rtrvr est fourni par IBM. Le modèle de fondation slate-125m-english-rtrvr génère des embeddings pour diverses entrées telles que les requêtes, les passages et les documents. L’objectif de l’entraînement est de maximiser la similarité cosinus entre une requête et un passage. Ce processus permet d’obtenir deux embeddings de phrases, l’un représentant la question et l’autre le passage, ce qui permet de comparer les deux par le biais de la similarité cosinus.
Utilisation : deux à trois fois plus lent, mais légèrement plus performant que le modèle slate-30m-english-rtrvr. Langues prises en charge : anglais
Le modèle de fondation slate-30m-english-rtrvr est une version distillée du modèle slate-125m-english-rtrvr, tous deux fournis par IBM. Le modèle d’embedding slate-30m-english-rtrvr est entraîné pour maximiser la similarité cosinus entre deux entrées textuelles, afin que les embeddings puissent être évalués ultérieurement sur le critère de similarité.
Utilisation : deux à trois fois plus rapide et avec des scores de performance légèrement inférieurs à ceux du modèle slate-125m-english-rtrvr. Langues prises en charge : anglais
Modèles d’embedding tiers disponibles avec watsonx
| Nom de modèle | model_id de l’API | Fournisseur | Classe de facturation | Nombre maximum de tokens d’entrée | Nombre de dimensions | Plus d’informations |
|---|---|---|---|---|---|---|
| all-minilm-l12-v2 | sentence-transformers/all-minilm-l12-v2 | Communauté open source de traitement automatique du langage naturel (TAL) et de vision par ordinateur (CV) | Classe C1 | 256 | 384 | Fiche du modèle |
| multilingual-e5-large | intfloat/multilingual-e5-large | Microsoft | Classe C1 | 512 | 1024 | Fiche de modèle, article de recherche |
Le modèle d’embedding all-minilm-l12-v2 est construit par la communauté open source de traitement automatique du langage naturel (TAL) et de vision par ordinateur (CV), et fourni par HuggingFace.
Langues prises en charge : anglais
Utilisation : pour les cas d’utilisation qui consistent à générer des embeddings textuels dans une langue autre que l’anglais.
Langages naturels pris en charge : jusqu’à 100 langues. Voir la fiche du modèle pour plus de détails.
Pour plus d’informations sur les modèles d’embedding pris en charge, consultez la documentation watsonx.
Installer la bibliothèque Python ibm-watsonx-ai
pip install -U ibm-watsonx-ai
Utilisez l’API watsonx embeddings et les modèles d’embedding disponibles pour générer des embeddings textuels.
from ibm_watsonx_ai.metanames import EmbedTextParamsMetaNames as EmbedParams
from ibm_watsonx_ai.foundation_models.utils.enums import EmbeddingTypes
from ibm_watsonx_ai.foundation_models import Embeddings
# Donnez à truncate_input_tokens une valeur égale ou inférieure à la valeur maximale autorisée pour le modèle d’embedding que vous utilisez. Si vous ne spécifiez pas cette valeur et que l’entrée contient plus de tokens que le modèle ne peut en traiter, une erreur est générée.
embed_params = {
EmbedParams.TRUNCATE_INPUT_TOKENS: 128,
EmbedParams.RETURN_OPTIONS: {
'input_text': True
}
}
embedding = Embeddings(
model_id=EmbeddingTypes.IBM_SLATE_30M_ENG,
credentials=credentials,
params=embed_params,
project_id=project_id,
space_id=None,
verify=False
)
q = [
"Un modèle de fondation est un modèle d’IA générative à grande échelle qui peut être adapté à un large éventail de tâches en aval.",
"L’IA générative est une classe d’algorithmes d’IA capables de produire divers types de contenu, notamment des textes, du code source, des images, de l’audio et des données synthétiques."
]
embedding_vectors = embedding.embed_documents(texts=q)
print(embedding_vectors)
Mise à jour : 15 novembre 2024