跳转到主要内容

L1Distance

引入版本:v21.11.0 计算 L1 空间中两点之间的距离 (向量中的元素为坐标) ,即 1-范数 (出租车几何距离) 。 语法
L1Distance(vector1, vector2)
别名: distanceL1 参数 返回值 返回 1-范数距离。对于 Array 输入,如果元素类型的最小共同超类型为 Float32BFloat16,则返回 Float32,否则返回 Float64。对于 Tuple 输入,返回类型遵循逐元素运算的算术结果类型 (整数类型保持不变) 。(U)Int*Float* 示例 基本用法
Query
SELECT L1Distance((1, 2), (2, 3))
Response
┌─L1Distance((1, 2), (2, 3))─┐
│                          2 │
└────────────────────────────┘

L1Norm

引入版本:v21.11.0 计算向量中各元素绝对值的总和。 语法
L1Norm(vector)
别名: normL1 参数 返回值 返回 L1 范数或 出租车几何中的距离UInt*Float*Decimal 示例 基本用法
Query
SELECT L1Norm((1, 2))
Response
┌─L1Norm((1, 2))─┐
│              3 │
└────────────────┘

L1Normalize

引入版本:v21.11.0 计算给定向量在 L1 空间中的单位向量 (Tuple 的元素为坐标) (出租车几何) 。 语法
L1Normalize(tuple)
别名: normalizeL1 参数
  • tuple — 数值类型的元组。Tuple(T)
返回值 返回单位向量。Tuple(Float64) 示例 基本用法
Query
SELECT L1Normalize((1, 2))
Response
┌─L1Normalize((1, 2))─────────────────────┐
│ (0.3333333333333333,0.6666666666666666) │
└─────────────────────────────────────────┘

L2Distance

引入于:v21.11.0 计算欧几里得空间中两点之间的距离,其中向量的元素表示坐标 (欧几里得距离) 。 语法
L2Distance(vector1, vector2)
别名: distanceL2 参数 返回值 返回 2-范数距离。对于 Array 输入,如果元素类型的共同超类型是 Float32BFloat16,则返回 Float32;否则返回 Float64。对于 Tuple 输入,始终返回 Float64Float* 示例 基本用法
Query
SELECT L2Distance((1, 2), (2, 3))
Response
┌─L2Distance((1, 2), (2, 3))─┐
│         1.4142135623730951 │
└────────────────────────────┘

L2DistanceTransposed

引入版本:v25.10.0 计算欧几里得空间中两点之间的近似距离 (向量中的值即坐标) (欧几里得距离) 。 语法
L2DistanceTransposed(vector1, vector2, p)
别名: distanceL2Transposed 参数
  • vectors — 向量。QBit(T, UInt64)
  • reference — 参考向量。Array(T)
  • p — 在距离计算中,每个向量元素使用的位数 (1 到元素位宽) 。量化级别控制精度与速度之间的权衡。使用较少的位可提升 I/O 和计算速度,但精度会降低;使用较多的位则可提高精度,但会牺牲性能。UInt
返回值 返回近似的 2-范数距离。始终为 Float64Float64 示例 基本用法
Query
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;
Response
┌─L2DistanceTransposed([0, 1], [1, 2], 16)─┐
│                       1.4142135623730951 │
└──────────────────────────────────────────┘

L2Norm

引入版本:v21.11.0 计算向量各元素平方和的平方根。 语法
L2Norm(vector)
别名: normL2 参数 返回值 返回 L2 范数或 欧几里得距离UInt*Float* 示例 基本用法
Query
SELECT L2Norm((1, 2))
Response
┌───L2Norm((1, 2))─┐
│ 2.23606797749979 │
└──────────────────┘

L2Normalize

引入版本:v21.11.0 计算给定向量在欧几里得空间中的单位向量 (Tuple 中的元素为坐标) ,使用欧几里得距离 语法
L2Normalize(tuple)
别名: normalizeL2 参数
  • tuple — 由数值组成的元组。Tuple(T)
返回值 返回单位向量。Tuple(Float64) 示例 基本用法
Query
SELECT L2Normalize((3, 4))
Response
┌─L2Normalize((3, 4))─┐
│ (0.6,0.8)           │
└─────────────────────┘

L2SquaredDistance

引入版本:v22.7.0 计算两个向量中对应元素之差的平方和。 语法
L2SquaredDistance(vector1, vector2)
别名: distanceL2Squared 参数 返回值 返回两个向量对应元素之差的平方和。对于 Array 输入,如果元素类型的最小共同超类型为 Float32BFloat16,则返回 Float32,否则返回 Float64。对于 Tuple 输入,返回类型遵循逐元素运算的算术结果类型 (保留整数类型) 。(U)Int*Float* 示例 基本用法
Query
SELECT L2SquaredDistance([1, 2, 3], [0, 0, 0])
Response
┌─L2SquaredDis⋯ [0, 0, 0])─┐
│                       14 │
└──────────────────────────┘

L2SquaredNorm

引入版本:v22.7.0 计算向量元素平方和的平方根 (L2Norm) 的平方。 语法
L2SquaredNorm(vector)
别名: normL2Squared 参数 返回值 返回 L2 范数的平方。UInt*Float*Decimal 示例 基本用法
Query
SELECT L2SquaredNorm((1, 2))
Response
┌─L2SquaredNorm((1, 2))─┐
│                     5 │
└───────────────────────┘

LinfDistance

引入版本:v21.11.0 计算 L_{inf} 空间中两点之间的距离 (向量中的元素为坐标) (最大范数) 。 语法
LinfDistance(vector1, vector2)
别名: distanceLinf 参数 返回值 返回无穷范数距离。对于 Array 输入,如果元素类型的最小共同超类型为 Float32BFloat16,则返回 Float32;否则返回 Float64。对于 Tuple 输入,始终返回 Float64Float* 示例 基本用法
Query
SELECT LinfDistance((1, 2), (2, 3))
Response
┌─LinfDistance((1, 2), (2, 3))─┐
│                            1 │
└──────────────────────────────┘

LinfNorm

引入版本:v21.11.0 计算向量中各元素绝对值的最大值。 语法
LinfNorm(vector)
别名: normLinf 参数 返回值 返回 Linf 范数,即最大绝对值。Float64 示例 基本用法
Query
SELECT LinfNorm((1, -2))
Response
┌─LinfNorm((1, -2))─┐
│                 2 │
└───────────────────┘

LinfNormalize

引入版本:v21.11.0 计算给定向量在 L_{inf} 空间中的单位向量 (Tuple 中的元素为各坐标) ,使用最大范数 语法
LinfNormalize(tuple)
别名: normalizeLinf 参数
  • tuple — 由数值组成的元组。Tuple(T)
返回值 返回单位向量。Tuple(Float64) 示例 基本用法
Query
SELECT LinfNormalize((3, 4))
Response
┌─LinfNormalize((3, 4))─┐
│ (0.75,1)              │
└───────────────────────┘

LpDistance

引入版本:v21.11.0 计算 Lp 空间中两点之间的距离 (向量中的元素为坐标) (p-范数距离) 。 语法
LpDistance(vector1, vector2, p)
别名: distanceLp 参数 返回值 返回 p-范数距离。对于 Array 输入,如果元素类型的最小共同超类型为 Float32BFloat16,则返回 Float32,否则返回 Float64。对于 Tuple 输入,始终返回 Float64Float* 示例 基本用法
Query
SELECT LpDistance((1, 2), (2, 3), 3)
Response
┌─LpDistance((1, 2), (2, 3), 3)─┐
│            1.2599210498948732 │
└───────────────────────────────┘

LpNorm

引入版本:v21.11.0 计算向量的 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 示例 基本用法
Query
SELECT LpNorm((1, -2), 2)
Response
┌─LpNorm((1, -2), 2)─┐
│   2.23606797749979 │
└────────────────────┘

LpNormalize

在以下版本中引入:v21.11.0 计算给定向量在 Lp 空间中的单位向量 (Tuple 中的元素为坐标) ,使用 p-norm 语法
LpNormalize(tuple, p)
别名: normalizeLp 参数
  • tuple — 由数值组成的元组。Tuple(T)
  • p — 幂。可能的值为 [1; inf) 范围内的任意数字。UInt*Float*
返回值 返回单位向量。Tuple(Float64) 示例 使用示例
Query
SELECT LpNormalize((3, 4), 5)
Response
┌─LpNormalize((3, 4), 5)──────────────────┐
│ (0.7187302630182624,0.9583070173576831) │
└─────────────────────────────────────────┘

cosineDistance

引入版本:v21.11.0 计算两个向量之间的余弦距离 (元组中的元素为坐标) 。返回值越小,两个向量就越相似。 语法
cosineDistance(vector1, vector2)
别名: distanceCosine 参数 返回值 返回余弦距离 (即 1 减去余弦相似度) 。对于 Array 输入,如果元素类型的共同超类型为 Float32BFloat16,则返回 Float32,否则返回 Float64。对于 Tuple 输入,始终返回 Float64Float* 示例 基本用法
Query
SELECT cosineDistance((1, 2), (2, 3));
Response
┌─cosineDistance((1, 2), (2, 3))─┐
│           0.007722123286332261 │
└────────────────────────────────┘

cosineDistanceTransposed

Introduced in:v26.1.0 计算两个点之间的近似余弦距离 (向量的值即为坐标) 。返回值越小,向量越相似。 Syntax
cosineDistanceTransposed(vector1, vector2, p)
别名: distanceCosineTransposed 参数
  • vectors — 向量。QBit(T, UInt64)
  • reference — 参考向量。Array(T)
  • p — 在距离计算中,每个向量元素使用的位数 (从 1 到元素位宽) 。量化级别控制精度与速度之间的权衡。使用较少的位可加快 I/O 和计算速度,但会降低准确性;使用较多的位可提高准确性,但会牺牲性能。UInt
返回值 返回近似余弦距离 (即 1 减去余弦相似度) 。始终返回 Float64。Float64 示例 基本用法
Query
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;
Response
┌─cosineDistanceTransposed([0, 1], [1, 2], 16)─┐
│                          0.10557281085638826 │
└──────────────────────────────────────────────┘
最后修改于 2026年6月10日