언어 모델 심화

코사인 유사도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