COSINE_DISTANCE

更新时间:
复制 MD 格式

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