Calculateur de similarité cosinus
Mesurez à quel point deux vecteurs pointent dans la même direction, de -1 s'ils sont opposés à 1 s'ils coïncident. La longueur ne compte pas : 1, 2, 3 et 10, 20, 30 obtiennent un 1 parfait, idéal pour comparer textes, notes ou sondages. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Premier texte
- 1, 2, 3
- Second texte
- 4, -5, 6
- N
- 3
- Produit scalaire
- 12
- Norme de a
- 3,7416573868
- Norme de b
- 8,7749643874
Vous envoyez les deux listes de composantes — plongements, poids de caractéristiques, comptages de termes, scores d'enquête — et elle renvoie le produit scalaire, les deux normes et un unique score de similarité entre -1 et 1 : 1 signifie direction identique, 0 signifie orthogonal et -1 signifie opposé.
Ce que la similarité cosinus mesure vraiment
La distance euclidienne indique à quelle distance se trouvent deux points ; la similarité cosinus indique s'ils pointent dans la même direction. Cette distinction compte plus qu'il n'y paraît. Deux documents peuvent avoir des longueurs très différentes et porter sur le même sujet ; deux profils de clients peuvent différer en dépenses absolues et partager la même forme de préférences.
En divisant le produit scalaire par le produit des normes, la similarité cosinus élimine l'échelle et ne conserve que la direction. Le résultat se situe toujours entre -1 et 1. Un score de 1 signifie que les vecteurs sont parfaitement alignés, 0 qu'ils sont orthogonaux et ne partagent aucune composante directionnelle, et -1 qu'ils sont exactement opposés.
Comme la norme est éliminée, un vecteur [1, 2, 3] et un vecteur [10, 20, 30] obtiennent un 1 parfait : ils décrivent les mêmes proportions à des intensités différentes, ce qui est précisément ce que recherchent la plupart des comparaisons de textes, de goûts ou de comportements.
Comment le score est calculé
Il accumule ensuite trois sommes en une seule passe : le produit scalaire Σ aᵢbᵢ et les normes au carré Σ aᵢ² et Σ bᵢ². La similarité est le produit scalaire divisé par le produit des racines carrées des normes, bornée dans [-1, 1] pour absorber le bruit des flottants et arrondie à douze décimales afin que la réponse soit stable octet par octet d'une machine à l'autre.
Si l'un des vecteurs a une norme nulle — toutes ses composantes sont nulles — la division est indéfinie et l'appel échoue avec un message explicite, car un vecteur nul n'a pas de direction à comparer. La réponse inclut également le produit scalaire, les deux normes, une classification lisible et les étapes intermédiaires pour vous permettre de vérifier chaque chiffre.
Où elle s'intègre en pratique
La similarité cosinus est la métrique de référence derrière la recherche sémantique, les moteurs de recommandation, la déduplication et le contrôle qualité des regroupements. Si vous stockez des plongements de texte pour la recherche, c'est le score qui classe les candidats ; si vous construisez des profils d'utilisateurs comme vecteurs de caractéristiques, c'est ainsi que vous trouvez les plus proches voisins.
Pour les équipes qui comparent de nombreux vecteurs, l'arrondi stable et les cas d'erreur explicites rendent son utilisation sûre dans les tests et les suites de régression : les longueurs différentes et les vecteurs nuls échouent bruyamment au lieu de produire des classements silencieusement faux.
Cas d’usage
Classer des candidats de plongements
Évaluez la proximité du plongement d'une requête avec chaque plongement de document et classez les résultats par similarité directionnelle, pas par longueur de vecteur.
Détecter les éléments quasi identiques
Marquez deux vecteurs de caractéristiques comme doublons lorsque leur similarité cosinus dépasse un seuil proche de 1, même si leurs comptages bruts diffèrent.
Comparer des profils de préférences
Trouvez des utilisateurs ayant la même forme de goûts en comparant des vecteurs normalisés de notes ou de comportements pour un moteur de recommandation.
Questions fréquentes
Combien cela coûte-t-il ?
L'exécution est également gratuite dans votre navigateur sur cette page avec le même code.
Que signifie un score de 0 ?
Les vecteurs sont orthogonaux : ils ne partagent aucune composante directionnelle. Un score de 1 signifie direction identique et -1 des directions exactement opposées.
Que se passe-t-il avec un vecteur nul ?
Un vecteur dont toutes les composantes sont nulles n'a pas de direction, donc la similarité est indéfinie et l'appel échoue avec une erreur claire au lieu de renvoyer un nombre trompeur.
La norme du vecteur affecte-t-elle le score ?
Non. Le score ne mesure que la direction : [1, 2, 3] et [10, 20, 30] ont une similarité cosinus de 1 car leurs proportions sont identiques.
Quels formats d'entrée sont acceptés ?
Les composantes doivent être des nombres finis dans les limites publiées.
Outils associés
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/math/cosine-similarity \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"a":[1,2,3],"b":[4,-5,6]}'const res = await fetch("https://api.kit.forhosting.com/math/cosine-similarity", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"a": [
1,
2,
3
],
"b": [
4,
-5,
6
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/math/cosine-similarity",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"a": [
1,
2,
3
],
"b": [
4,
-5,
6
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/math/cosine-similarity", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"a":[1,2,3],"b":[4,-5,6]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"a":[1,2,3],"b":[4,-5,6]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/math/cosine-similarity", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"a": [
1,
2,
3
],
"b": [
4,
-5,
6
]
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "math.cosine_similarity",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Limites
max_abs | 1000000000000 |
max_dim | 1000 |
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |
Notes techniques
L'API de similarité cosinus mesure à quel point deux vecteurs pointent dans la même direction, quelle que soit leur longueur. Elle s'exécute en une seule passe déterministe, de sorte que le nombre affiché dans la version gratuite du navigateur est exactement celui que renvoie l'API payante.
Comment le score est calculé
Le point de terminaison convertit les deux entrées en vecteurs de nombres finis, en acceptant aussi bien les tableaux JSON que le texte brut séparé par des virgules, et vérifie que les deux ont la même longueur — une comparaison entre vecteurs de dimensions différentes n'a aucun sens mathématique, elle est donc rejetée avec une erreur invalid_input claire au lieu d'être tronquée silencieusement.
Où elle s'intègre en pratique
La capacité s'exécute sur notre edge mondial sans rien conserver après la requête, et le même code déterministe qui alimente l'API payante s'exécute gratuitement dans votre navigateur sur cette page, ce qui vous permet de vérifier une paire de vecteurs en les collant avant d'intégrer l'appel dans un pipeline. Vous ne payez que lorsque vous l'automatisez : $0.002 par requête, sans surcoût par dimension dans les limites publiées.
Questions techniques
Les vecteurs peuvent-ils avoir des longueurs différentes ?
Non. La similarité cosinus n'est définie qu'entre vecteurs de même dimension, donc les longueurs différentes sont rejetées avec une erreur invalid_input.