メインコンテンツへスキップ
メインコンテンツへスキップ

距離関数

L1Distance

導入バージョン: v21.11

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

構文

L1Distance(vector1, vector2)

別名: distanceL1

引数

戻り値

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

基本的な使い方

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

L1Norm

導入されたバージョン: v21.11

ベクトルの各要素の絶対値の総和を計算します。

構文

L1Norm(vector)

別名: normL1

引数

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

戻り値

L1 ノルム、または taxicab geometry における距離を返します。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

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

構文

L2Distance(vector1, vector2)

別名: distanceL2

引数

戻り値

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

基本的な使用例

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

L2DistanceTransposed

導入バージョン: v25.10

ユークリッド空間における2点間のユークリッド距離の近似値を計算します(ベクトルの値を座標とみなす)(Euclidean distance)。

構文

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

引数

  • vector — 数値からなるベクターまたはタプル。Tuple(T) または Array(T)

返り値

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

基本的な使用例

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

L2Normalize

導入バージョン: v21.11

与えられたベクトル(タプルの各要素が座標)に対して、ユークリッド空間における単位ベクトルを計算します(Euclidean distance を使用)。

構文

L2Normalize(tuple)

別名: normalizeL2

引数

  • tuple — 数値からなるタプル。Tuple(T)

戻り値

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

基本的な使い方

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

L2SquaredDistance

導入バージョン: v22.7

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

構文

L2SquaredDistance(vector1, vector2)

別名: distanceL2Squared

引数

戻り値

2 つのベクトルの対応する要素同士の差の二乗を合計した値を返します。Float64

基本的な使用例

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

L2SquaredNorm

導入バージョン: v22.7

ベクトル要素の二乗和の平方根(L2Norm)をさらに二乗した値を計算します。

構文

L2SquaredNorm(vector)

別名: normL2Squared

引数

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

返される値

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

基本的な使用例

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

LinfDistance

導入バージョン: v21.11

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

構文

LinfDistance(vector1, vector2)

別名: distanceLinf

引数

戻り値

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

使用例

基本的な使い方

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

LinfNorm

導入バージョン: v21.11

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

構文

LinfNorm(vector)

別名: normLinf

引数

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

戻り値

L∞ノルム、または絶対値の最大値を返します。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 空間における 2 点間の距離(ベクトルの要素を座標とみなしたもの)を計算します(p-ノルム距離)。

構文

LpDistance(vector1, vector2, p)

別名: distanceLp

引数

  • vector1 — 1番目のベクトル。Tuple(T) または Array(T)
  • vector2 — 2番目のベクトル。Tuple(T) または Array(T)
  • p — べき指数。取りうる値: [1; inf) の範囲の実数。UInt* または Float*

返される値

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-norm を使用)を計算します。

構文

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

2 つのベクトル間のコサイン距離を計算します(タプルの各要素が座標)。返される値が小さいほど、ベクトル同士の類似度が高くなります。

構文

cosineDistance(vector1, vector2)

引数

返り値

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

基本的な使用例

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

cosineDistanceTransposed

導入バージョン: v26.1

2 つの点(ベクトルの値を座標とみなす)間の近似的な cosine distance を計算します。返される値が小さいほど、ベクトル同士はより類似しています。

構文

cosineDistanceTransposed(vector1, vector2, p)

別名: distanceCosineTransposed

引数

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

戻り値

2 つのベクトル間のなす角の余弦の近似値を 1 から引いた値を返します。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 │
└──────────────────────────────────────────────┘