min_chan님의 블로그

[LLM] - 벡터 유사도(Vector Similarity) 본문

LLM

[LLM] - 벡터 유사도(Vector Similarity)

min_chan 2026. 3. 23. 14:33


벡터 유사도 (Vector Similarity)

  • 인공지능과 머신러닝에서 텍스트, 이미지 등 비정형 데이터를 고차원 숫자 배열(벡터)로 변환한 후, 이들 사이의 거리를 계산하여 얼마나 유사한지를 찾는 기술이다.
  • 대표적으로 사용하는 3가지 방법은 코사인 유사도(Cosine Similarity), 유클리드 거리(Euclidean Distance), 내적(Dot Product)이 있다.

https://projector.tensorflow.org/

 

Embedding projector - visualization of high-dimensional data

Visualize high dimensional data.

projector.tensorflow.org


코사인 유사도(Cosine Similarity)

  • 두 벡터 사이의 각도를 기준으로 유사도를 측정하는 방법으로, 벡터의 크기와 관계없이 방향이 얼마나 비슷한지를 판단합니다.
  • 두 벡터의 내적을 각 벡터의 길이로 나누어 계산하며, 값은 -1부터 1 사이로 1에 가까울수록 유사도가 높고, 0은 무관, -1은 반대 방향을 의미합니다.
  • 특히 텍스트 임베딩이나 LLM 기반 검색처럼 “의미”가 중요한 경우에 효과적이며, 벡터를 정규화하면 내적(Dot product)와 동일하게 사용할 수 있습니다. 다만 벡터의 크기 자체가 중요한 데이터(예: 이미지 픽셀 강도)에는 적합하지 않습니다.


유클리드 거리(Euclidean Distance)

  • 다차원 공간에서 두 벡터 사이의 “직선 거리”를 의미하며, 각 좌표 값의 차이를 제곱해 모두 더한 뒤 제곱근을 취해 계산합니다.
  • 벡터의 방향뿐 아니라 값의 크기(스케일) 까지 함께 반영하기 때문에, 값이 클수록 거리도 크게 계산되는 특징이 있습니다. 즉, 두 벡터의 각 요소 값이 실제로 얼마나 가까운지를 그대로 반영하는 매우 직관적인 지표이며, 값이 작을수록 서로 유사하다고 판단합니다. 이러한 특성 때문에 딥러닝 임베딩보다는 LSH 같은 기본적인 벡터 인코딩이나, 구매 횟수처럼 수량·강도·빈도와 같은 크기 정보가 중요한 데이터에서 더 적합하게 사용됩니다.


내적(Dot Product)

  • 두 벡터의 각 요소를 곱한 뒤 모두 더해 하나의 값으로 만드는 유사도 계산 방식으로, 벡터의 방향뿐 아니라 크기까지 함께 반영한다는 특징이 있습니다.
  • 두 벡터 길이의 곱에 각도에 대한 cosine 값을 곱한 형태로도 표현되며, 같은 방향일수록 값이 커지고, 반대 방향이면 작아지거나 음수가 되며, 서로 직각이면 0이 됩니다.
  • 단순히 방향만 보는 코사인 유사도(Cosine Similarity)와 달리 값의 크기(중요도, 인기, 빈도 등) 까지 고려할 수 있어, 추천 시스템이나 협업 필터링, 그리고 일부 LLM 임베딩 모델에서 많이 사용됩니다.
  • 특히 사용자와 아이템 간의 유사도를 계산할 때, 방향은 주제의 유사성을, 크기는 인기나 중요도를 반영하는 지표로 활용될 수 있습니다.

 

https://www.pinecone.io/learn/vector-similarity/

 

Vector Similarity Explained | Pinecone

Vector embeddings have proven to be an effective tool in a variety of fields, including natural language processing and computer vision. Comparing vector embeddings and determining their similarity is an essential part of semantic search, recommendation sy

www.pinecone.io