코사인 유사도(Cosine Similarity) 완벽 이해하기

Kunho Ko
11/25/2025
코사인 유사도(Cosine Similarity) 완벽 이해하기 벡터 기반 데이터 분석이나 자연어 처리(NLP)를 공부하다 보면 가장 먼저 마주치는 개념 중 하나가 바로 **코사인 유사도(Cosine Similarity)**입니다. 검색 시스템, 추천 시스템, 문서 분류, 임베딩 기반 RAG 등 다양한 분야에서 널리 사용되는 핵심 기술이죠. 이번 글에서는 코사인 유사도가 무엇이며, 왜 중요한지, 어떻게 계산되는지, 실제로 어디에 활용되는지까지 블로그 형식으로 쉽게 정리해 보겠습니다. 📌 코사인 유사도란 무엇인가? 코사인 유사도(Cosine Similarity)는 두 벡터의 방향이 얼마나 비슷한지를 측정하는 지표입니다. 핵심은 “거리”가 아니라 방향이라는 점입니다. 따라서 다음과 같은 상황에서 특히 유용합니다. 벡터의 **크기(Length)**가 중요한 게 아니라, 두 벡터가 같은 방향을 가리키는지가 더 중요한 경우 예를 들어, 두 문서가 길이가 얼마나 다르든 상관없이, 사용된 단어들이 비슷한 비율로 포함되어 있다면 높은 유사도를 갖게 됩니다. 📐 코사인 유사도 공식 코사인 유사도는 두 벡터 A, B 사이의 각도(angle)의 코사인 값을 계산합니다. cosine_similarity(A,B)=A⋅B ​/ ‖A‖‖B‖ ​ 각 항목을 해석해보면: A ⋅ B (내적) 두 벡터의 방향이 얼마나 같은지를 나타내는 값 ‖A‖, ‖B‖ (벡터의 크기) 벡터의 길이 즉, 두 벡터가 완전히 같은 방향이면 → 코사인 값은 1 서로 완전히 반대 방향이면 → -1 직각이면 → 0 값의 범위는 -1 ~ 1입니다. 하지만 일반적인 NLP 임베딩에서는 음수 방향이 의미가 크지 않기 때문에 0 ~ 1 사이에서 해석되는 경우가 많습니다. 🧠 왜 거리(Euclidean Distance) 대신 방향을 쓸까? 문서나 문장 임베딩과 같은 고차원 벡터에서는 크기(norm) 자체가 큰 의미를 갖지 않는 경우가 많습니다. 예를 들어: 문서가 길면 벡터 원소가 자연스럽게 커지고 짧은 문서는 벡터 크기도 작아지는 경향 이런 상황에서 유클리드 거리(Euclidean Distance)를 사용하면 문서 길이가 긴 것만으로도 ‘멀다’고 계산되어 버립니다. 하지만 코사인 유사도는 두 벡터를 모두 정규화한 뒤 “방향”만 비교하므로, 문서 길이에 잘 영향을 받지 않고 의미적 유사성을 비교하는 데 매우 적합합니다. 즉, 코사인 유사도는 ✔ 문서의 길이와 상관없이 ✔ 의미적으로 얼마나 비슷한지 를 판단할 수 있는 훌륭한 지표입니다.

Comments

Login to leave a comment.

No comments yet. Be the first to comment!