0Pricing
AI Agents · Leçon

Similarité cosinus pour la recherche

La similarité cosinus mesure l’angle entre deux vecteurs : c’est la métrique de distance standard de la recherche sémantique.

Similarité cosinus pour la recherche est une leçon AI Agents gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage AI Agents, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours AI Agents comprend 4 leçons au total.

Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.

Mesurer la similarité

À quel point deux vecteurs sont-ils proches ? Trois métriques de distance courantes :

  • similarité cosinus — angle entre les vecteurs
  • produit scalaire — projection
  • distance euclidienne (L2) — distance en ligne droite

Pour les représentations vectorielles de texte, le cosinus est la valeur par défaut.

Formule de similarité cosinus

Pour les vecteurs A et B :

cos(A, B) = (A . B) / (|A| * |B|)

Le résultat est compris entre -1 et 1 :

  • 1 = direction identique
  • 0 = orthogonaux (sans lien)
  • -1 = directions opposées

En Python avec NumPy

Implémentation simple :

import numpy as np

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

print(cosine_similarity(vec_apple, vec_orange))   # high
print(cosine_similarity(vec_apple, vec_car))      # low

Vecteurs pré-normalisés

Si vos représentations vectorielles sont déjà normalisées (celles d'OpenAI le sont), le cosinus équivaut au produit scalaire et vous pouvez omettre la division :

def cosine_normalized(a, b):
    return np.dot(a, b)   # faster

Recherche des K meilleurs résultats

Pour trouver les K documents les plus similaires à une requête, calculez la similarité avec chaque document, puis triez-les :

def topk(query_vec, doc_vecs, k=5):
    scores = [(np.dot(query_vec, v), i) for i, v in enumerate(doc_vecs)]
    scores.sort(reverse=True)
    return scores[:k]

Mise à l'échelle

La recherche naïve des K meilleurs résultats est en O(N) par requête — cela convient pour 10 000 documents, mais devient lente avec 10 millions. Pour les grands corpus, utilisez des index de recherche approximative des plus proches voisins (ANN) : HNSW, IVF, FAISS.

Pourquoi pas la distance euclidienne ?

La distance L2 considère que la LONGUEUR du vecteur est significative. Pour les représentations vectorielles, la direction compte davantage que l'amplitude — c'est pourquoi la similarité cosinus est préférable.

(Pour des vecteurs normalisés, L2 et la similarité cosinus produisent le même classement, cela ne fait donc aucune différence.)

Produit scalaire ou cosinus

Si les vecteurs sont déjà normalisés, le produit scalaire équivaut au cosinus et son calcul est plus rapide (sans division). La plupart des systèmes en production utilisent le produit scalaire sur des vecteurs normalisés.

A Tiny End-to-End Retrieval

docs = ['Python is a programming language', 'Pizza is Italian food', 'The Eiffel Tower is in Paris']
doc_vecs = [embed(d) for d in docs]

query_vec = embed('What is Python?')
scores = [(cosine_similarity(query_vec, v), d) for v, d in zip(doc_vecs, docs)]
scores.sort(reverse=True)
for s, d in scores:
    print(f'{s:.3f}  {d}')
# 0.83  Python is a programming language
# 0.45  Pizza is Italian food
# 0.41  The Eiffel Tower is in Paris

Recherche hybride

Combinez la similarité cosinus avec une recherche par mots-clés (BM25) pour obtenir le meilleur des deux approches : recherche sémantique et correspondance exacte. La plupart des systèmes en production utilisent aujourd'hui une recherche hybride.

Filtrage par seuil

Écartez les résultats dont la similarité est inférieure à un seuil afin d'éviter de fournir au LLM un contexte non pertinent :

results = [r for r in retrieved if r.score > 0.7]

Plage de la similarité cosinus

Quelle est la plage des valeurs de similarité cosinus ?

Récapitulatif

La similarité cosinus est la métrique standard pour la recherche fondée sur des représentations vectorielles. Combinez-la avec une recherche hybride et ANN pour passer à l'échelle de la production.

Questions Fréquemment Posées

La leçon « Similarité cosinus pour la recherche » est-elle gratuite ?

Oui — le texte complet de « Similarité cosinus pour la recherche » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours AI Agents, passe à CoddyKit PRO. Le cours AI Agents comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Similarité cosinus pour la recherche » ?

La similarité cosinus mesure l’angle entre deux vecteurs : c’est la métrique de distance standard de la recherche sémantique. Tu pratiques AI Agents avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer AI Agents ?

Aucune expérience préalable n'est requise. AI Agents sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.

Combien de temps prend la leçon « Similarité cosinus pour la recherche » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon AI Agents ?

Oui. Chaque leçon AI Agents inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Que sont les embeddings (représentations vectorielles)
  2. Générer des embeddings avec text-embedding-3
  3. Similarité cosinus pour la recherche
  4. Comparer les modèles d’embeddings (OpenAI, Cohere et OSS)
← Retour à AI Agents