VectorDB: 유사도(Similarity) 계산

calico·2025년 9월 25일

Artificial Intelligence

목록 보기
65/143

유사도(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
https://velog.io/@corone_hi/posts

0개의 댓글