벡터란 무엇인가

벡터란 무엇인가 (Understanding Vectors)

벡터는 차원(dimensionality)과 방향(direction)을 가져요. 벡터 스토어를 이해하려면 먼저 벡터의 기본 개념과 두 벡터가 얼마나 비슷한지 판단하는 방법을 알아야 해요. 이 글에서는 차원, 크기, 내적(dot product) 그리고 코사인 유사도까지 차근차근 설명해 드릴게요.

출처: 문서

본문

벡터 이해하기 (Understanding Vectors)

벡터는 차원과 방향을 가져요. 예를 들어 아래 이미지는 직교 좌표계에서 화살표로 그려진 2차원 벡터를 보여 줘요. 벡터의 머리는 특정 지점에 있고, x 좌표 값과 y 좌표 값으로 표현돼요. 이 좌표는 벡터의 성분(components)이라고도 불러요.

유사도 (Similarity)

두 벡터가 비슷한지 판단하는 데는 여러 수학 공식을 쓸 수 있어요. 그중에서도 가장 직관적으로 시각화하고 이해하기 쉬운 것이 코사인 유사도(cosine similarity)예요.

세 가지 그래프를 보여 주는 이미지를 생각해 볼게요. 첫 번째 다이어그램처럼 두 벡터가 서로 가까이 향하고 있으면 **유사(similar)**하다고 봐요. 두 벡터가 서로 수직으로 향하면 무관(unrelated), 서로 반대 방향으로 향하면 **반대(opposite)**로 판단해요. 두 벡터 사이의 각도는 그 유사도를 측정하는 좋은 척도예요.

그러면 그 각도는 어떻게 계산할까요?

우리는 모두 피타고라스 정리 (Pythagorean Theorem)에 익숙해요. 그런데 a와 b 사이의 각도가 90도가 아니라면 어떨까요? 바로 코사인 법칙 (Law of cosines)이 등장해요.

다음 이미지는 이 접근 방식을 벡터 다이어그램으로 보여 줘요. 이 벡터의 크기(magnitude)는 성분들의 관점에서 정의돼요. 두 벡터 a와 b 사이의 내적(dot product)도 성분들의 관점에서 정의되죠.

코사인 법칙을 벡터 크기와 내적으로 다시 쓰고, 벡터 b를 적절한 벡터로 치환하면 아래의 식이 나와요. 이걸 전개하면 코사인 유사도 (Cosine Similarity) 공식을 얻게 돼요.

이 공식은 2차원이나 3차원보다 높은 차원에서도 동작해요. 다만 시각화하기는 어렵지만요. 그래도 어느 정도는 시각화할 수 있어요. AI/ML 애플리케이션의 벡터는 수백 개에서 수천 개의 차원을 갖는 경우가 흔해요.

벡터의 성분을 사용한 고차원에서의 유사도 함수는 아래와 같아요. 앞서 정의한 2차원 크기(Magnitude)와 내적(Dot Product) 정의를 합계(summation) 수학 표기법을 이용해 N 차원으로 확장한 것이죠.

이것이 벡터 스토어의 단순 구현에서 사용되는 핵심 공식이에요. 테스트와 데모 목적으로만 사용되는 SimpleVectorStore 구현에서 찾을 수 있어요.

더 알아보기 (Learn more)