콘텐츠로 이동

P2-3.4 내적(dot product), 길이(norm), 거리(distance), 유사도(similarity)

Section ID: P2-3.4 Version: v2026.07.20

벡터(vector), 행렬(matrix), 행렬 곱(matrix multiplication)까지 읽고 나면 다음 질문이 남습니다. 두 벡터가 얼마나 비슷한가, 얼마나 떨어져 있는가, 길이가 큰 벡터와 방향이 비슷한 벡터를 어떻게 구분하는가입니다. 이 질문이 바로 내적(dot product), 길이(norm), 거리(distance), 유사도(similarity)로 이어집니다.

행렬 곱이 벡터를 결합해 새 값을 만드는 계산이라면, 내적과 거리와 유사도는 벡터를 비교하는 계산입니다. 그래서 벡터를 만든 다음에는, 그 벡터를 어떤 기준으로 읽을지까지 함께 붙잡아야 합니다. 용어를 다시 빠르게 확인할 때는 개념사전도 함께 봅니다.

핵심 기준: 내적(dot product), 길이(norm), 거리(distance), 유사도(similarity)

  • 내적(dot product)을 두 벡터의 대응 성분을 곱해 더한 값으로 설명할 수 있습니다.
  • 길이(norm)를 벡터 크기 또는 세기의 요약값으로 읽을 수 있습니다.
  • 거리(distance)는 떨어짐, 유사도(similarity)는 닮음을 재는 기준이라고 구분할 수 있습니다.
  • 같은 방향이 중요한지, 같은 크기까지 중요한지에 따라 비교 기준이 달라진다고 말할 수 있습니다.
  • k-NN, 임베딩, 유사도 검색을 읽기 위한 최소 비교 언어를 갖출 수 있습니다.

먼저 붙잡을 한 장면

이 절에서 가장 먼저 붙잡아야 할 장면은 같은 기준으로 세 벡터를 비교하는 일입니다.

비교 대상 먼저 보게 되는 점 지금 붙잡을 질문
q = [1, 1], a = [2, 2] 방향은 같고 크기는 더 큼 방향이 중요한가, 크기도 중요한가
q = [1, 1], b = [1, 0] 한 축이 빠져 덜 닮음 좌표상 가까운가, 쓰임새가 비슷한가
q = [1, 1], c = [10, 10] 매우 멀지만 방향은 거의 같음 거리와 코사인 유사도가 다른 답을 내는가

즉 이 절의 핵심은 벡터를 계산한다가 아니라 무엇을 같다고 볼 것인가를 먼저 고르는 일입니다.

세 가지 기준

기준 왜 중요한가 이 절에서 필요한 이해 수준
내적은 함께 움직이는 정도를 보는 요약값이다 행렬 곱과 유사도 계산 사이를 이어 주기 때문입니다. 같은 위치끼리 곱하고 더하는 이유를 읽습니다.
길이와 방향은 같은 정보가 아니다 큰 벡터와 비슷한 방향의 벡터를 구분하게 해 주기 때문입니다. 크기방향을 다른 개념으로 이해합니다.
거리와 유사도는 질문이 다르다 k-NN과 임베딩 검색을 같은 문제로 섞지 않게 해 주기 때문입니다. 얼마나 떨어졌나얼마나 닮았나를 분리해 읽습니다.

내적은 두 벡터를 한 숫자로 접는 계산이다

내적(dot product)은 같은 위치의 값을 곱하고 모두 더해 벡터 두 개의 관계를 숫자 하나로 접는 계산입니다.

\[ a \cdot b = a_1b_1 + a_2b_2 + \cdots + a_nb_n \]

이 계산은 두 벡터가 같은 방향 성분을 얼마나 공유하는가를 빠르게 요약할 때 유용합니다. 그래서 행렬 곱 설명과도 자연스럽게 이어집니다. 행렬 곱의 한 칸 역시 결국 한 행과 한 열의 내적이라고 볼 수 있기 때문입니다.

가장 작은 예로 보면:

\[ [1,\ 2] \cdot [3,\ 4] = 1 \times 3 + 2 \times 4 = 11 \]

내적값이 크다고 해서 항상 좋다는 뜻은 아닙니다. 다만 같은 방향 성분이 많이 겹치면 내적값이 커지고, 서로 반대 성분이 크면 값이 작아지거나 음수가 될 수 있습니다. 그래서 내적은 두 벡터 관계를 한 숫자로 압축한 요약값으로 읽는 편이 안전합니다.

여기서 한 번 더 짧게 정리하면:

질문 내적이 잘 보는 것
같은 방향 성분이 얼마나 겹치는가 잘 봄
절대적인 거리 차이가 얼마나 나는가 직접 답하지는 않음
길이가 큰 벡터가 더 큰 점수를 받는가 그럴 수 있음

길이(norm)는 벡터의 크기를 읽는 값이다

벡터 길이(norm)는 벡터가 원점에서 얼마나 떨어져 있는지, 또는 얼마나 큰 세기를 갖는지를 요약하는 값입니다.

초심자에게는 가장 자주 만나는 2-노름만 먼저 붙잡으면 충분합니다.

\[ ||x|| = \sqrt{x_1^2 + x_2^2 + \cdots + x_n^2} \]

길이가 크다는 말은 값들이 전반적으로 더 크게 뻗어 있다는 뜻이고, 길이가 작다는 말은 원점에 더 가깝다는 뜻입니다.

예를 들어:

\[ ||[3,\ 4]|| = 5 \]

는 3-4-5 삼각형으로 바로 읽을 수 있습니다. 반면 [30, 40]은 같은 방향이지만 길이는 10배 큽니다. 이 차이 때문에 방향은 비슷하지만 크기는 다른 벡터를 따로 구분해야 합니다.

이 장면을 비교표로 보면 더 분명합니다.

벡터 방향 길이
[3, 4] 기준 방향 5
[30, 40] 거의 같은 방향 50
[4, -3] 다른 방향 5

거리와 유사도는 다른 질문에 답한다

거리(distance)와 유사도(similarity)는 둘 다 비교 기준이지만 같은 질문에 답하지는 않습니다.

기준 먼저 묻는 질문
거리(distance) 얼마나 떨어져 있는가
유사도(similarity) 얼마나 닮아 있는가

거리에서는 보통 가까울수록 비슷할 가능성을 떠올립니다. 반면 유사도는 같은 방향이나 같은 쓰임새인가를 더 직접적으로 묻습니다.

그래서 뒤에서:

  • k-NN은 거리 기준으로 가까운 사례를 먼저 봅니다.
  • 임베딩 검색은 유사도 기준으로 비슷한 후보를 먼저 올립니다.

작은 예를 보겠습니다.

\[ q = [1,\ 1],\quad a = [2,\ 2],\quad b = [1,\ 0] \]
  • aq와 방향이 거의 같고, 길이도 더 깁니다.
  • b는 길이는 비슷하지만 한 축이 빠져 있습니다.

이때 질문이 가장 같은 방향을 찾는가라면 a가 더 자연스럽고, 좌표상 가장 가까운 점을 찾는가를 보면 계산 결과가 달라질 수 있습니다. 그래서 비교 문제를 읽을 때는 무엇을 같다고 볼 것인가부터 먼저 정해야 합니다.

여기서 독자가 바로 써먹을 수 있는 질문-기준 표를 남기면 다음과 같습니다.

문제 장면 먼저 떠올릴 기준
가장 가까운 샘플을 고른다 거리(distance)
방향이나 의미가 가장 비슷한 벡터를 찾는다 유사도(similarity), 코사인 유사도
행렬 곱의 한 칸이 왜 그렇게 계산되는지 본다 내적(dot product)
벡터의 세기나 크기를 본다 길이(norm)

왜 코사인 유사도가 따로 필요한가

코사인 유사도(cosine similarity)는 길이보다 방향 유사성을 더 강조하는 비교 기준입니다. 같은 방향을 보더라도 절댓값 크기가 달라질 수 있기 때문에, 어느 쪽을 더 중요하게 볼 것인가가 문제에 따라 달라집니다.

예를 들어:

  • 구매 금액처럼 크기 자체가 중요한 문제는 길이 차이도 의미가 큽니다.
  • 문장 임베딩처럼 쓰임새가 더 중요한 문제는 방향 유사성이 더 중요할 수 있습니다.

그래서 코사인 유사도는 벡터 검색과 임베딩 문맥에서 자주 다시 등장합니다.

예를 들어 [1, 1][10, 10]은 길이는 크게 다르지만 방향은 같습니다. 거리만 보면 멀지만, 코사인 유사도는 두 벡터가 거의 같은 방향이라고 판단합니다. 반대로 [1, 1][1, -1]은 길이는 비슷해도 방향이 매우 다릅니다. 이 차이가 거리방향 유사성을 분리해 읽어야 하는 이유입니다.

아주 짧은 비교 결과만 남기면:

비교 거리 관점 방향 유사성 관점
[1, 1] vs [10, 10] 멀다 매우 비슷하다
[1, 1] vs [1, -1] 길이만 보면 비슷할 수 있음 방향은 크게 다르다

아주 짧은 판단 기준

벡터 비교 문제를 만났을 때는 먼저 다음 세 질문을 던지면 됩니다.

  1. 크기까지 중요한가, 방향만 중요한가?
  2. 가장 가까운 이웃을 찾는가, 가장 비슷한 표현을 찾는가?
  3. 비교 대상 벡터들이 같은 공간과 같은 차원에 놓여 있는가?

이 세 질문이 정리되면 거리, 내적, 코사인 유사도 중 무엇이 먼저 나와야 할지도 훨씬 덜 헷갈립니다.

체크리스트

  • 내적을 같은 위치 값을 곱해 더하는 계산으로 설명할 수 있는가?
  • 길이와 방향이 다른 정보라는 점을 말할 수 있는가?
  • 거리와 유사도의 차이를 한 문장으로 구분할 수 있는가?
  • [1, 1][10, 10]이 왜 거리와 코사인 유사도에서 다르게 읽히는지 설명할 수 있는가?
  • k-NN과 임베딩 검색이 왜 같은 비교 질문이 아닌지 말할 수 있는가?
  • 벡터 비교 문제를 만났을 때 크기까지 중요한가, 방향이 더 중요한가를 먼저 물을 수 있는가?

이 비교 기준이 다시 보이는 장면

뒤에서 다시 만나는 장면 여기서 먼저 남겨 둘 감각
Part 4의 k-NN 가까운 사례를 찾는다는 말은 거리 기준을 정한다는 뜻입니다.
Part 6의 임베딩 의미를 벡터로 놓는다는 말은 벡터 비교 기준이 같이 필요하다는 뜻입니다.
Part 6의 벡터 검색 관련 후보를 먼저 고른다는 말은 유사도 순서를 만든다는 뜻입니다.

따라서 여기서 중요한 것은 벡터를 만든다에서 멈추지 않고, 벡터를 어떻게 비교할 것인가까지 함께 읽는 일입니다.

출처와 참고 자료