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