全部產品
Search
文件中心

MaxCompute:COSINE_DISTANCE

更新時間:Jul 09, 2026

COSINE_DISTANCE函數用於計算兩個向量之間的餘弦距離。

說明

餘弦相似性基於多維空間中兩個向量之間的夾角,而不考慮向量的大小。餘弦相似性值等於兩個向量的內積除以它們長度的乘積。餘弦相似性始終在區間內[-1, 1]。例如,兩個相同的向量的餘弦相似性為1,兩個正交向量的餘弦相似性為0,兩個方向相反的向量的餘弦相似性為-1

命令格式

FLOAT COSINE_DISTANCE( <vector>, <vector> )

參數說明

vector:必填。VECTOR類型。用於計算餘弦距離的向量值。

傳回值說明

返回FLOAT類型在區間[-1, 1]內的值,表示兩個輸入向量之間的餘弦距離。

向量函數經過最佳化,可能會降低浮點精度。此函數的結果誤差範圍最大可達1e-4

使用樣本

-- 開啟VECTOR資料類型
set odps.sql.type.vector.enable=true;
set odps.sql.type.system.odps2=true;

-- 準備資料
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;
-- 返回結果
+------+------------+
| a    | similarity |
+------+------------+
| [1.1, 2.2, 3] | 0.0010684728622436523 |
+------+------------+