L1_DISTANCE
新增或更新于:v1.2.777
计算两个向量之间的曼哈顿(L1)距离,即对应元素绝对差值的总和。
语法
L1_DISTANCE(vector1, vector2)
参数
vector1
: 第一个向量(VECTOR 数据类型)vector2
: 第二个向量(VECTOR 数据类型)
返回值
返回浮点数(FLOAT)值,表示两个向量间的曼哈顿(L1)距离。该值始终为非负数:
- 0:向量相同
- 值越大,向量相距越远
描述
L1 距离,也称为曼哈顿距离(Manhattan distance)或出租车距离(taxicab distance),计算两个向量对应元素绝对差值的总和。该度量适用于特征比较和稀疏数据分析。
公式:L1_DISTANCE(a, b) = |a1 - b1| + |a2 - b2| + ... + |an - bn|
示例
基本用法
-- 计算两个向量间的 L1 距离
SELECT L1_DISTANCE([1.0, 2.0, 3.0], [4.0, 5.0, 6.0]) AS distance;
结果:
┌──────────┐
│ distance │
├──────────┤
│ 9.0 │
└──────────┘
结合 VECTOR 类型使用
-- 创建含 VECTOR 列的表
CREATE TABLE products (
id INT,
features VECTOR(3),
VECTOR INDEX idx_features(features) distance='l1'
);
INSERT INTO products VALUES
(1, [1.0, 2.0, 3.0]::VECTOR(3)),
(2, [2.0, 3.0, 4.0]::VECTOR(3));
-- 使用 L1 距离查找与查询向量相似的产品
SELECT
id,
features,
L1_DISTANCE(features, [1.5, 2.5, 3.5]::VECTOR(3)) AS distance
FROM products
ORDER BY distance ASC
LIMIT 5;