almessadi.
Retour à l'index

La similarité cosinus vs le produit scalaire dépend de vos embeddings_

La bonne métrique de similarité vectorielle dépend de la normalisation des embeddings et de la manière dont le système de recherche interprète la magnitude par rapport à la direction.

Publié12 février 2025
Temps de lecture7 min read

La qualité de la recherche vectorielle ne dépend pas seulement de la base de données. Tout commence par les mathématiques que vous utilisez pour comparer les embeddings. Les équipes choisissent souvent une métrique de similarité presque par accident, puis se demandent pourquoi la qualité de la recherche semble inconstante.

La différence pratique

La similarité cosinus se soucie de l'angle, ce qui signifie qu'elle mesure si deux vecteurs pointent dans la même direction. Le produit scalaire combine l'angle et la magnitude.

Cette différence est importante car certains modèles d'embeddings produisent des vecteurs normalisés et d'autres non. Si les vecteurs sont normalisés à une longueur unitaire, la similarité cosinus et le produit scalaire deviennent étroitement liés :

function dot(a: number[], b: number[]) {
  return a.reduce((sum, value, index) => sum + value * b[index], 0);
}

function cosine(a: number[], b: number[]) {
  const normA = Math.sqrt(dot(a, a));
  const normB = Math.sqrt(dot(b, b));
  return dot(a, b) / (normA * normB);
}

Pourquoi cela a de l'importance dans la recherche

Si la magnitude a une signification dans votre pipeline d'embeddings, le produit scalaire peut être utile. Si seule la similarité directionnelle compte, la similarité cosinus est souvent l'option la plus sûre.

Cela signifie que la bonne métrique dépend de :

  • si les embeddings sont normalisés
  • si la magnitude du vecteur encode un signal utile
  • ce que votre modèle de recherche attend

Meilleure règle

Ne choisissez pas la similarité cosinus ou le produit scalaire simplement parce qu'un tutoriel l'a fait. Consultez la documentation du modèle d'embeddings, examinez si les vecteurs sont normalisés et évaluez la métrique par rapport à vos jugements de pertinence réels.

La recherche vectorielle est composée de mathématiques plus de données plus des attentes de produit. Omettre l'un de ces trois éléments produit généralement une recherche faible.

Lectures supplémentaires