> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-fbfa8bee.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> 거리 함수 문서

# 거리 함수

{/*AUTOGENERATED_START*/}

<div id="L1Distance">
  ## L1Distance
</div>

도입 버전: v21.11.0

벡터의 원소를 좌표로 하는 두 점 사이의 거리를 `L1` 공간(1-노름, [taxicab geometry](https://en.wikipedia.org/wiki/Taxicab_geometry) 거리)에서 계산합니다.

**구문**

```sql theme={null}
L1Distance(vector1, vector2)
```

**별칭**: `distanceL1`

**인수**

* `vector1` — 첫 번째 벡터입니다. [`Tuple(T)`](/ko/reference/data-types/tuple) 또는 [`Array(T)`](/ko/reference/data-types/array)
* `vector2` — 두 번째 벡터입니다. [`Tuple(T)`](/ko/reference/data-types/tuple) 또는 [`Array(T)`](/ko/reference/data-types/array)

**반환 값**

1-노름 거리를 반환합니다. `Array` 입력의 경우, 요소 타입의 최소 공통 상위 타입이 `Float32` 또는 `BFloat16`이면 `Float32`를 반환하고, 그렇지 않으면 `Float64`를 반환합니다. `Tuple` 입력의 경우 반환 타입은 요소별 연산의 산술 결과 타입을 따릅니다(정수 타입은 유지됨). [`(U)Int*`](/ko/reference/data-types/int-uint) 또는 [`Float*`](/ko/reference/data-types/float)

**예시**

**기본 사용법**

```sql title=Query theme={null}
SELECT L1Distance((1, 2), (2, 3))
```

```response title=Response theme={null}
┌─L1Distance((1, 2), (2, 3))─┐
│                          2 │
└────────────────────────────┘
```

<div id="L1Norm">
  ## L1Norm
</div>

도입된 버전: v21.11.0

벡터 각 요소의 절댓값 합을 계산합니다.

**구문**

```sql theme={null}
L1Norm(vector)
```

**별칭**: `normL1`

**인수**

* `vector` — 숫자 값으로 이루어진 벡터 또는 튜플. [`Array(T)`](/ko/reference/data-types/array) 또는 [`Tuple(T)`](/ko/reference/data-types/tuple)

**반환 값**

L1 노름 또는 [taxicab geometry](https://en.wikipedia.org/wiki/Taxicab_geometry) 거리를 반환합니다. [`UInt*`](/ko/reference/data-types/int-uint) 또는 [`Float*`](/ko/reference/data-types/float) 또는 [`Decimal`](/ko/reference/data-types/decimal)

**예시**

**기본 사용법**

```sql title=Query theme={null}
SELECT L1Norm((1, 2))
```

```response title=Response theme={null}
┌─L1Norm((1, 2))─┐
│              3 │
└────────────────┘
```

<div id="L1Normalize">
  ## L1Normalize
</div>

도입 버전: v21.11.0

주어진 벡터의 단위 벡터를 `L1` 공간([taxicab geometry](https://en.wikipedia.org/wiki/Taxicab_geometry))에서 계산합니다. 튜플의 요소는 좌표입니다.

**구문**

```sql theme={null}
L1Normalize(tuple)
```

**별칭**: `normalizeL1`

**인수**

* `tuple` — 숫자 값으로 구성된 튜플입니다. [`Tuple(T)`](/ko/reference/data-types/tuple)

**반환 값**

단위 벡터를 반환합니다. [`Tuple(Float64)`](/ko/reference/data-types/tuple)

**예시**

**기본 사용법**

```sql title=Query theme={null}
SELECT L1Normalize((1, 2))
```

```response title=Response theme={null}
┌─L1Normalize((1, 2))─────────────────────┐
│ (0.3333333333333333,0.6666666666666666) │
└─────────────────────────────────────────┘
```

<div id="L2Distance">
  ## L2Distance
</div>

도입 버전: v21.11.0

유클리드 공간(Euclidean space)에서 두 점 사이의 거리(벡터의 원소는 각 점의 좌표)를 계산합니다([유클리드 거리](https://en.wikipedia.org/wiki/Euclidean_distance)).

**구문**

```sql theme={null}
L2Distance(vector1, vector2)
```

**별칭**: `distanceL2`

**인수**

* `vector1` — 첫 번째 벡터. [`Tuple(T)`](/ko/reference/data-types/tuple) 또는 [`Array(T)`](/ko/reference/data-types/array)
* `vector2` — 두 번째 벡터. [`Tuple(T)`](/ko/reference/data-types/tuple) 또는 [`Array(T)`](/ko/reference/data-types/array)

**반환 값**

2-노름 거리를 반환합니다. `Array` 입력에서는 요소 타입의 최소 공통 상위 타입이 `Float32` 또는 `BFloat16`이면 `Float32`를 반환하고, 그렇지 않으면 `Float64`를 반환합니다. `Tuple` 입력에서는 항상 `Float64`를 반환합니다. [`Float*`](/ko/reference/data-types/float)

**예시**

**기본 사용법**

```sql title=Query theme={null}
SELECT L2Distance((1, 2), (2, 3))
```

```response title=Response theme={null}
┌─L2Distance((1, 2), (2, 3))─┐
│         1.4142135623730951 │
└────────────────────────────┘
```

<div id="L2DistanceTransposed">
  ## L2DistanceTransposed
</div>

도입 버전: v25.10.0

유클리드 공간([유클리드 거리](https://en.wikipedia.org/wiki/Euclidean_distance))에서 두 점 사이의 근사 거리를 계산합니다(벡터의 값이 좌표임).

**구문**

```sql theme={null}
L2DistanceTransposed(vector1, vector2, p)
```

**별칭**: `distanceL2Transposed`

**인수**

* `vectors` — 벡터. [`QBit(T, UInt64)`](/ko/reference/data-types/qbit)
* `reference` — 기준 벡터. [`Array(T)`](/ko/reference/data-types/array)
* `p` — 거리 계산에 사용할 각 벡터 요소의 비트 수(1부터 요소의 비트 폭까지)입니다. 양자화 수준은 정밀도와 속도 사이의 균형을 결정합니다. 더 적은 비트를 사용하면 정확도는 낮아지지만 I/O 및 계산 속도는 빨라지고, 더 많은 비트를 사용하면 성능 저하를 감수하는 대신 정확도는 높아집니다. [`UInt`](/ko/reference/data-types/int-uint)

**반환 값**

근사 2-노름 거리를 반환합니다. 반환 타입은 항상 `Float64`입니다. [`Float64`](/ko/reference/data-types/float)

**예시**

**기본 사용법**

```sql title=Query theme={null}
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;
```

```response title=Response theme={null}
┌─L2DistanceTransposed([0, 1], [1, 2], 16)─┐
│                       1.4142135623730951 │
└──────────────────────────────────────────┘
```

<div id="L2Norm">
  ## L2Norm
</div>

도입 버전: v21.11.0

벡터 요소 제곱합의 제곱근을 계산합니다.

**구문**

```sql theme={null}
L2Norm(vector)
```

**별칭**: `normL2`

**인수**

* `vector` — 숫자형 값으로 이루어진 벡터 또는 튜플입니다. [`Tuple(T)`](/ko/reference/data-types/tuple) 또는 [`Array(T)`](/ko/reference/data-types/array)

**반환 값**

L2 노름 또는 [유클리드 거리](https://en.wikipedia.org/wiki/Euclidean_distance)를 반환합니다. [`UInt*`](/ko/reference/data-types/int-uint) 또는 [`Float*`](/ko/reference/data-types/float)

**예시**

**기본 사용법**

```sql title=Query theme={null}
SELECT L2Norm((1, 2))
```

```response title=Response theme={null}
┌───L2Norm((1, 2))─┐
│ 2.23606797749979 │
└──────────────────┘
```

<div id="L2Normalize">
  ## L2Normalize
</div>

도입 버전: v21.11.0

주어진 벡터의 단위 벡터를 계산합니다(튜플의 원소는 좌표임). [유클리드 거리](https://en.wikipedia.org/wiki/Euclidean_distance)를 사용해 유클리드 공간에서 계산합니다.

**구문**

```sql theme={null}
L2Normalize(tuple)
```

**별칭**: `normalizeL2`

**인수**

* `tuple` — 숫자 값으로 구성된 튜플입니다. [`Tuple(T)`](/ko/reference/data-types/tuple)

**반환 값**

단위 벡터를 반환합니다. [`Tuple(Float64)`](/ko/reference/data-types/tuple)

**예시**

**기본 사용법**

```sql title=Query theme={null}
SELECT L2Normalize((3, 4))
```

```response title=Response theme={null}
┌─L2Normalize((3, 4))─┐
│ (0.6,0.8)           │
└─────────────────────┘
```

<div id="L2SquaredDistance">
  ## L2SquaredDistance
</div>

도입 버전: v22.7.0

두 벡터에서 서로 대응하는 원소 간 차이의 제곱합을 계산합니다.

**구문**

```sql theme={null}
L2SquaredDistance(vector1, vector2)
```

**별칭**: `distanceL2Squared`

**인수**

* `vector1` — 첫 번째 벡터입니다. [`Tuple(T)`](/ko/reference/data-types/tuple) 또는 [`Array(T)`](/ko/reference/data-types/array)
* `vector2` — 두 번째 벡터입니다. [`Tuple(T)`](/ko/reference/data-types/tuple) 또는 [`Array(T)`](/ko/reference/data-types/array)

**반환 값**

두 벡터에서 대응하는 요소끼리의 차이를 제곱한 뒤 모두 더한 값을 반환합니다. `Array` 입력의 경우, 요소 타입의 최소 공통 상위 타입(least common supertype)이 `Float32` 또는 `BFloat16`이면 `Float32`를 반환하고, 그렇지 않으면 `Float64`를 반환합니다. `Tuple` 입력의 경우, 반환 타입은 요소별 연산의 산술 결과 타입을 따릅니다(정수 타입은 유지됨). [`(U)Int*`](/ko/reference/data-types/int-uint) 또는 [`Float*`](/ko/reference/data-types/float)

**예시**

**기본 사용법**

```sql title=Query theme={null}
SELECT L2SquaredDistance([1, 2, 3], [0, 0, 0])
```

```response title=Response theme={null}
┌─L2SquaredDis⋯ [0, 0, 0])─┐
│                       14 │
└──────────────────────────┘
```

<div id="L2SquaredNorm">
  ## L2SquaredNorm
</div>

도입 버전: v22.7.0

벡터 원소 제곱합의 제곱근인 [`L2Norm`](#L2Norm)을 다시 제곱한 값을 계산합니다.

**구문**

```sql theme={null}
L2SquaredNorm(vector)
```

**별칭**: `normL2Squared`

**인수**

* `vector` — 숫자 값으로 이루어진 벡터 또는 튜플입니다. [`Array(T)`](/ko/reference/data-types/array) 또는 [`Tuple(T)`](/ko/reference/data-types/tuple)

**반환 값**

L2 노름의 제곱을 반환합니다. [`UInt*`](/ko/reference/data-types/int-uint) 또는 [`Float*`](/ko/reference/data-types/float) 또는 [`Decimal`](/ko/reference/data-types/decimal)

**예시**

**기본 사용법**

```sql title=Query theme={null}
SELECT L2SquaredNorm((1, 2))
```

```response title=Response theme={null}
┌─L2SquaredNorm((1, 2))─┐
│                     5 │
└───────────────────────┘
```

<div id="LinfDistance">
  ## LinfDistance
</div>

도입 버전: v21.11.0

`L_{inf}` 공간에서 두 점 사이의 거리(벡터의 원소가 좌표임)를 계산합니다([최대 노름](https://en.wikipedia.org/wiki/Norm_\(mathematics\)#Maximum_norm_\(special_case_of:_infinity_norm,_uniform_norm,_or_supremum_norm\))).

**구문**

```sql theme={null}
LinfDistance(vector1, vector2)
```

**별칭**: `distanceLinf`

**인수**

* `vector1` — 첫 번째 벡터. [`Tuple(T)`](/ko/reference/data-types/tuple) 또는 [`Array(T)`](/ko/reference/data-types/array)
* `vector2` — 두 번째 벡터. [`Tuple(T)`](/ko/reference/data-types/tuple) 또는 [`Array(T)`](/ko/reference/data-types/array)

**반환 값**

무한 노름 거리를 반환합니다. `Array` 입력의 경우, 요소 타입의 최소 공통 상위 타입이 `Float32` 또는 `BFloat16`이면 `Float32`를, 그렇지 않으면 `Float64`를 반환합니다. `Tuple` 입력의 경우 항상 `Float64`를 반환합니다. [`Float*`](/ko/reference/data-types/float)

**예시**

**기본 사용법**

```sql title=Query theme={null}
SELECT LinfDistance((1, 2), (2, 3))
```

```response title=Response theme={null}
┌─LinfDistance((1, 2), (2, 3))─┐
│                            1 │
└──────────────────────────────┘
```

<div id="LinfNorm">
  ## LinfNorm
</div>

도입 버전: v21.11.0

벡터 원소 절댓값의 최댓값을 계산합니다.

**구문**

```sql theme={null}
LinfNorm(vector)
```

**별칭**: `normLinf`

**인수**

* `vector` — 숫자형 값으로 이루어진 벡터 또는 튜플입니다. [`Array(T)`](/ko/reference/data-types/array) 또는 [`Tuple(T)`](/ko/reference/data-types/tuple)

**반환 값**

Linf 노름 또는 절댓값의 최댓값을 반환합니다. [`Float64`](/ko/reference/data-types/float)

**예시**

**기본 사용법**

```sql title=Query theme={null}
SELECT LinfNorm((1, -2))
```

```response title=Response theme={null}
┌─LinfNorm((1, -2))─┐
│                 2 │
└───────────────────┘
```

<div id="LinfNormalize">
  ## LinfNormalize
</div>

도입 버전: v21.11.0

주어진 벡터의 단위 벡터를 계산합니다(튜플의 원소는 좌표를 나타냅니다). `L_{inf}` 공간에서 [최대 노름](https://en.wikipedia.org/wiki/Norm_\(mathematics\)#Maximum_norm_\(special_case_of:_infinity_norm,_uniform_norm,_or_supremum_norm\))을 사용합니다.

**구문**

```sql theme={null}
LinfNormalize(tuple)
```

**별칭**: `normalizeLinf`

**인수**

* `tuple` — 숫자형 값으로 이루어진 튜플입니다. [`Tuple(T)`](/ko/reference/data-types/tuple)

**반환 값**

단위 벡터를 반환합니다. [`Tuple(Float64)`](/ko/reference/data-types/tuple)

**예시**

**기본 사용법**

```sql title=Query theme={null}
SELECT LinfNormalize((3, 4))
```

```response title=Response theme={null}
┌─LinfNormalize((3, 4))─┐
│ (0.75,1)              │
└───────────────────────┘
```

<div id="LpDistance">
  ## LpDistance
</div>

도입 버전: v21.11.0

`Lp` 공간에서 두 점 사이의 거리(벡터의 원소가 좌표임)를 계산합니다([p-norm distance](https://en.wikipedia.org/wiki/Norm_\(mathematics\)#p-norm)).

**구문**

```sql theme={null}
LpDistance(vector1, vector2, p)
```

**별칭**: `distanceLp`

**인수**

* `vector1` — 첫 번째 벡터입니다. [`Tuple(T)`](/ko/reference/data-types/tuple) 또는 [`Array(T)`](/ko/reference/data-types/array)
* `vector2` — 두 번째 벡터입니다. [`Tuple(T)`](/ko/reference/data-types/tuple) 또는 [`Array(T)`](/ko/reference/data-types/array)
* `p` — 거듭제곱 값입니다. 가능한 값: `[1; inf)` 범위의 실수입니다. [`UInt*`](/ko/reference/data-types/int-uint) 또는 [`Float*`](/ko/reference/data-types/float)

**반환 값**

p-노름 거리를 반환합니다. `Array` 입력의 경우 요소 타입의 최소 공통 상위 타입(least common supertype)이 `Float32` 또는 `BFloat16`이면 `Float32`를 반환하고, 그렇지 않으면 `Float64`를 반환합니다. `Tuple` 입력의 경우 항상 `Float64`를 반환합니다. [`Float*`](/ko/reference/data-types/float)

**예시**

**기본 사용법**

```sql title=Query theme={null}
SELECT LpDistance((1, 2), (2, 3), 3)
```

```response title=Response theme={null}
┌─LpDistance((1, 2), (2, 3), 3)─┐
│            1.2599210498948732 │
└───────────────────────────────┘
```

<div id="LpNorm">
  ## LpNorm
</div>

도입 버전: v21.11.0

벡터의 p-노름을 계산합니다. 각 원소의 절댓값을 p제곱한 값들을 모두 더한 뒤, 그 합의 p제곱근을 구한 값입니다.

특수한 경우:

* p=1이면 L1Norm(맨해튼 거리)와 동일합니다.
* p=2이면 L2Norm(유클리드 거리)와 동일합니다.
* p=∞이면 LinfNorm(최대 노름)와 동일합니다.

**구문**

```sql theme={null}
LpNorm(vector, p)
```

**별칭**: `normLp`

**인수**

* `vector` — 숫자 값으로 구성된 벡터 또는 튜플입니다. [`Tuple(T)`](/ko/reference/data-types/tuple) 또는 [`Array(T)`](/ko/reference/data-types/array)
* `p` — 거듭제곱 값입니다. 가능한 값은 `[1; inf)` 범위의 실수입니다. [`UInt*`](/ko/reference/data-types/int-uint) 또는 [`Float*`](/ko/reference/data-types/float)

**반환 값**

[Lp-노름](https://en.wikipedia.org/wiki/Norm_\(mathematics\)#p-norm)을 반환합니다. [`Float64`](/ko/reference/data-types/float)

**예시**

**기본 사용법**

```sql title=Query theme={null}
SELECT LpNorm((1, -2), 2)
```

```response title=Response theme={null}
┌─LpNorm((1, -2), 2)─┐
│   2.23606797749979 │
└────────────────────┘
```

<div id="LpNormalize">
  ## LpNormalize
</div>

도입 버전: v21.11.0

주어진 벡터의 단위 벡터를 `Lp` 공간에서 계산합니다(튜플의 각 요소는 좌표를 의미하며, [p-노름](https://en.wikipedia.org/wiki/Norm_\(mathematics\)#p-norm)을 사용합니다).

**구문**

```sql theme={null}
LpNormalize(tuple, p)
```

**별칭**: `normalizeLp`

**인수**

* `tuple` — 숫자 값으로 이루어진 튜플입니다. [`Tuple(T)`](/ko/reference/data-types/tuple)
* `p` — 거듭제곱 값입니다. 가능한 값은 `[1; inf)` 범위의 모든 숫자입니다. [`UInt*`](/ko/reference/data-types/int-uint) 또는 [`Float*`](/ko/reference/data-types/float)

**반환 값**

단위 벡터를 반환합니다. [`Tuple(Float64)`](/ko/reference/data-types/tuple)

**예시**

**사용 예시**

```sql title=Query theme={null}
SELECT LpNormalize((3, 4), 5)
```

```response title=Response theme={null}
┌─LpNormalize((3, 4), 5)──────────────────┐
│ (0.7187302630182624,0.9583070173576831) │
└─────────────────────────────────────────┘
```

<div id="cosineDistance">
  ## cosineDistance
</div>

Introduced in: v21.11.0

두 벡터 간의 [코사인 거리](https://en.wikipedia.org/wiki/Cosine_similarity#Cosine_distance)를 계산합니다(튜플의 요소는 좌표입니다). 반환 값이 작을수록 두 벡터는 더 유사합니다.

**구문**

```sql theme={null}
cosineDistance(vector1, vector2)
```

**별칭**: `distanceCosine`

**인수**

* `vector1` — 첫 번째 튜플. [`Tuple(T)`](/ko/reference/data-types/tuple) 또는 [`Array(T)`](/ko/reference/data-types/array)
* `vector2` — 두 번째 튜플. [`Tuple(T)`](/ko/reference/data-types/tuple) 또는 [`Array(T)`](/ko/reference/data-types/array)

**반환 값**

코사인 거리(코사인 유사도에서 1을 뺀 값)를 반환합니다. `Array` 입력의 경우, 요소 타입의 최소 공통 상위 타입이 `Float32` 또는 `BFloat16`이면 `Float32`를 반환하고, 그렇지 않으면 `Float64`를 반환합니다. `Tuple` 입력의 경우 항상 `Float64`를 반환합니다. [`Float*`](/ko/reference/data-types/float)

**예시**

**기본 사용법**

```sql title=Query theme={null}
SELECT cosineDistance((1, 2), (2, 3));
```

```response title=Response theme={null}
┌─cosineDistance((1, 2), (2, 3))─┐
│           0.007722123286332261 │
└────────────────────────────────┘
```

<div id="cosineDistanceTransposed">
  ## cosineDistanceTransposed
</div>

도입 버전: v26.1.0

두 점 사이의 근사 [코사인 거리](https://en.wikipedia.org/wiki/Cosine_similarity#Cosine_distance)를 계산합니다(벡터의 값이 좌표입니다). 반환 값이 작을수록 벡터는 더 유사합니다.

**구문**

```sql theme={null}
cosineDistanceTransposed(vector1, vector2, p)
```

**별칭**: `distanceCosineTransposed`

**인수**

* `vectors` — 벡터. [`QBit(T, UInt64)`](/ko/reference/data-types/qbit)
* `reference` — 기준 벡터. [`Array(T)`](/ko/reference/data-types/array)
* `p` — 거리 계산에 사용할 각 벡터 요소의 비트 수(1부터 요소 비트 폭까지). 양자화 수준은 정밀도와 속도 간의 상충 관계를 제어합니다. 더 적은 비트를 사용하면 정확도는 낮아지지만 I/O 및 계산 속도는 빨라지고, 더 많은 비트를 사용하면 성능 저하를 감수하는 대신 정확도가 높아집니다. [`UInt`](/ko/reference/data-types/int-uint)

**반환 값**

근사 코사인 거리(코사인 유사도에서 1을 뺀 값)를 반환합니다. 반환 타입은 항상 Float64입니다. [`Float64`](/ko/reference/data-types/float)

**예시**

**기본 사용법**

```sql title=Query theme={null}
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;
```

```response title=Response theme={null}
┌─cosineDistanceTransposed([0, 1], [1, 2], 16)─┐
│                          0.10557281085638826 │
└──────────────────────────────────────────────┘
```
