Peu connus mais incontournables, les embeddings sont au cœur des systèmes d'IA. Ces représentations numériques denses transforment des données complexes et multiples (texte, code, images, ...) en vecteurs mathématiques exploitables, capables de capturer leurs relations sémantiques et contextuelles.
Dans cet article, nous allons explorer ensemble ce concept : qu’est-ce qu’un embedding, comment il fonctionne, et pourquoi il est indispensable pour exploiter pleinement le potentiel de nos modèles d'IA.
Qu’est-ce qu’un embedding ?
Un embedding est une représentation numérique d’un élément (texte, image, code, etc.) dans un espace vectoriel multidimensionnel. Contrairement aux approches traditionnelles basées sur des mots-clés ou des éléments isolés, les embeddings traduisent les relations sémantiques ou contextuelles des données. Ils permettent ainsi aux modèles IA de comparer, classifier et d'analyser efficacement des concepts.
Exemple :
Prenons la phrase : "canine companions say". En utilisant le modèle d’embedding d’OpenAI spécialisé dans la capture sémantique de morceaux de texte :
input = "canine companions say"
engine = "text-embedding-similarity-davinci-001"
output = [0.000108064, 0.005860855, -0.012656143, ...]
Le vecteur généré ne décrit pas directement les mots, mais capture des dimensions abstraites de leur sens, telles que "canine", "companions", ou "say". Ces dimensions permettent de comparer cette phrase à d’autres au sein de l'espace vectoriel.
Certains embeddings modernes, comme ceux générés par OpenAI, utilisent des espaces avec jusqu’à plus de 1 500 dimensions, offrant une granularité exceptionnelle pour capturer les nuances du langage. Bien que difficilement représentables pour nous humains, ces représentations sont parfaitement interprétables par les machines.
Parmi les autres modèles d'embedding, on retrouve ceux spécialisés dans la recherche de code "code-search-{ada, babbage}-{code, text}-001" ou encore "text-search-{ada, babbage, curie, davinci}-{query, doc}-001" pour la recherche par mots clés.
Les embeddings sont générés par des modèles d’apprentissage profond, souvent basés sur des architectures Transformer, comme GPT (d’où le T dans son nom).
Ces représentations permettent aux IA d’identifier rapidement des éléments, de les regrouper, ou de proposer des alternatives pertinentes en fonction de leurs similarités dans l’espace vectoriel.
Exploiter l’API OpenAI Embeddings
OpenAI propose un modèle puissant, "text-embedding-ada-002", pour générer des embeddings haute qualité. Ce modèle est optimisé pour des tâches variées comme la recherche sémantique ou la classification. Voici un exemple en Python tiré de la documentation officielle :
curl https://api.openai.com/v1/embeddings \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"input": "The food was delicious and the waiter...",
"model": "text-embedding-ada-002",
"encoding_format": "float"
}'
La réponse :
"data": [
{
"object": "embedding",
"embedding": [
0.0023064255,
-0.009327292,
.... (1536 floats total for ada-002)
-0.0028842222,
],
"index": 0
}
]
Les limites des embeddings
Comme on l'a vu ensemble, les embeddings sont essentiels aux modèles d'IA. Toutefois, ils ne sont pas infaillibles. Certains mots sans liens direct se retrouvent parfois proches dans l’espace vectoriel, à cause de cooccurrences dans les données d’entraînement du modèle. Cela peut amener l’IA à établir des associations inattendues ou fournir des réponses hors contexte. Ces limites rappellent l’importance d’un fine-tuning précis et d’un contrôle renforcé pour garantir des résultats fiables.
Pour plus d'information sur l'exploration des limites des embeddings, je vous recommande l'épisode "Ils ont hacké l'IA de Google" de _Underscore, dans lequel Roni Carta explique comment les embeddings ont été exploité.
Pour aller plus loin :
API OpenAI Embeddings : Documentation officielle
Publications scientifiques : ArXiv : On the Capabilities of OpenAI Embeddings
Autres API :
L'épisode de podcast : "Ils ont hacké l'IA de Google" de Underscore
Guillaume Rigaux - Technology Adoption Manager
Comments