La similarité cosinus mesure à quel point deux vecteurs « pointent dans la même direction ». Imaginez deux flèches partant de l'origine : peu importe leur longueur, seul compte l'angle entre elles. Plus l'angle est petit, plus les deux objets sont sémantiquement proches. C'est l'outil de base pour comparer des embeddings en IA.
La formule
On compare deux vecteurs $\vec{A}$ et $\vec{B}$ via le cosinus de leur angle :
$$\text{sim}(\vec{A}, \vec{B}) = \cos(\theta) = \frac{\vec{A} \cdot \vec{B}}{|\vec{A}|\, |\vec{B}|}$$
Le produit scalaire au numérateur est normalisé par le produit des normes. Le résultat est borné entre -1 et 1 :
| Valeur | Angle | Interprétation |
|---|---|---|
| 1 | 0° | Direction identique (très similaires) |
| 0 | 90° | Vecteurs orthogonaux (sans rapport) |
| -1 | 180° | Sens opposés |
Avec des embeddings de texte, les valeurs sont le plus souvent comprises entre 0 et 1.
Pourquoi pas la distance euclidienne ?
La grande force du cosinus est d'ignorer la magnitude. Un texte long et un texte court traitant du même sujet auront des vecteurs de longueurs différentes, mais une même orientation. Le cosinus capte la sémantique, pas le volume — d'où sa domination dans :
- la recherche sémantique et les bases vectorielles ;
- les systèmes RAG (retrieval-augmented generation) ;
- les moteurs de recommandation et le clustering.
Comparer deux idées revient à mesurer l'angle entre leurs vecteurs : le sens prime sur la taille.