Перейти к основному содержимому
Перейти к основному содержимому

Функции расстояния

L1Distance

Представлено в: v21.11

Вычисляет расстояние между двумя точками (элементы векторов являются координатами) в пространстве L1 (1-норма (геометрия такси расстояние)).

Синтаксис

L1Distance(vector1, vector2)

Аргументы

Возвращаемое значение

Возвращает 1-норму. UInt32 или Float64

Примеры

Базовое использование

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

L1Norm

Представлено в: v21.11

Вычисляет сумму абсолютных элементов вектора.

Синтаксис

L1Norm(vector)

Аргументы

  • vector — Вектор или кортеж числовых значений. Array(T) или Tuple(T)

Возвращаемое значение

Возвращает L1-норму или геометрию такси расстояние. UInt* или Float* или Decimal

Примеры

Базовое использование

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

L1Normalize

Представлено в: v21.11

Вычисляет единичный вектор заданного вектора (элементы кортежа являются координатами) в пространстве L1 (геометрия такси).

Синтаксис

L1Normalize(tuple)

Аргументы

  • tuple — Кортеж числовых значений. Tuple(T)

Возвращаемое значение

Возвращает единичный вектор. Tuple(Float64)

Примеры

Базовое использование

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

L2Distance

Представлено в: v21.11

Вычисляет расстояние между двумя точками (элементы векторов являются координатами) в евклидном пространстве (евклидово расстояние).

Синтаксис

L2Distance(vector1, vector2)

Аргументы

Возвращаемое значение

Возвращает 2-норму. Float64

Примеры

Базовое использование

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

L2DistanceTransposed

Представлено в: v25.10

Вычисляет приблизительное расстояние между двумя точками (значения векторов являются координатами) в евклидном пространстве (евклидово расстояние).

Синтаксис

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

Представлено в: v21.11

Вычисляет квадратный корень из суммы квадратов элементов вектора.

Синтаксис

L2Norm(vector)

Аргументы

  • vector — Вектор или кортеж числовых значений. Tuple(T) или Array(T)

Возвращаемое значение

Возвращает L2-норму или евклидово расстояние. UInt* или Float*

Примеры

Базовое использование

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

L2Normalize

Представлено в: v21.11

Вычисляет единичный вектор заданного вектора (элементы кортежа являются координатами) в евклидном пространстве (с использованием евклидова расстояния).

Синтаксис

L2Normalize(tuple)

Аргументы

  • tuple — Кортеж числовых значений. Tuple(T)

Возвращаемое значение

Возвращает единичный вектор. Tuple(Float64)

Примеры

Базовое использование

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

L2SquaredDistance

Представлено в: v22.7

Вычисляет сумму квадратов разности между соответствующими элементами двух векторов.

Синтаксис

L2SquaredDistance(vector1, vector2)

Аргументы

Возвращаемое значение

Возвращает сумму квадратов разности между соответствующими элементами двух векторов. Float64

Примеры

Базовое использование

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

L2SquaredNorm

Представлено в: v22.7

Вычисляет квадратный корень из суммы квадратов элементов вектора (квадрат L2Norm).

Синтаксис

L2SquaredNorm(vector)

Аргументы

  • vector — Вектор или кортеж числовых значений. Array(T) или Tuple(T)

Возвращаемое значение

Возвращает L2-норму в квадрате. UInt* или Float* или Decimal

Примеры

Базовое использование

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

LinfDistance

Представлено в: v21.11

Вычисляет расстояние между двумя точками (элементы векторов являются координатами) в пространстве L_{inf} (максимальная норма).

Синтаксис

LinfDistance(vector1, vector2)

Аргументы

Возвращаемое значение

Возвращает расстояние бесконечности. Float64

Примеры

Базовое использование

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

LinfNorm

Представлено в: v21.11

Вычисляет максимум абсолютных элементов вектора.

Синтаксис

LinfNorm(vector)

Аргументы

  • vector — Вектор или кортеж числовых значений. Array(T) или Tuple(T)

Возвращаемое значение

Возвращает Linf-норму или максимальное абсолютное значение. Float64

Примеры

Базовое использование

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

LinfNormalize

Представлено в: v21.11

Вычисляет единичный вектор заданного вектора (элементы кортежа являются координатами) в пространстве L_{inf} (с использованием максимальной нормы).

Синтаксис

LinfNormalize(tuple)

Аргументы

  • tuple — Кортеж числовых значений. Tuple(T)

Возвращаемое значение

Возвращает единичный вектор. Tuple(Float64)

Примеры

Базовое использование

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

LpDistance

Представлено в: v21.11

Вычисляет расстояние между двумя точками (элементы векторов являются координатами) в пространстве Lp (p-норма расстояния).

Синтаксис

LpDistance(vector1, vector2, p)

Аргументы

  • vector1 — Первый вектор. Tuple(T) или Array(T)
  • vector2 — Второй вектор. 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)

Аргументы

  • 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)

Аргументы

  • 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

Вычисляет косинусное расстояние между двумя векторами (элементы кортежей являются координатами). Чем меньше возвращаемое значение, тем более похожи векторы.

Синтаксис

cosineDistance(vector1, vector2)

Аргументы

Возвращаемое значение

Возвращает косинус угла между двумя векторами, вычтенный из одного. Float64

Примеры

Базовое использование

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