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

COSINE_SIMILARITY

Описание​

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

Примечание о версии

Эта функция поддерживается начиная с версии 4.1.2.

Синтаксис​

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