VectorDB: 유사도(Similarity) 계산

calico·2025년 9월 25일

Artificial Intelligence

목록 보기
65/167

유사도(Similarity) 계산


  • VectorDB에서 유사도 계산은 쿼리 벡터(Query Vector)저장된 벡터(Stored Vector) 간의 거리(distance) 또는 각도(angle)를 측정하는 방식입니다.

  • 대표적으로 Cosine Similarity, Euclidean Distance(L2), Dot Product 세 가지가 많이 쓰입니다.



VectorDB 유사도 계산 비교표



Cosine Similarity
     ↑
 A  / \
   /   \
  /     \
 B       → 방향만 비교 (길이 무시)
 

Euclidean Distance
A ●----------------● B
   ← 직선 거리 비교 (길이+방향 모두 반영)

Dot Product
A →→→
B →→→   → 방향과 크기 모두 고려 (길이 영향 큼)

계산 방식비교 기준값 범위해석장점단점주 사용 분야
Cosine Similarity벡터 각도-1 ~ 11 → 완전히 같은 방향
0 → 직각
-1 → 반대 방향
길이 무시, 의미 비교에 강함크기 정보 손실텍스트 검색, NLP
Euclidean Distance (L2)벡터 직선 거리0 ~ ∞0 → 동일
값↑ → 더 멀다
직관적, 크기·방향 모두 반영차원↑ → 계산량↑이미지 검색, 추천
Dot Product벡터 방향+크기-∞ ~ ∞양수 → 같은 방향
0 → 직각
음수 → 반대 방향
빠른 계산, 랭킹에 적합크기 영향 큼추천, 랭킹 모델



실무 활용 예시


  • 텍스트 의미 검색 → Cosine Similarity

    • 문서 길이 달라도 의미 비교 가능
  • 이미지/영상 검색 → Euclidean Distance

    • 패턴·색상 차이 반영
  • 추천·랭킹 → Dot Product

    • 점수 계산 및 정렬에 적합

방식쿼리 벡터 vs 저장 벡터결과 값해석
Cosine"AI 기술" vs "인공지능 기술"0.92매우 유사
Euclidean고양이 이미지 vs 개 이미지3.5다소 차이 있음
Dot Product사용자 취향 vs 상품 속성15.2높은 추천 점수



1. Cosine Similarity (코사인 유사도)


  • 두 벡터가 이루는 각도를 기반으로 유사도를 측정.

  • 벡터의 크기(길이)는 무시하고, 방향만 비교.

  • 값 범위: -1 ~ 1

    • 1 → 완전히 같은 방향 (유사도 100%)

    • 0 → 직각 (관련 없음)

    • -1 → 완전히 반대 방향



수식


cosine(A,B)=ABAB\text{cosine}(A,B) = \frac{A \cdot B}{\|A\| \|B\|}

  • (A \cdot B) : 두 벡터의 내적(Dot Product)

  • (|A|) : 벡터 A의 크기(노름, Norm)

  • (|B|) : 벡터 B의 크기



특징


  • 크기(scale)에 영향을 받지 않음 → 문서 길이가 달라도 비교 가능.

  • 텍스트 임베딩에서 가장 많이 사용.



실무 예시


  • 문서 검색: "AI 기술"과 "인공지능 기술"은 단어 수가 달라도 방향이 비슷하면 높은 유사도.

  • 챗봇 FAQ 매칭: 질문 길이가 달라도 의미가 비슷하면 높은 점수.



2. Euclidean Distance (L2 거리)


  • 두 벡터 사이의 직선 거리를 측정.

  • 값 범위: 0 ~

    • 0 → 완전히 동일

    • 값이 클수록 → 서로 다른 벡터



수식


d(A,B)=i=1n(AiBi)2d(A,B) = \sqrt{\sum_{i=1}^{n}(A_i - B_i)^2}

  • n : 벡터 차원 수

  • A_i, B_i : 각 차원의 값



특징


  • 벡터의 크기와 방향 모두 고려.

  • 거리 기반이므로 값이 작을수록 유사.



실무 예시


  • 이미지 검색: 색상·패턴 차이를 거리로 계산.

  • 추천 시스템: 상품 속성 벡터 간 거리가 가까운 상품 추천.



3. Dot Product (내적)


  • 두 벡터의 방향과 크기를 모두 고려한 값.
  • 값 범위: -∞ ~ ∞
    • 양수 → 같은 방향
    • 0 → 직각
    • 음수 → 반대 방향



수식


AB=i=1nAi×BiA \cdot B = \sum_{i=1}^{n} A_i \times B_i

  • n : 벡터 차원 수



특징


  • 크기가 큰 벡터일수록 값이 커짐.

  • 크기와 방향 모두 중요할 때 사용.



실무 예시


  • 랭킹 모델: 점수가 높은 순으로 정렬.

  • 추천 알고리즘: 사용자 벡터와 아이템 벡터의 내적 값이 높은 순 추천.



4. 비교 표


방법기준값 범위장점단점주 사용 분야
Cosine Similarity각도-1 ~ 1길이 무시, 의미 비교에 강함크기 정보 손실텍스트 검색, NLP
Euclidean Distance거리0 ~ ∞직관적, 크기·방향 모두 반영차원↑ → 계산량↑이미지 검색, 추천
Dot Product방향+크기-∞ ~ ∞빠른 계산, 랭킹에 적합크기 영향 큼추천, 랭킹 모델

Tip
VectorDB에서 유사도 계산은 Indexing 알고리즘과 함께 최적화됩니다.
예를 들어, HNSW 인덱스를 쓰면서 Cosine Similarity를 적용하면, 대규모 데이터에서도 빠른 의미 검색이 가능합니다.



profile
개인 블로그

0개의 댓글