Vector DB

고차원 벡터를 저장하고 유사도 기반 검색에 특화된 데이터베이스로, AI 임베딩 모델의 출력을 저장·검색하는 데 사용됩니다.

핵심 개념

임베딩 (Embedding)

텍스트, 이미지 등 비정형 데이터를 고차원 숫자 벡터로 변환한 것. 의미적으로 유사한 데이터는 벡터 공간에서 가까이 위치.

"강아지" → [0.12, 0.85, -0.33, 0.61, ...]  (수백~수천 차원)
"개"     → [0.11, 0.83, -0.35, 0.59, ...]  ← 의미 유사 → 벡터도 유사
"자동차" → [-0.72, 0.03, 0.91, -0.44, ...]  ← 의미 다름 → 벡터도 멈

유사도 측정 방법

1. 코사인 유사도 (Cosine Similarity)
   → 벡터 방향의 각도로 측정 (크기 무관)
   → -1 ~ 1, 1에 가까울수록 유사
   → 텍스트 의미 유사도에 가장 많이 사용

2. 유클리드 거리 (L2 Distance)
   → 두 벡터 간 직선 거리
   → 낮을수록 유사

3. 내적 (Dot Product)
   → 크기와 방향 모두 반영
   → 정규화된 벡터에서는 코사인 유사도와 동일

인덱싱 — HNSW

벡터 검색의 핵심 인덱스 구조. 정확한 최근접 이웃 탐색(Exact KNN)은 O(n)이라 수백만 건에서 느림 → HNSW(Hierarchical Navigable Small World) 로 근사 탐색.

[ HNSW 구조 ]

Layer 2 (희소):  1 ─────── 5
Layer 1 (중간):  1 ─ 3 ─ 5 ─ 7
Layer 0 (전체):  1─2─3─4─5─6─7─8─9

탐색: 상위 레이어에서 넓게 진입 → 하위 레이어로 내려가며 정밀화
→ O(log n) 근사 탐색

주요 Vector DB 비교

Chroma DBPineconeWeaviatepgvector
타입오픈소스, 로컬관리형 SaaS오픈소스PostgreSQL 확장
배포온프레미스/클라우드클라우드 전용온프레미스/클라우드PostgreSQL 위
특징가볍고 간단, Python 친화완전 관리형GraphQL 지원RDB와 함께 사용
적합프로토타이핑, 온프레미스빠른 프로덕션멀티모달기존 PG 활용

RDB vs Vector DB

RDBVector DB
검색 방식정확 일치, 범위 검색유사도 기반 근사 검색
데이터 타입정형 데이터고차원 벡터
인덱스B-Tree, HashHNSW, IVF
쿼리 언어SQLAPI (벡터 + 메타데이터 필터)
사용 예사용자 정보, 주문시맨틱 검색, RAG, 추천

활용 패턴 — RAG

[ 문서 임베딩 (오프라인) ]
문서 → 임베딩 모델 → 벡터 → Vector DB 저장

[ 검색 (런타임) ]
질문 → 임베딩 모델 → 쿼리 벡터
                         ↓
              Vector DB 유사도 검색 → Top-K 문서
                         ↓
              LLM에 질문 + 문서 컨텍스트 주입 → 답변

→ RAG

핵심 정리

→ RAG | NoSQL | Elasticsearch

CSLOG에서 보기