简体中文
Appearance
简体中文
Appearance
向量函数是 Datalayers 提供的专门用于处理高维向量数据的核心工具集,支持向量距离计算、向量数学运算和向量归一化等操作
向量距离函数用于计算两个相同维度的向量之间的距离。目前提供以下向量距离函数:
l2_distance:L2 距离函数。cosine_distance:余弦距离函数。dot_distance:负内积距离函数。L2 距离,又称欧式距离,其计算公式为:
注意,由于开根并不影响相似度的比较,因此为了性能考虑,Datalayers 在计算 L2 距离时省去了开根操作。
语法:
l2_distance(x, y)示例:
# 计算两个向量之间的 L2 距离
SELECT l2_distance([1.0, 1.0, 1.0], [1.0, 1.0, 2.5]);
# 计算向量列 `embed` 与目标向量之间的 L2 距离
SELECT l2_distance(embed, [1.0, 2.0, 3.0]) FROM t;
# 根据向量列 `embed` 与目标向量之间的 L2 距离,对数据进行排序,并输出距离最近的一行数据
SELECT * FROM t ORDER BY l2_distance(embed, [1.0, 2.0, 3.0]) LIMIT 1;余弦距离通常用于对向量的模不敏感的场景。
计算公式为:
注意,Datalayers 根据向量检索的传统,用 1 减去余弦距离,将余弦距离从 [-1, 1] 正则化到 [0, 2]。这使得余弦距离越小,向量相似度越高。
语法:
cosine_distance(x, y)示例:参考 L2 距离函数的示例。
向量的内积(Dot Product,又称 Inner Product),定义为两个向量逐个元素的乘积之和。负内积,由 1 减去内积所得到。
计算公式为:
注意,当输入为归一化的向量时,负内积距离等于正则化后的余弦距离,因此负内积距离越小,向量相似度越高。 当输入为未归一化的向量时,负内积距离受向量的模长影响,负内积距离越大,向量相似度越高。 建议仅针对归一化的向量使用负内积距离,以获得更好的性能。
语法:
dot_distance(x, y)示例:参考 L2 距离函数的示例。
向量数学计算函数用于向量的一些数学性质。目前提供以下函数:
dim:维度函数,求解一个向量的维度,即向量中元素的数量。l2_norm:L2 模函数,求解一个向量的 L2 模(或称 L2 范数)。l2_normalize:L2 归一化函数,使用 L2 模对向量执行归一化。语法:
dim(x)示例:
# 计算一个向量的维度,输出应为 3
SELECT dim([1.0, 2.0, 3.0]);
# 计算一个向量列中每个向量的维度
SELECT dim(embed) FROM t;L2 模函数通常用于执行向量归一化,即将一个向量转换为模为 1 的单位向量,便于后续执行向量计算。一个向量的 L2 模的计算公式为:
语法:
l2_norm(x)示例:
# 计算一个向量的 L2 模
SELECT l2_norm([1.0, 2.0, 3.0]);
# 计算一个向量列中每个向量的 L2 模
SELECT l2_norm(embed) FROM t;该函数使用 L2 模将向量转换为标准向量,即模长为 1 的单位向量。使用 L2 模的向量归一化公式为:
语法:
l2_normalize(x)示例:
# 对一个向量执行归一化
SELECT l2_normalize([1.0, 2.0, 3.0]);
# 对一个向量列中的每个向量执行归一化
SELECT l2_normalize(embed) FROM t;[1, 2, 3] 与 [1.0, 2.0, 3.0] 等均合法。