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

距離関数

L1Distance

導入バージョン: v21.11

L1 空間(1-ノルム(タクシー幾何学 における距離、いわゆるマンハッタン距離))において、2 つの点(ベクトルの要素を座標とみなしたもの)間の距離を計算します。

構文

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 ノルム(タクシー幾何学 における距離)を返します。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.0, 2.0), 16) FROM qbit;"
┌─L2DistanceTransposed([0, 1], [1.0, 2.0], 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

ユークリッド空間において、与えられたベクトル(タプルの要素を座標とする)から単位ベクトルを計算します(ユークリッド距離 を使用)。

構文

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

ベクトルの要素を座標とみなした 2 点間の距離を、L_{inf} 空間([最大ノルム](https://en.wikipedia.org/wiki/Norm_(mathematics)#Maximum_norm_(special_case_of:_infinity_norm,_uniform_norm,_or_supremum_norm)))で計算します。

構文

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)

戻り値

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-ノルム距離)において、ベクトルの要素を座標とみなした 2 点間の距離を計算します。

構文

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)(1以上の任意の数値)の範囲内。UInt* または Float*

戻り値

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

使用例

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

cosineDistance

導入バージョン: v1.1

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

構文

cosineDistance(vector1, vector2)

引数

戻り値

2 つのベクトル間のなす角の余弦を 1 から引いた値を返します。Float64

使用例

基本的な使い方

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