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

Функции для вычисления расстояния

L1Distance

Добавлена в версии: v21.11

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

Синтаксис

L1Distance(vector1, vector2)

Псевдонимы: distanceL1

Аргументы

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

Возвращает расстояние в норме L1. 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

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

Синтаксис

L2Distance(vector1, vector2)

Псевдонимы: distanceL2

Аргументы

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

Возвращает расстояние в 2-норме. Float64

Примеры

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

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

L2DistanceTransposed

Добавлено в: v25.10

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

Синтаксис

L2DistanceTransposed(vector1, vector2, p)

Псевдонимы: distanceL2Transposed

Аргументы

  • vectors — Векторы. QBit(T, UInt64)
  • reference — Опорный вектор. Array(T)
  • p — Количество бит каждого элемента вектора, используемых при вычислении расстояния (от 1 до разрядности элемента). Уровень квантизации определяет компромисс между точностью и скоростью. Использование меньшего числа бит приводит к более быстрым операциям ввода-вывода и вычислениям с меньшей точностью, тогда как использование большего числа бит повышает точность за счёт производительности. 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

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

Синтаксис

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} (максимальная норма).

Синтаксис

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)

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

Возвращает норму L∞ (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-норме).

Синтаксис

LpDistance(vector1, vector2, p)

Псевдонимы: distanceLp

Аргументы

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

Псевдонимы: 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). 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 │
└────────────────────────────────┘