본문으로 바로가기
본문으로 바로가기

거리 함수

L1Distance

도입 버전: v21.11

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

유클리드 공간에서 두 점 사이의 거리(유클리드 거리)를 계산합니다(벡터의 원소는 좌표입니다).

구문

L2Distance(vector1, vector2)

별칭: distanceL2

인수

반환 값

2-노름(L2-norm) 거리를 반환합니다. Float64

예시

기본 사용법

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

L2DistanceTransposed

도입: v25.10

유클리드 공간에서 두 점(벡터의 값이 좌표를 의미함) 사이의 근사 거리를 계산합니다(Euclidean distance).

구문

L2DistanceTransposed(vector1, vector2, p)

별칭: distanceL2Transposed

인자

  • vectors — 벡터. QBit(T, UInt64)
  • reference — 기준 벡터. Array(T)
  • p — 거리 계산에 사용할 각 벡터 요소의 비트 수(1부터 요소 비트 폭까지). 양자화 수준은 정밀도와 속도 간의 절충을 결정합니다. 더 적은 비트를 사용하면 I/O와 계산은 더 빨라지지만 정확도가 떨어지고, 더 많은 비트를 사용하면 성능 저하를 감수하는 대신 정확도가 높아집니다. UInt

반환 값

근사적인 2-노름(2-norm) 거리를 반환합니다. 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

두 벡터에서 대응하는 각 원소의 차이를 제곱한 값의 합을 계산합니다.

구문

L2SquaredDistance(vector1, vector2)

별칭: distanceL2Squared

인수

반환 값

두 벡터에서 서로 대응하는 원소들의 차를 제곱한 값의 합을 반환합니다. 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} 공간(maximum norm)에서 계산합니다.

구문

LinfDistance(vector1, vector2)

별칭: distanceLinf

인수

반환 값

Infinity-norm(무한 노름) 거리 값을 반환합니다. 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} 공간에서의 단위 벡터로 정규화합니다(최대 노름(maximum norm)을 사용하여 계산합니다).

구문

LinfNormalize(tuple)

별칭: normalizeLinf

인수

  • tuple — 숫자 값으로 구성된 튜플입니다. Tuple(T)

반환 값

단위 벡터를 반환합니다. Tuple(Float64)

예제

기본 사용법

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

LpDistance

도입된 버전: v21.11

두 점(벡터의 원소를 좌표로 가정)을 Lp 공간에서의 거리(p-노름 거리)로 계산합니다.

구문

LpDistance(vector1, vector2, p)

별칭: distanceLp

인수

반환 값

p-노름 거리(p-norm distance)를 반환합니다. 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(Manhattan distance)과 동일합니다.
  • p=2이면 L2Norm(Euclidean distance)과 동일합니다.
  • p=∞이면 LinfNorm(maximum norm)과 동일합니다.

구문

LpNorm(vector, p)

별칭: normLp

인수

  • vector — 숫자 값으로 이루어진 벡터 또는 튜플. Tuple(T) 또는 Array(T)
  • p — 지수 값. 사용할 수 있는 값은 [1; inf) 범위의 실수입니다. UInt* 또는 Float*

반환 값

Lp-노름(Lp-norm)을 반환합니다. Float64

예시

기본 사용법

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

LpNormalize

도입된 버전: v21.11

Lp 공간에서 p-노름을 사용하여 (튜플의 요소를 좌표로 하는) 주어진 벡터의 단위 벡터를 계산합니다.

구문

LpNormalize(tuple, p)

별칭(Aliases): normalizeLp

인수(Arguments)

  • tuple — 숫자 값들로 이루어진 튜플입니다. Tuple(T)
  • p — 거듭제곱을 나타내는 값입니다. 가능한 값은 [1; inf) 구간의 모든 수입니다. UInt* 또는 Float*

반환 값(Returned value)

단위 벡터를 반환합니다. Tuple(Float64)

예시(Examples)

사용 예(Usage example)

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

cosineDistance

도입된 버전: v1.1

두 벡터(튜플의 원소가 좌표)를 대상으로 코사인 거리를 계산합니다. 반환 값이 작을수록 두 벡터가 더 유사합니다.

구문

cosineDistance(vector1, vector2)

별칭(Aliases): distanceCosine

인수(Arguments)

반환 값(Returned value)

두 벡터 사이 각도의 코사인 값을 1에서 뺀 결과를 반환합니다. Float64

예시(Examples)

기본 사용 예(Basic usage)

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

cosineDistanceTransposed

도입 버전: v26.1

두 점(벡터의 값은 좌표임) 사이의 코사인 거리를 근사적으로 계산합니다. 반환 값이 작을수록 벡터가 더 유사합니다.

구문

cosineDistanceTransposed(vector1, vector2, p)

별칭: distanceCosineTransposed

인자

  • vectors — 벡터. QBit(T, UInt64)
  • reference — 기준 벡터. Array(T)
  • p — 거리 계산에 사용할 각 벡터 요소의 비트 수(1부터 요소 비트 폭까지). 양자화 수준은 정밀도와 속도 간의 트레이드오프를 제어합니다. 더 적은 비트를 사용하면 I/O 및 계산은 더 빨라지지만 정확도는 낮아지고, 더 많은 비트를 사용하면 성능이 떨어지는 대신 정확도가 높아집니다. UInt

반환 값

두 벡터 사이 각도의 코사인 값을 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 │
└──────────────────────────────────────────────┘