본문으로 건너뛰기
최종 수정: 에

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