メインコンテンツまでスキップ
メインコンテンツまでスキップ

距離関数

L1Distance

Introduced in: v21.11

2つの点の間の距離を計算します(ベクトルの要素は座標です)L1 空間における(1ノルム (タクシー幾何学 距離)).

構文

L1Distance(vector1, vector2)

引数

返される値

1ノルムの距離を返します。 UInt32 または Float64

基本的な使用法

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

L1Norm

Introduced in: v21.11

ベクトルの絶対要素の合計を計算します。

構文

L1Norm(vector)

引数

  • vector — 数値の値を持つベクトルまたはタプル。 Array(T) または Tuple(T)

返される値

L1ノルムまたは タクシー幾何学 距離を返します。 UInt* または Float* または Decimal

基本的な使用法

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

L1Normalize

Introduced in: v21.11

指定されたベクトルの単位ベクトルを計算します(タプルの要素は座標です)L1 空間において (タクシー幾何学).

構文

L1Normalize(tuple)

引数

  • tuple — 数値の値を持つタプル。 Tuple(T)

返される値

単位ベクトルを返します。 Tuple(Float64)

基本的な使用法

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

L2Distance

Introduced in: v21.11

2つの点の間の距離を計算します(ベクトルの要素は座標です)ユークリッド空間における (ユークリッド距離).

構文

L2Distance(vector1, vector2)

引数

返される値

2ノルムの距離を返します。 Float64

基本的な使用法

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

L2DistanceTransposed

Introduced in: v25.10

ユークリッド空間における2つの点の間の近似距離を計算します(ベクトルの値は座標です) (ユークリッド距離).

構文

L2DistanceTransposed(vector1, vector2, p)

引数

  • vectors — ベクトル。 QBit(T, UInt64)
  • reference — 参照ベクトル。 Array(T)
  • p — 距離計算に使用する各ベクトル要素からのビット数(要素ビット幅の1から)。 量子化レベルは精度と速度のトレードオフを制御します。 ビット数が少ないほど、I/Oと計算が高速になり、精度は低下しますが、ビット数が多いほど精度が向上し、パフォーマンスが低下します。 UInt

返される値

近似2ノルムの距離を返します。 Float

基本的な使用法

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

L2Norm

Introduced in: v21.11

ベクトル要素の平方の合計の平方根を計算します。

構文

L2Norm(vector)

引数

  • vector — 数値の値を持つベクトルまたはタプル。 Tuple(T) または Array(T)

返される値

L2ノルムまたは ユークリッド距離を返します。 UInt* または Float*

基本的な使用法

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

L2Normalize

Introduced in: v21.11

指定されたベクトルの単位ベクトルを計算します(タプルの要素は座標です)ユークリッド空間において(ユークリッド距離を使用して)。

構文

L2Normalize(tuple)

引数

  • tuple — 数値の値を持つタプル。 Tuple(T)

返される値

単位ベクトルを返します。 Tuple(Float64)

基本的な使用法

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

L2SquaredDistance

Introduced in: v22.7

2つのベクトルの対応する要素間の差の平方の合計を計算します。

構文

L2SquaredDistance(vector1, vector2)

引数

返される値

2つのベクトル間の対応する要素の差の平方の合計を返します。 Float64

基本的な使用法

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

L2SquaredNorm

Introduced in: v22.7

ベクトル要素の平方根の平方の合計を計算します(L2Norm)の平方。

構文

L2SquaredNorm(vector)

引数

  • vector — 数値の値を持つベクトルまたはタプル。 Array(T) または Tuple(T)

返される値

L2ノルムの平方を返します。 UInt* または Float* または Decimal

基本的な使用法

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

LinfDistance

Introduced in: v21.11

2つの点の間の距離を計算します(ベクトルの要素は座標です) L_{inf} 空間における (最大ノルム).

構文

LinfDistance(vector1, vector2)

引数

返される値

無限ノルムの距離を返します。 Float64

基本的な使用法

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

LinfNorm

Introduced in: v21.11

ベクトルの絶対要素の最大を計算します。

構文

LinfNorm(vector)

引数

  • vector — 数値の値を持つベクトルまたはタプル。 Array(T) または Tuple(T)

返される値

Linfノルムまたは最大絶対値を返します。 Float64

基本的な使用法

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

LinfNormalize

Introduced in: v21.11

指定されたベクトルの単位ベクトルを計算します(タプルの要素は座標です) L_{inf} 空間において([最大ノルム](https://en.wikipedia.org/wiki/Norm_(mathematics)#Maximum_norm_(special_case_of:_infinity_norm,_uniform_norm,_or_supremum_norm)を使用して)。

構文

LinfNormalize(tuple)

引数

  • tuple — 数値の値を持つタプル。 Tuple(T)

返される値

単位ベクトルを返します。 Tuple(Float64)

基本的な使用法

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

LpDistance

Introduced in: v21.11

2つの点の間の距離を計算します(ベクトルの要素は座標です) Lp 空間における (p-norm距離).

構文

LpDistance(vector1, vector2, p)

引数

返される値

p-norm距離を返します。 Float64

基本的な使用法

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

LpNorm

Introduced in: v21.11

ベクトルのpノルムを計算します。すなわち、要素の絶対値のp乗の合計のp根です。

特別なケース:

  • p=1のとき、それはL1Norm(マンハッタン距離)に相当します。
  • p=2のとき、それはL2Norm(ユークリッド距離)に相当します。
  • p=∞のとき、それはLinfNorm(最大ノルム)に相当します。

構文

LpNorm(vector, p)

引数

  • vector — 数値の値を持つベクトルまたはタプル。 Tuple(T) または Array(T)
  • p — 力。 可能な値は [1; inf) の範囲の実数です。 UInt* または Float*

返される値

Lpノルムを返します。 Float64

基本的な使用法

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

LpNormalize

Introduced in: v21.11

指定されたベクトルの単位ベクトルを計算します(タプルの要素は座標です) Lp 空間において(p-normを使用して)。

構文

LpNormalize(tuple, p)

引数

  • tuple — 数値の値を持つタプル。 Tuple(T)
  • p — 力。 可能な値は [1; inf) の範囲の任意の数です。 UInt* または Float*

返される値

単位ベクトルを返します。 Tuple(Float64)

基本的な使用法

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

cosineDistance

Introduced in: v1.1

2つのベクトル間のコサイン距離を計算します(タプルの要素は座標です)。返される値が小さいほど、ベクトルはより類似しています。

構文

cosineDistance(vector1, vector2)

引数

返される値

2つのベクトル間の角度のコサインを1から引いた値を返します。 Float64

基本的な使用法

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