Fondamentaux

Embeddings Expliqués

Découvrez comment les mots et concepts sont transformés en vecteurs numériques, permettant aux machines de comprendre le sens et les relations sémantiques. De Word2Vec à BERT et GPT-4o.

Partager :

🧠 Qu'est-ce qu'un embedding ?

Les ordinateurs ne comprennent pas les mots comme nous. Pour qu'un modèle de langage puisse traiter du texte, il faut d'abord convertir les mots en nombres. C'est là qu'interviennent les embeddings.

❌ Approche naïve
One-Hot Encoding
chat   = [1, 0, 0, 0, 0, ...]  (50 000 dimensions)
chien  = [0, 1, 0, 0, 0, ...]
voiture= [0, 0, 1, 0, 0, ...]

Problèmes : Vecteurs énormes (taille du vocabulaire), aucune notion de similarité (chat et chien sont aussi éloignés que chat et voiture).

✅ Embeddings denses
Représentation vectorielle
chat   = [0.23, -0.45, 0.12, ...]  (768 dimensions)
chien  = [0.25, -0.42, 0.15, ...]  ← Proche !
voiture= [-0.67, 0.89, -0.34, ...] ← Éloigné

Avantages : Vecteurs compacts (256-768D), capture les relations sémantiques (mots similaires = vecteurs proches).

💡 Analogie visuelle

Imaginez un espace 3D où chaque mot est un point. Les animaux (chat, chien, oiseau) sont regroupés dans une zone, les véhicules (voiture, vélo, avion) dans une autre. Les embeddings créent cet espace multidimensionnel (768D pour BERT) où la distance entre points = similarité sémantique.

📈 Évolution des embeddings

2013
Word2Vec
Embeddings statiques par Google

Principe : Un mot = un vecteur fixe, appris en prédisant les mots voisins (CBOW) ou en prédisant le contexte d'un mot (Skip-gram).

# Exemple célèbre d'arithmétique vectorielle
roi - homme + femme ≈ reine
Paris - France + Italie ≈ Rome

Limite : Pas de contexte. "banque" a le même vecteur dans "banque de données" et "banque de rivière".

2018
BERT Embeddings
Embeddings contextuels bidirectionnels

Principe : Le vecteur d'un mot dépend de son contexte. BERT lit la phrase entière (bidirectionnel) pour générer des embeddings.

"J'ai ouvert un compte en banque"
→ banque = [0.12, -0.34, ...] (institution financière)

"Je me suis assis sur la banque de la rivière"
→ banque = [-0.45, 0.67, ...] (bord de rivière)

Taille : BERT-base = 768 dimensions, BERT-large = 1024 dimensions

2018-2025
GPT Embeddings
Embeddings contextuels pour génération

Principe : Comme BERT mais unidirectionnel (gauche → droite) pour la génération autoregressive. GPT-4o utilise des embeddings de 12 288 dimensions.

# GPT-4o (2024)
Dimension : 12 288
Vocabulaire : ~200 000 tokens
Contexte : 128 000 tokens

Usage : Génération de texte, chat, code, traduction. Les embeddings capturent le sens profond pour prédire le prochain token.

Visualisation interactive : t-SNE

Explorez comment les embeddings regroupent les mots sémantiquement proches. Cliquez sur un mot pour voir ses voisins et calculer la similarité cosinus.

Visualisation t-SNE des Embeddings
Projection 2D de vecteurs de mots. Les mots sémantiquement proches sont regroupés dans l'espace.
IA & ML
Modèles
NLP
Maths
Concepts
transformerattentionneuraldeep learninggradientbackpropoptimizerlossGPTBERTClaudeGeminiLlamaMistralT5RoBERTatokenembeddingvocabularysequencelanguagetextwordsentencevectormatrixtensordimensioncosinesimilaritydistancenormtraininginferencefine-tuningpre-trainingquantizationpruningdistillationLoRA

📊 t-SNE (t-Distributed Stochastic Neighbor Embedding)

Algorithme de réduction de dimensionnalité qui projette des vecteurs haute dimension (ex: 768D pour BERT) en 2D tout en préservant les relations de proximité sémantique.

🎯 Similarité cosinus

Mesure l'angle entre deux vecteurs. Valeur de 0 (orthogonaux) à 1 (identiques). Utilisée pour trouver des mots sémantiquement proches : cos(θ) = A·B / (||A|| ||B||)

Exemples de relations sémantiques :

🎯 Similarité cosinus

Pour mesurer à quel point deux mots sont sémantiquement proches, on calcule la similarité cosinus entre leurs vecteurs.

Formule mathématique :

cos(θ) = (A · B) / (||A|| × ||B||)

Où :
• A · B = produit scalaire des vecteurs
• ||A|| = norme (longueur) du vecteur A
• θ = angle entre les deux vecteurs

Résultat : -1 (opposés) à +1 (identiques)
Très similaires

Similarité > 0.8

  • • chat ↔ chien (0.92)
  • • GPT ↔ BERT (0.87)
  • • transformer ↔ attention (0.85)
Moyennement liés

Similarité 0.4 - 0.8

  • • animal ↔ voiture (0.52)
  • • training ↔ inference (0.68)
  • • vector ↔ embedding (0.73)
Non liés

Similarité < 0.4

  • • chat ↔ ordinateur (0.15)
  • • GPT ↔ banane (0.08)
  • • transformer ↔ pizza (0.12)

🚀 Applications pratiques

Recherche sémantique

Trouver des documents pertinents même sans mots-clés exacts. Recherche "voiture rapide" → trouve aussi "automobile véloce", "bolide", etc.

Vector databases : Pinecone, Weaviate, Qdrant
RAG (Retrieval-Augmented Generation)

Combiner recherche sémantique + LLM. Embedder la question, trouver les documents pertinents, puis générer une réponse avec GPT-4o basée sur ces documents.

Utilisé par ChatGPT, Claude, Perplexity
Classification de texte

Utiliser les embeddings comme features pour un classifieur. Exemple : sentiment analysis, détection de spam, catégorisation d'articles.

Accuracy > 90% avec BERT embeddings
Recommandation

Embedder les produits/articles/films, puis recommander ceux avec embeddings similaires aux préférences de l'utilisateur.

Netflix, Spotify, Amazon

💻 En pratique : Générer des embeddings

Avec OpenAI (GPT-4o embeddings)
from openai import OpenAI

client = OpenAI(api_key="sk-...")

# Générer embedding pour un texte
response = client.embeddings.create(
    model="text-embedding-3-large",  # 3072 dimensions
    input="Les Transformers révolutionnent l'IA"
)

embedding = response.data[0].embedding
print(f"Dimension: {len(embedding)}")  # 3072
print(f"Premiers valeurs: {embedding[:5]}")

# Calculer similarité entre deux textes
import numpy as np

def cosine_similarity(a, b):
    return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))

emb1 = client.embeddings.create(model="text-embedding-3-large", input="chat").data[0].embedding
emb2 = client.embeddings.create(model="text-embedding-3-large", input="chien").data[0].embedding
similarity = cosine_similarity(emb1, emb2)
print(f"Similarité chat-chien: {similarity:.3f}")  # ~0.85
Avec Sentence Transformers (local, gratuit)
from sentence_transformers import SentenceTransformer, util

# Charger modèle pré-entraîné
model = SentenceTransformer('all-MiniLM-L6-v2')  # 384 dimensions

# Générer embeddings
sentences = [
    "Les Transformers révolutionnent l'IA",
    "L'architecture Transformer est puissante",
    "J'aime les pizzas"
]

embeddings = model.encode(sentences)
print(f"Shape: {embeddings.shape}")  # (3, 384)

# Calculer similarités
similarities = util.cos_sim(embeddings, embeddings)
print(similarities)

# Résultat:
# [[1.00, 0.78, 0.12],   # Phrase 1 vs toutes
#  [0.78, 1.00, 0.09],   # Phrase 2 vs toutes
#  [0.12, 0.09, 1.00]]   # Phrase 3 vs toutes
Soyez le premier à donner votre avis !

Votre retour est précieux pour améliorer cette page. Partagez votre expérience ci-dessous.

Question 1 / 3Score : 0 / 0
Embeddings Expliqués
Testez vos connaissances

Qu'est-ce qu'un embedding ?

Votre avis compte ! 💡
Aidez-nous à améliorer cette page en partageant votre expérience. Votre retour est précieux pour rendre le contenu encore plus clair et utile.

Comment évaluez-vous cette page ?

🍪 Gestion des cookies
Nous utilisons des cookies pour améliorer votre expérience de navigation, analyser l'utilisation du site et vous proposer des contenus personnalisés. Vous pouvez accepter tous les cookies, les refuser ou personnaliser vos préférences.