跳至主要内容
跳至主要内容

距离函数

L1Distance

引入于:v21.11

计算两个点之间的距离(向量的元素是坐标)在 L1 空间中(1-范数(出租车几何距离))。

语法

L1Distance(vector1, vector2)

别名: distanceL1

参数

返回值

返回 1-范数距离。 UInt32Float64

示例

基本用法

SELECT L1Distance((1, 2), (2, 3))
┌─L1Distance((1, 2), (2, 3))─┐
│                          2 │
└────────────────────────────┘

L1Norm

引入于:v21.11

计算向量的绝对元素之和。

语法

L1Norm(vector)

别名: normL1

参数

返回值

返回 L1-范数或 出租车几何距离。 UInt*Float*Decimal

示例

基本用法

SELECT L1Norm((1, 2))
┌─L1Norm((1, 2))─┐
│              3 │
└────────────────┘

L1Normalize

引入于:v21.11

计算给定向量的单位向量(元组的元素是坐标)在 L1 空间中(出租车几何)。

语法

L1Normalize(tuple)

别名: normalizeL1

参数

  • tuple — 数字值的元组。 Tuple(T)

返回值

返回单位向量。 Tuple(Float64)

示例

基本用法

SELECT L1Normalize((1, 2))
┌─L1Normalize((1, 2))─────────────────────┐
│ (0.3333333333333333,0.6666666666666666) │
└─────────────────────────────────────────┘

L2Distance

引入于:v21.11

计算两个点之间的距离(向量的元素是坐标)在欧几里得空间中(欧几里得距离)。

语法

L2Distance(vector1, vector2)

别名: distanceL2

参数

返回值

返回 2-范数距离。 Float64

示例

基本用法

SELECT L2Distance((1, 2), (2, 3))
┌─L2Distance((1, 2), (2, 3))─┐
│         1.4142135623730951 │
└────────────────────────────┘

L2DistanceTransposed

引入于: v25.10

计算两个点之间的近似距离(向量的值是坐标)在欧几里得空间中(欧几里得距离)。

语法

L2DistanceTransposed(vector1, vector2, p)

别名: distanceL2Transposed

参数

  • vectors — 向量。 QBit(T, UInt64)
  • reference — 参考向量。 Array(T)
  • p — 用于距离计算的每个向量元素的位数(从 1 到元素位宽)。量化级别控制精度-速度权衡。使用更少的位数会降低精度,但提高 I/O 和计算速度,而使用更多的位数会提高精度,但降低性能。 UInt

返回值

返回近似的 2-范数距离。 Float64

示例

基本用法

CREATE TABLE qbit (id UInt32, vec QBit(Float64, 2)) ENGINE = Memory;
INSERT INTO qbit VALUES (1, [0, 1]);
SELECT L2DistanceTransposed(vec, array(1, 2), 16) FROM qbit;
┌─L2DistanceTransposed([0, 1], [1, 2], 16)─┐
│                       1.4142135623730951 │
└──────────────────────────────────────────┘

L2Norm

引入于:v21.11

计算向量元素的平方和的平方根。

语法

L2Norm(vector)

别名: normL2

参数

返回值

返回 L2-范数或 欧几里得距离UInt*Float*

示例

基本用法

SELECT L2Norm((1, 2))
┌───L2Norm((1, 2))─┐
│ 2.23606797749979 │
└──────────────────┘

L2Normalize

引入于:v21.11

计算给定向量的单位向量(元组的元素是坐标)在欧几里得空间中(使用 欧几里得距离)。

语法

L2Normalize(tuple)

别名: normalizeL2

参数

  • tuple — 数字值的元组。 Tuple(T)

返回值

返回单位向量。 Tuple(Float64)

示例

基本用法

SELECT L2Normalize((3, 4))
┌─L2Normalize((3, 4))─┐
│ (0.6,0.8)           │
└─────────────────────┘

L2SquaredDistance

引入于:v22.7

计算两个向量对应元素之间差的平方和。

语法

L2SquaredDistance(vector1, vector2)

别名: distanceL2Squared

参数

返回值

返回两个向量对应元素之间差的平方和。 Float64

示例

基本用法

SELECT L2SquaredDistance([1, 2, 3], [0, 0, 0])
┌─L2SquaredDis⋯ [0, 0, 0])─┐
│                       14 │
└──────────────────────────┘

L2SquaredNorm

引入于:v22.7

计算向量元素的平方和的平方根(L2Norm)的平方。

语法

L2SquaredNorm(vector)

别名: normL2Squared

参数

返回值

返回 L2-范数的平方。 UInt*Float*Decimal

示例

基本用法

SELECT L2SquaredNorm((1, 2))
┌─L2SquaredNorm((1, 2))─┐
│                     5 │
└───────────────────────┘

LinfDistance

引入于:v21.11

计算两个点之间的距离(向量的元素是坐标)在 L_{inf} 空间中(最大范数)。

语法

LinfDistance(vector1, vector2)

别名: distanceLinf

参数

返回值

返回无穷范数距离。 Float64

示例

基本用法

SELECT LinfDistance((1, 2), (2, 3))
┌─LinfDistance((1, 2), (2, 3))─┐
│                            1 │
└──────────────────────────────┘

LinfNorm

引入于:v21.11

计算向量的绝对元素的最大值。

语法

LinfNorm(vector)

别名: normLinf

参数

返回值

返回 Linf-范数或最大绝对值。 Float64

示例

基本用法

SELECT LinfNorm((1, -2))
┌─LinfNorm((1, -2))─┐
│                 2 │
└───────────────────┘

LinfNormalize

引入于:v21.11

计算给定向量的单位向量(元组的元素是坐标)在 L_{inf} 空间中(使用 最大范数)。

语法

LinfNormalize(tuple)

别名: normalizeLinf

参数

  • tuple — 数字值的元组。 Tuple(T)

返回值

返回单位向量。 Tuple(Float64)

示例

基本用法

SELECT LinfNormalize((3, 4))
┌─LinfNormalize((3, 4))─┐
│ (0.75,1)              │
└───────────────────────┘

LpDistance

引入于:v21.11

计算两个点之间的距离(向量的元素是坐标)在 Lp 空间中(p-范数距离)。

语法

LpDistance(vector1, vector2, p)

别名: distanceLp

参数

返回值

返回 p-范数距离。 Float64

示例

基本用法

SELECT LpDistance((1, 2), (2, 3), 3)
┌─LpDistance((1, 2), (2, 3), 3)─┐
│            1.2599210498948732 │
└───────────────────────────────┘

LpNorm

引入于:v21.11

计算向量的 p-范数,即其绝对元素的 p 次方之和的 p 次方根。

特殊情况

  • 当 p=1 时,等效于 L1Norm(曼哈顿距离)。
  • 当 p=2 时,等效于 L2Norm(欧几里得距离)。
  • 当 p=∞ 时,等效于 LinfNorm(最大范数)。

语法

LpNorm(vector, p)

别名: normLp

参数

  • vector — 数字值的向量或元组。 Tuple(T)Array(T)
  • p — 幂。可能的值是范围在 [1; inf) 中的实数。 UInt*Float*

返回值

返回 Lp-范数Float64

示例

基本用法

SELECT LpNorm((1, -2), 2)
┌─LpNorm((1, -2), 2)─┐
│   2.23606797749979 │
└────────────────────┘

LpNormalize

引入于:v21.11

计算给定向量的单位向量(元组的元素是坐标)在 Lp 空间中(使用 p-范数)。

语法

LpNormalize(tuple, p)

别名: normalizeLp

参数

  • tuple — 数字值的元组。 Tuple(T)
  • p — 幂。可能的值是范围在 [1; inf) 中的任何数字。 UInt*Float*

返回值

返回单位向量。 Tuple(Float64)

示例

使用示例

SELECT LpNormalize((3, 4), 5)
┌─LpNormalize((3, 4), 5)──────────────────┐
│ (0.7187302630182624,0.9583070173576831) │
└─────────────────────────────────────────┘

cosineDistance

引入于:v1.1

计算两个向量之间的 余弦距离(元组的元素是坐标)。返回的值越小,向量越相似。

语法

cosineDistance(vector1, vector2)

别名: distanceCosine

参数

返回值

返回两个向量之间的角度的余弦值减去一。 Float64

示例

基本用法

SELECT cosineDistance((1, 2), (2, 3));
┌─cosineDistance((1, 2), (2, 3))─┐
│           0.007722123286332261 │
└────────────────────────────────┘

cosineDistanceTransposed

引入于: v26.1

计算两个点之间的近似 余弦距离(向量的值是坐标)。返回的值越小,向量越相似。

语法

cosineDistanceTransposed(vector1, vector2, p)

别名: distanceCosineTransposed

参数

  • vectors — 向量。 QBit(T, UInt64)
  • reference — 参考向量。 Array(T)
  • p — 用于距离计算的每个向量元素的位数(从 1 到元素位宽)。量化级别控制精度-速度权衡。使用更少的位数会降低精度,但提高 I/O 和计算速度,而使用更多的位数会提高精度,但降低性能。 UInt

返回值

返回两个向量之间的角度的近似余弦值减去一。 Float64

示例

基本用法

CREATE TABLE qbit (id UInt32, vec QBit(Float64, 2)) ENGINE = Memory;
INSERT INTO qbit VALUES (1, [0, 1]);
SELECT cosineDistanceTransposed(vec, array(1, 2), 16) FROM qbit;
┌─cosineDistanceTransposed([0, 1], [1, 2], 16)─┐
│                          0.10557281085638826 │
└──────────────────────────────────────────────┘
    © . This site is unofficial and not affiliated with ClickHouse, Inc.