Comprendre les Embeddings et le Search Vectoriel
Le mécanisme derrière le RAG et la recherche sémantique. Comment ça marche dans l'espace multidimensionnel.
Si vous vous êtes intéressé à l’IA moderne (et particulièrement au RAG), vous avez croisé le terme “Embedding”. Mais de quoi s’agit-il vraiment, mathématiquement et logiquement parlant ?
Les ordinateurs ne comprennent pas le sens des mots. Ils ne voient que des caractères ASCII. L’embedding est la solution technique à ce problème, c’est l’art de convertir du sens (de la sémantique) en mathématiques.
Le concept de l’Espace Vectoriel
Imaginez un espace en 3 dimensions (X, Y, Z). Plutôt que des coordonnées spatiales, disons que nos axes représentent des concepts.
- Axe X. Féminité vs Masculinité
- Axe Y. Jeunesse vs Vieillesse
- Axe Z. Royauté vs Roturier
Si on place le mot “Roi”, il aura un score élevé en Masculinité, Vieillesse et Royauté. Ses coordonnées pourraient être [0.9, 0.8, 0.9].
Le mot “Princesse” aura un score élevé en Féminité, Jeunesse et Royauté. Ses coordonnées pourraient être [-0.9, -0.8, 0.9].
Les coordonnées de ces mots sont leurs vecteurs (ou embeddings).
La puissance du système, c’est que la distance spatiale entre ces points représente leur proximité sémantique. “Roi” et “Reine” seront très proches. “Pomme” sera très loin.
En réalité, un modèle d’embedding (comme ceux d’OpenAI ou de HuggingFace) n’utilise pas 3 dimensions, mais souvent 384, 768 ou 1536 dimensions abstraites trouvées par apprentissage profond.
Pourquoi c’est révolutionnaire pour la recherche
Historiquement, un moteur de recherche classique (comme Elasticsearch) utilise des techniques basées sur les mots-clés (BM25, TF-IDF). Si vous cherchez “chien malade”, il cherche des textes contenant exactement les mots “chien” et “malade”.
Si votre base de données contient le texte “Le chiot nécessite des soins vétérinaires”, la recherche classique ne trouvera rien. Zéro correspondance textuelle.
La recherche vectorielle (Vector Search), elle, va.
- Calculer le vecteur de votre recherche “chien malade”.
- Chercher dans la base de données quels vecteurs sont mathématiquement les plus proches.
- Trouver la phrase sur le chiot, car dans notre espace à 768 dimensions, les concepts de “chien/chiot” et “malade/soins” sont voisins.
La distance Cosinus
Comment calcule-t-on que deux vecteurs sont proches ? On utilise généralement la “similarité cosinus” (Cosine Similarity).
Au lieu de calculer la distance linéaire entre deux points, on calcule l’angle entre les deux vecteurs partant de l’origine.
- Si l’angle est de 0° (les flèches pointent dans la même direction), la similarité est de 1. Les sens sont identiques.
- Si l’angle est de 90° (perpendiculaire), la similarité est de 0. Il n’y a aucun rapport.
- Si l’angle est de 180° (opposé), la similarité est de -1. C’est l’inverse absolu.
L’écosystème technique
Pour manipuler ces concepts en code, on n’utilise pas des bases SQL standards. On a besoin de bases de données optimisées pour faire des calculs géométriques ultra-rapides sur des millions de tableaux de nombres.
Nous pouvons utiliser des outils comme.
- ChromaDB / Qdrant / Milvus. Des bases de données vectorielles dédiées.
- pgvector. Une extension fantastique pour PostgreSQL qui ajoute le support natif des vecteurs.
- FAISS. Une bibliothèque C++ de Facebook pour la recherche de similarité très haute performance en mémoire vive.
L’embedding, c’est ce qui fait le lien entre le texte brut et la capacité des LLMs à le traiter.