AI Engineering
Comprendre les embeddings et la similarité vectorielle
Représentez le sens par des nombres, comparez les directions et distinguez similarité sémantique et preuve.
// vous allez apprendre
- Décrire un embedding
- Implémenter la similarité cosinus
- Respecter la compatibilité des modèles
Le texte devient un vecteur
Un modèle d'embedding transforme le texte en un vecteur de longueur fixe. Des textes proches par le sens occupent souvent des directions voisines dans l'espace du modèle. Les coordonnées sont des représentations apprises, pas des étiquettes interprétables séparément.
Comparer les directions
Pour deux vecteurs non nuls, la similarité cosinus est le produit scalaire divisé par le produit des normes. Deux directions identiques donnent 1 ; des directions orthogonales donnent 0. Des scores négatifs sont possibles. Ce score n'est ni une probabilité ni une preuve de véracité.
public static double Cosine(double[] a, double[] b)
{
if (a.Length == 0 || a.Length != b.Length)
throw new ArgumentException("Equal non-empty dimensions required.");
double dot = 0, aa = 0, bb = 0;
for (int i = 0; i < a.Length; i++)
{
dot += a[i] * b[i];
aa += a[i] * a[i];
bb += b[i] * b[i];
}
if (aa == 0 || bb == 0) return 0;
return dot / (Math.Sqrt(aa) * Math.Sqrt(bb));
}Calculer des exemples simples
[1,0] et [1,0] donnent 1. [1,0] et [0,1] donnent 0. [1,0] et [-1,0] donnent -1. Notre convention renvoie 0 pour un vecteur nul, alors que le cosinus mathématique est indéfini. En production, rejetez ou traitez séparément ces vecteurs invalides.
Respecter les frontières du modèle
Utilisez le même modèle et un prétraitement compatible pour les documents et les requêtes. Mélanger des modèles ou des dimensions produit des comparaisons sans sens. Versionnez et reconstruisez l'index si le modèle change.
Exercice
Testez les vecteurs identiques, perpendiculaires, nuls et les dimensions différentes. Expliquez ensuite pourquoi deux documents proches sémantiquement peuvent se contredire.