코사인 유사도Cosine Similarity
두 방향이 얼마나 같은 쪽을 보는지 재는 자
- 코사인 유사도는 두 방향이 같은 쪽을 보는 정도를 재는 자예요.
- 얼마나 멀리 있는지는 보지 않아요. 길이를 빼고 각도만 봐요.
- 길이를 빼는 이유는 글 길이나 등장 횟수 때문에 길어진 쪽이 무조건 이기는 일을 막기 위해서예요.
- 같은 쪽을 볼수록 1에 가깝고, 아무 상관 없으면 0 근처, 정반대면 마이너스가 나와요.
- 값이 높다고 뜻이 같지는 않아요. 쓰이는 자리가 닮은 반대말도 아주 가깝게 나와요.
목차
1비유로 이해하기
갈림길에 선 두 사람이 각자 나침반을 꺼내 방향을 정해요. 한 사람은 북동쪽을 보고 백 걸음을 갔고, 다른 사람은 같은 북동쪽을 보고 열 걸음만 갔어요. 둘이 같은 쪽으로 가고 있느냐고 물으면 답은 그렇다예요. 걸음 수는 이 물음과 상관이 없어요.
반대로 한 사람은 북동쪽, 다른 사람은 남쪽을 봤다면 둘 다 백 걸음씩 갔더라도 같은 쪽이 아니에요. 얼마나 갔는지가 아니라 어느 쪽을 보고 섰는지가 답을 정해요.
바늘이 완전히 포개지면 가장 닮은 것이고, 직각으로 어긋나면 서로 아무 상관 없는 방향이고, 정반대를 가리키면 반대쪽이에요. 이 자에는 걸음 수가 들어갈 자리가 없어요.
2자세히 알아보기
걸음 수가 아니라 방향을 봐요
AI가 다루는 글은 뜻을 담은 긴 숫자 묶음으로 바뀌어요. 이 묶음은 어떤 방향을 가리키는 화살표라고 보면 돼요. 두 글이 얼마나 닮았는지 물으면, 두 화살표가 이루는 각도를 봐요.
각도만 보기 때문에 화살표를 두 배로 늘려도 답은 그대로예요. 길이를 늘리는 일은 방향을 바꾸지 않으니까요. 코사인 유사도가 크기에 흔들리지 않는다고 말하는 게 이 뜻이에요.
거리를 재는 다른 자도 있어요. 두 점 사이의 직선 거리를 재는 방식은 위치까지 함께 보기 때문에 길이 차이가 그대로 답에 들어와요. 글을 다룰 때 방향 쪽 자를 더 자주 쓰는 데에는 이유가 있어요.
길이를 빼는 이유
같은 이야기를 세 줄로 쓴 글과 서른 줄로 쓴 글이 있다고 해 봐요. 내용은 같아도 긴 글 쪽 화살표가 훨씬 길어져요. 길이를 그대로 계산에 넣으면 긴 문서가 늘 위로 올라와요. 검색 결과가 긴 글로만 채워지는 셈이에요.
단어 하나를 여러 번 반복해도 같은 일이 벌어져요. 같은 말을 스무 번 적은 글이 한 번 적은 글보다 무조건 강해지면 곤란해요.
방향만 보면 이 문제가 사라져요. 세 줄짜리 글과 서른 줄짜리 글이 같은 내용을 담고 있으면 두 화살표는 같은 쪽을 봐요. 검색이나 추천에서 이 자를 기본으로 쓰는 이유예요.
값이 말해 주는 것
두 방향이 완전히 포개지면 값은 1이에요. 서로 직각이면 0이고, 정반대를 가리키면 마이너스 1이에요. 실제 문서들 사이에서는 대체로 그 중간 어딘가의 값이 나와요.
주의할 점이 있어요. 요즘 모델이 만드는 묶음들은 대체로 한쪽에 몰려 있어서, 아무 상관 없는 두 글도 0이 아니라 꽤 높은 값으로 나와요. 값 하나만 보고 닮았다고 판단하면 어긋나요.
그래서 순위표로 쓰는 게 맞아요. 후보 천 개를 이 자로 재서 가장 위에 온 열 개를 고르는 식이에요. 어느 값부터 통과시킬지 선을 그으려면 그 선을 데이터로 직접 확인해야 해요.
가깝다고 같은 뜻은 아니에요
"좋다"와 "나쁘다"를 재 보면 놀랄 만큼 가깝게 나와요. 두 말은 뜻이 정반대지만 쓰이는 자리가 거의 같기 때문이에요. 앞뒤에 오는 말이 닮으면 방향도 닮아요.
날짜나 숫자, 사람 이름도 조심해야 해요. 서로 다른 두 날짜는 방향이 아주 가까워서, 이 자만으로는 3월 문서와 9월 문서를 가려내지 못해요.
부정문도 같은 함정이에요. "환불이 된다"와 "환불이 안 된다"는 방향이 가까워요. 이 자는 두 글이 같은 주제를 다루는지를 알려 줄 뿐, 같은 말을 하는지는 알려 주지 않아요.
어디에 쓰이나요
가장 많이 쓰이는 자리는 검색이에요. 질문 하나를 화살표로 바꾸고, 저장해 둔 문서 화살표들과 견줘 가까운 순서로 줄을 세워요. 뜻으로 찾는 검색이 내놓는 순위가 대개 이 자로 매겨진 결과예요.
추천에서도 같은 방식이 돌아가요. 내가 오래 본 것들의 방향을 모아 두고, 그와 가까운 쪽을 보여 줘요. 문서 더미에서 거의 같은 내용을 두 번 올린 중복을 찾아낼 때도 써요.
비교할 화살표가 수백만 개가 되면 하나하나 다 재기 어려워요. 그래서 미리 비슷한 방향끼리 묶어 두고 후보를 좁힌 뒤 그 안에서만 정확히 재는 방법을 함께 써요.
3조금 더 정확하게
코사인 유사도는 두 벡터가 이루는 각의 코사인 값이에요. 각도가 0도면 1, 90도면 0, 180도면 마이너스 1이 나와요. 길이를 1로 맞춘 벡터들 사이에서는 이 값과 직선 거리 순위가 서로 뒤집히지 않아서, 실제 검색 시스템은 계산이 빠른 쪽을 골라 쓰기도 해요.
비유가 어긋나는 지점도 있어요. 나침반의 방향은 평면 위의 한 각도지만, 글의 화살표는 수백에서 수천 갈래로 뻗은 공간에 놓여요. 그 공간에서는 아무렇게나 고른 두 방향이 거의 항상 직각에 가까워서, 우리 감각과 다르게 굴어요. 또 나침반의 북쪽은 누구에게나 같지만 화살표 공간에는 기준이 되는 방향이 없어요. 값은 언제나 두 화살표 사이에서만 뜻을 가져요. 모델을 바꾸면 공간 자체가 달라지니 예전 값과 새 값을 나란히 비교해서도 안 돼요. 그래서 이 자는 무엇이 얼마나 비슷한지 알려 주는 저울이 아니라, 후보들을 줄 세우는 도구로 보는 편이 맞아요.
4직접 해보기
5흔한 오해
유사도가 높으면 뜻이 같다고 생각하기 쉽지만, 실제로는 쓰이는 자리가 닮은 반대말도 아주 높게 나와요.
점수 0.8이면 충분히 비슷하다고 여기기 쉽지만, 실제로는 좋은 값의 기준이 모델과 자료마다 달라서 순위로만 써야 해요.
두 글이 얼마나 떨어져 있는지 재는 자라고 생각하기 쉽지만, 실제로는 거리를 빼고 방향만 보는 자예요.
7한 줄 요약
그러니까코사인 유사도는 두 화살표가 얼마나 같은 쪽을 보는지만 재는 자라서, 길이에 흔들리지 않는 대신 반대말도 가깝다고 말해요.
잘못된 내용이나 더 좋은 비유가 있나요? 수정 제안 보내기 · 마지막 수정2026-09-02