코사인 유사도 계산기
두 벡터의 코사인 유사도와 사이각을 구하고 유클리드·맨해튼 거리, 자카드 계수와 나란히 놓습니다. 정규화하면 코사인과 거리가 왜 같은 순위를 주는지도 보여 줍니다.
쉼표·공백·줄바꿈으로 구분 — 현재 5차원
A와 차원이 같아야 합니다 — 현재 5차원
코사인 유사도
0.8915558282
사이각 26.9306° · 5차원 · 값의 범위 0 ~ 1 (음수 성분 없음)
사용 방법
- 1두 벡터를 쉼표·공백으로 구분해 각각 넣습니다. 차원이 같아야 합니다.
- 2코사인 유사도와 사이각을 확인합니다.
- 3정규화 뒤 유클리드 거리와 √(2 − 2cos)가 같은 값인지로 검산합니다.
- 4피어슨 상관계수와 자카드 계수도 함께 나오므로 어떤 지표가 맞는지 견줘 봅니다.
자주 묻는 질문
내적을 두 벡터의 길이 곱으로 나눕니다. cos θ = A·B/(|A||B|)이며, 분모가 길이라서 길이는 나눠 없어지고 방향만 남습니다. 한 벡터를 몇 배로 늘려도 값이 그대로인 것이 요점이고, 문서 검색이나 임베딩 비교에서 이것을 쓰는 이유가 그것입니다.
거리는 길이에 휘둘립니다. 방향이 완전히 같은 (1,1)과 (100,100)은 코사인이 1인데 유클리드 거리는 140이 나옵니다. 다만 길이를 1로 맞춘 뒤에는 둘이 1:1로 대응합니다. d² = 2 − 2cos θ이므로 정규화한 임베딩에서는 코사인으로 줄을 세우나 거리로 줄을 세우나 순서가 같습니다. «둘 중 뭘 써야 하나»가 실은 «정규화했나»라는 질문인 이유입니다.
성분에 음수가 섞이면 −1까지 내려갈 수 있고, 성분이 전부 0 이상이면 0~1입니다. 단어 빈도나 TF-IDF처럼 음수가 없는 자료에서 −0.3 같은 값이 나왔다면 계산이나 자료가 잘못된 것입니다. 임베딩은 보통 음수가 섞여 있어 −1~1입니다.
각 벡터에서 자기 평균을 뺀 뒤 코사인을 재면 그것이 피어슨 상관계수입니다. 두 지표를 다른 것처럼 배우지만 «평균을 뺐는가»만 다르며, 코사인은 «둘 다 크면 비슷하다», 피어슨은 «둘 다 평균보다 크면 비슷하다»로 읽힙니다. 모든 성분이 같은 벡터는 평균을 빼면 영벡터가 되어 피어슨이 정의되지 않습니다.
값의 크기를 무시하고 «어느 자리가 채워졌는가»만 볼 때 씁니다. 이 계산기는 0이 아닌 성분의 위치를 집합으로 보고 교집합÷합집합으로 계산합니다. 태그나 집합처럼 있다·없다가 전부인 자료에는 이쪽이 맞고, 빈도나 가중치가 뜻을 갖는 자료에는 코사인이 맞습니다.
acos의 기울기가 ±1에서 무한대라 0°나 180° 근처에서 자릿수가 통째로 날아가기 때문입니다. 정반대인 [1,2]와 [−1,−2]는 코사인이 −0.9999999999999998로 나오는데, acos를 그대로 씌우면 180°가 아니라 179.999998°가 됩니다. 이 계산기는 θ = 2·atan2(|Â−B̂|, |Â+B̂|)로 재서 양 끝에서도 자릿수를 잃지 않습니다.
정의되지 않는다고 알립니다. 길이가 0이면 방향이 없어 0으로 나누게 되기 때문입니다. 값을 0이나 1로 채워 넣지 않는 것은, 검색 결과에서 빈 문서가 1등으로 올라오는 사고가 대개 거기서 나기 때문입니다. 실제 코드에서도 영벡터를 먼저 걸러 내는 편이 안전합니다.
전송되지 않습니다. 계산은 모두 브라우저 안에서 이루어지고 넣은 값은 이 기기에만 남습니다.
알아두면 좋은 점
- 두 벡터의 차원이 같아야 합니다. 같은 자리끼리 짝지어야 계산할 수 있습니다.
- 영벡터는 방향이 없어 코사인이 정의되지 않습니다. 값을 임의로 채워 넣지 않고 그렇게 알립니다.
- 자카드 계수는 0이 아닌 성분의 «위치»만 봅니다. 값의 크기는 반영하지 않습니다.
- 사이각은 acos가 아니라 정규화 벡터의 차·합으로 잽니다. 0°와 180° 근처의 자릿수 손실을 피하기 위해서입니다.
- 차원은 2000까지 계산합니다.
함께 보면 좋은 도구
마지막 검증: 2026년 9월 2일 · 결과는 참고용 추정치입니다.