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 |
+------+------------+