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

COSINE_SIMILARITY

Описание​

Вычисляет косинусное сходство между двумя векторами. Сходство вычисляется по скалярному произведению и нормам векторов; результат находится в диапазоне [-1, 1].

Синтаксис​

COSINE_SIMILARITY(<array1>, <array2>)

Параметры​

ПараметрОписание
<array1>Первый вектор. Входное значение должно иметь тип ARRAY<FLOAT>.
<array2>Второй вектор. Входное значение должно иметь тип ARRAY<FLOAT>, а число элементов должно совпадать с числом элементов в <array1>.

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

Возвращает косинусное сходство между двумя векторами в виде значения типа FLOAT. Если входной массив равен NULL или любой элемент массива равен NULL, возвращается ошибка. Если массивы содержат разное число элементов, возвращается ошибка. Если массив пуст или хотя бы один из векторов нулевой, возвращается 0.0.

Пример​

-- Two identical vectors have similarity 1
SELECT COSINE_SIMILARITY([1, 2, 3], [1, 2, 3]);
+-----------------------------------------+
| COSINE_SIMILARITY([1, 2, 3], [1, 2, 3]) |
+-----------------------------------------+
| 1 |
+-----------------------------------------+

Векторы [1, 2, 3] и [1, 2, 3] направлены в одну сторону, поэтому сходство равно 1.

-- Orthogonal vectors have similarity 0
SELECT COSINE_SIMILARITY([1, 0], [0, 1]);
+-----------------------------------+
| COSINE_SIMILARITY([1, 0], [0, 1]) |
+-----------------------------------+
| 0 |
+-----------------------------------+

Векторы ортогональны, поэтому их скалярное произведение равно 0, а сходство равно 0.

-- A zero vector returns 0
SELECT COSINE_SIMILARITY([0, 0, 0], [1, 2, 3]);
+-----------------------------------------+
| COSINE_SIMILARITY([0, 0, 0], [1, 2, 3]) |
+-----------------------------------------+
| 0 |
+-----------------------------------------+

У нулевого вектора направление не определено, поэтому результат равен 0.

-- An empty array returns 0
SELECT COSINE_SIMILARITY([], []);
+---------------------------+
| COSINE_SIMILARITY([], []) |
+---------------------------+
| 0 |
+---------------------------+
-- NULL inside the input array raises an error
SELECT COSINE_SIMILARITY([1, NULL, 3], [1, 2, 3]);
ERROR 1105 (HY000): errCode = 2, detailMessage = (127.0.0.1)[INVALID_ARGUMENT]First argument for function cosine_similarity cannot have null