VectorDB에서 유사도 계산은 쿼리 벡터(Query Vector)와 저장된 벡터(Stored Vector) 간의 거리(distance) 또는 각도(angle)를 측정하는 방식입니다.
대표적으로 Cosine Similarity, Euclidean Distance(L2), Dot Product 세 가지가 많이 쓰입니다.
Cosine Similarity
↑
A / \
/ \
/ \
B → 방향만 비교 (길이 무시)
Euclidean Distance
A ●----------------● B
← 직선 거리 비교 (길이+방향 모두 반영)
Dot Product
A →→→
B →→→ → 방향과 크기 모두 고려 (길이 영향 큼)
| 계산 방식 | 비교 기준 | 값 범위 | 해석 | 장점 | 단점 | 주 사용 분야 |
|---|---|---|---|---|---|---|
| Cosine Similarity | 벡터 각도 | -1 ~ 1 | 1 → 완전히 같은 방향 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 ~ 1
1 → 완전히 같은 방향 (유사도 100%)
0 → 직각 (관련 없음)
-1 → 완전히 반대 방향
(A \cdot B) : 두 벡터의 내적(Dot Product)
(|A|) : 벡터 A의 크기(노름, Norm)
(|B|) : 벡터 B의 크기
크기(scale)에 영향을 받지 않음 → 문서 길이가 달라도 비교 가능.
텍스트 임베딩에서 가장 많이 사용.
문서 검색: "AI 기술"과 "인공지능 기술"은 단어 수가 달라도 방향이 비슷하면 높은 유사도.
챗봇 FAQ 매칭: 질문 길이가 달라도 의미가 비슷하면 높은 점수.
두 벡터 사이의 직선 거리를 측정.
값 범위: 0 ~ ∞
0 → 완전히 동일
값이 클수록 → 서로 다른 벡터
n : 벡터 차원 수
A_i, B_i : 각 차원의 값
벡터의 크기와 방향 모두 고려.
거리 기반이므로 값이 작을수록 유사.
이미지 검색: 색상·패턴 차이를 거리로 계산.
추천 시스템: 상품 속성 벡터 간 거리가 가까운 상품 추천.

n : 벡터 차원 수크기가 큰 벡터일수록 값이 커짐.
크기와 방향 모두 중요할 때 사용.
랭킹 모델: 점수가 높은 순으로 정렬.
추천 알고리즘: 사용자 벡터와 아이템 벡터의 내적 값이 높은 순 추천.
| 방법 | 기준 | 값 범위 | 장점 | 단점 | 주 사용 분야 |
|---|---|---|---|---|---|
| Cosine Similarity | 각도 | -1 ~ 1 | 길이 무시, 의미 비교에 강함 | 크기 정보 손실 | 텍스트 검색, NLP |
| Euclidean Distance | 거리 | 0 ~ ∞ | 직관적, 크기·방향 모두 반영 | 차원↑ → 계산량↑ | 이미지 검색, 추천 |
| Dot Product | 방향+크기 | -∞ ~ ∞ | 빠른 계산, 랭킹에 적합 | 크기 영향 큼 | 추천, 랭킹 모델 |
Tip
VectorDB에서 유사도 계산은 Indexing 알고리즘과 함께 최적화됩니다.
예를 들어, HNSW 인덱스를 쓰면서 Cosine Similarity를 적용하면, 대규모 데이터에서도 빠른 의미 검색이 가능합니다.