文本、语音、图像、视频都能够以向量的形式保存在向量数据库中,方便用户快速搜索和查询。日志服务支持向量计算函数,本文介绍向量函数的基本语法和示例。
向量计算函数列表
以下函数中使用的向量元素,可以用特定格式的字符串来描述,字符串是用"[]"或者"{}"包起来的一组数字,数字之间用逗号分隔开。
函数名称 | 语法 | 说明 | 支持SQL | 支持SPL |
余弦相似度函数 |
| 余弦相似度的取值范围是[-1, 1]:
| √ | × |
内积(点积)函数 |
| 计算两个向量的内积。 | √ | × |
欧氏距离函数 |
| 计算两个向量的欧式距离。 | √ | × |
向量范数(长度)函数 |
| 计算一个向量的范数。范数相当于向量的长度。 | √ | × |
向量元素和函数 |
| 计算一个向量的所有元素之和。 | √ | × |
向量元素均值函数 |
| 计算一个向量的平均值。 | √ | × |
向量元素方差函数 |
| 计算一个向量的方差。方差代表向量元素偏离均值的平均波动幅度的平方和,描述了该向量中元素分布的离散程度。 | √ | × |
向量元素标准差函数 |
| 计算一个向量的标准差,标准差是方差的正平方根。方差描述了数据点围绕均值的波动大小。方差越大,表示数据点越分散;方差越小,表示数据点越集中。 | √ | × |
向量加法函数 |
| 计算两个向量相加的结果。 结合向量加减法和向量缩放,可以做任意线性变换。 | √ | × |
向量减法函数 |
| 计算两个向量相减的结果。 结合向量的加减法和向量的缩放,可以做任意线性变换。 | √ | × |
向量缩放函数 |
| 结合向量的加减法和向量的缩放,可以做任何线性变换。 | √ | × |
cosine_similarity函数
计算两个向量的余弦相似度。
使用示例
查询和分析语句
* | SELECT cosine_similarity(array[1, 2, 3, 4], array[10, 20, 30, 40])
或
* | SELECT cosine_similarity('[1, 2, 3, 4]', '[10, 20, 30, 40]')
返回结果
1
返回值类型
与输入的参数值相同。
inner_product函数
计算两个向量的内积。
使用示例
查询和分析语句
* | SELECT inner_product(array[1, 2, 3, 4], array[10, 20, 30, 40])
或
* | SELECT inner_product('[1, 2, 3, 4]', '[10, 20, 30, 40]')
返回结果
300.0
返回值类型
与输入的参数值相同。
l2_distance函数或euclidean_distance函数
l2_distance开头为字母L的小写形式。
计算两个向量的欧式距离。
使用示例
查询和分析语句
* | SELECT l2_distance(array[1, 3], array[4, 2])
或
* | SELECT l2_distance('[1, 3]', '[4, 2]')
返回结果
3.16
返回值类型
与输入的参数值相同。
vector_norm函数
根据范数类型p
,计算向量的范数(norm)。
使用示例
查询和分析语句
* | SELECT vector_norm(array[1, 3], 1)
* | SELECT vector_norm(array[1, 3], 2)
* | SELECT vector_norm(array[1, 3], 3)
返回结果
根据范数类型1、2、3,分别计算向量
[1,3]
的范数。范数类型为1时,计算向量元素的绝对值和为4
。范数类型为2时,计算向量元素的平方和的平方根,结果为3.16
。范数类型为3时,计算向量元素的三次方和的三次方根,结果为3.04
。
返回值类型
与输入的参数值相同。
vector_sum函数
计算一个向量所有元素的和。
使用示例
查询和分析语句
* | SELECT vector_sum(array[1, -3])
或
* | SELECT vector_sum('[1, -3]')
返回结果
-2
返回值类型
与输入的参数值相同。
vector_mean函数
计算一个向量所有元素的平均值。
使用示例
查询和分析语句
* | SELECT vector_mean(array[1, -3])
或
* | SELECT vector_mean('[1, -3]')
返回结果
-1
返回值类型
与输入的参数值相同。
vector_variance函数
计算一个向量的方差,描述了该向量中元素分布的离散程度。
使用示例
查询和分析语句
* | SELECT vector_variance(array[1, -3, 8])
或
* | SELECT vector_variance('[1, -3, 8]')
返回结果
向量均值为2,结果为
(12+52+62=62/3)=20.67
。
返回值类型
与输入的参数值相同。
vector_std_dev函数
计算一个向量的标准差,标准差是方差的正平方根。
使用示例
查询和分析语句
* | SELECT vector_std_dev(array[1, -3, 8])
或
* | SELECT vector_std_dev('[1, -3, 8]')
返回结果
向量均值为2,结果为
(12+52+62=62/3)0.5=20.670.5=4.54
。
返回值类型
与输入的参数值相同。
vector_add函数
vector_add函数用于计算两个向量的相加结果。
使用示例
查询和分析语句
* | SELECT vector_add(array[1, 2, 3, 4], array[2, 3, 1, 1.5])
或
* | SELECT vector_add("[1, 2, 3, 4]", "[2, 3, 1, 1.5]")
返回结果
[3.0,5.0,4.0,5.5]
返回值类型
与输入的参数值相同。
vector_subtract函数
vector_subtract函数用于计算两个向量相减的结果。
使用示例
查询和分析语句
* | SELECT vector_subtract(array[1, 2, 3, 4], array[2, 3, 1, 1.5])
或
* | SELECT vector_subtract(array[1, 2, 3, 4], array[2, 3, 1, 1.5])
返回结果
[-1.0,-1.0,2.0,2.5]
返回值类型
与输入的参数值相同。
vector_scale函数
vector_scale函数用于计算向量缩放的结果。
使用示例
查询和分析语句
* | SELECT vector_scale(array[1, 2, 3, 4], 5)
或
* | SELECT vector_scale('[1, 2, 3, 4]', 5)
返回结果
[5.0,10.0,15.0,20.0]
返回值类型
与输入的参数值相同。