Tous les produits
Search
Centre de documentation

MaxCompute:COSINE_DISTANCE

Dernière mise à jour :Aug 10, 2026

La fonction COSINE_DISTANCE calcule la distance cosinus entre deux vecteurs.

Remarque

La similarité cosinus repose sur l'angle formé par deux vecteurs dans un espace multidimensionnel, indépendamment de leur amplitude. Elle s'obtient en divisant le produit scalaire des deux vecteurs par le produit de leurs normes. La valeur de similarité cosinus appartient toujours à l'intervalle [-1, 1]. Par exemple, deux vecteurs identiques affichent une similarité cosinus de 1, deux vecteurs orthogonaux une similarité de 0, et deux vecteurs de sens opposés une similarité de -1.

Syntaxe

FLOAT COSINE_DISTANCE( <vector>, <vector> )

Paramètres

vector : Obligatoire. Vecteur de type VECTOR.

Valeur renvoyée

Renvoie la distance cosinus entre les deux vecteurs d'entrée sous forme d'une valeur FLOAT comprise dans l'intervalle [0, 2].

L'optimisation des fonctions vectorielles peut entraîner une légère perte de précision en virgule flottante. La marge d'erreur maximale du résultat est de 1e-4.

Exemples

-- Enable the VECTOR data type.
set odps.sql.type.vector.enable=true;
set odps.sql.type.system.odps2=true;

-- Prepare data.
CREATE TABLE vectors (a VECTOR(FLOAT, 3), b VECTOR(FLOAT, 3));
INSERT INTO vectors SELECT CAST(ARRAY(1.1,2.2,3.0) AS VECTOR(FLOAT,3)), CAST(ARRAY(1.0,1.0,1.0) AS VECTOR(FLOAT,3));
INSERT INTO vectors SELECT CAST(ARRAY(1.0,2.2,3.0) AS VECTOR(FLOAT,3)), CAST(ARRAY(4.0,6.0,8.0) AS VECTOR(FLOAT,3));

SELECT a, COSINE_DISTANCE(a, CAST(ARRAY(1.0,2.0,3.0) AS VECTOR(FLOAT, 3))) AS similarity
  FROM vectors
  ORDER BY similarity DESC
  LIMIT 1;
-- Result:
+------+------------+
| a    | similarity |
+------+------------+
| [1.1, 2.2, 3] | 0.0010684728622436523 |
+------+------------+