대표 벡터 DB별 저장 방식, 인덱싱 기법, 유사도 함수 비교
벡터 DB를 선택하거나 설계할 때 가장 중요한 요소는 크게 세 가지입니다.
- 저장 방식: 벡터 및 메타데이터를 어떻게 저장하는가?
- 인덱싱 방식: 고차원 벡터를 빠르게 검색하기 위한 알고리즘과 구조
- 유사도 함수 종류: 벡터 간 유사도를 어떻게 계산하는가?
아래에서는 Faiss, Milvus, Qdrant, Weaviate, Pinecone 다섯 가지 대표 벡터 DB를 중심으로 각 항목을 정리했습니다.
1. Faiss
-
저장 방식
- 벡터 데이터는 메모리 혹은 디스크 기반 파일 시스템에 저장
- 자체 데이터베이스 기능은 없고, 벡터 배열(NumPy 배열 등) 형태로 관리
- 영속성 저장은 직접 구현해야 함
-
인덱싱 방식
- IVF (Inverted File Index)
- PQ (Product Quantization)
- HNSW (Hierarchical Navigable Small World Graph)
- Flat (선형 탐색) 등 다양한 인덱스 지원
- GPU 가속 지원
-
유사도 함수 종류
- L2 거리 (Euclidean Distance)
- 내적 (Dot Product)
- 코사인 유사도 (Cosine similarity) — 직접 계산하거나 내적 변형으로 처리 가능
2. Milvus
-
저장 방식
- 벡터 및 메타데이터를 분산 스토리지에 저장
- 자체 관리 스토리지 외에도 MinIO, Amazon S3 등 외부 오브젝트 스토리지와 연동 가능
-
인덱싱 방식
- IVF
- HNSW
- ANNOY
- PQ 등 다중 인덱싱 기법을 상황에 따라 자동 선택 및 적용 가능
- 인덱스는 분산 환경에서 관리됨
-
유사도 함수 종류
- L2 거리
- Inner Product
- 코사인 유사도 (내적 변환 방식으로 지원)
3. Qdrant
-
저장 방식
- 벡터와 메타데이터를 함께 저장하는 구조
- 영속성 보장 위해 자체 스토리지에 저장하며, WAL(Write-Ahead Log) 사용
-
인덱싱 방식
- HNSW 그래프 기반 인덱싱이 기본
- 빠른 탐색과 정확도 사이에 균형 조절 가능
- 일부 클러스터링 기능 포함
-
유사도 함수 종류
- Cosine similarity
- Euclidean distance (L2)
- Dot product
4. Weaviate
-
저장 방식
- 벡터와 스키마 기반 메타데이터를 함께 저장
- 자체 분산 스토리지 사용
- GraphQL API로 스키마 정의 및 데이터 관리
-
인덱싱 방식
- HNSW 인덱스가 기본
- 벡터 및 메타데이터 필터링을 결합한 하이브리드 검색 지원
-
유사도 함수 종류
- Cosine similarity
- Dot product
- Euclidean distance (L2)
5. Pinecone
-
저장 방식
- 완전 관리형 클라우드 서비스
- 백엔드에서 분산 스토리지 및 캐싱 시스템으로 관리
- 사용자는 API를 통해 접근
-
인덱싱 방식
- 내부적으로 여러 인덱스 기법을 조합하여 사용 (상세 비공개)
- Approximate Nearest Neighbor (ANN) 최적화
- 자동 스케일링 및 인덱스 최적화 지원
-
유사도 함수 종류
- Cosine similarity
- Dot product
- Euclidean distance (L2)
요약 비교표
DB 이름 | 저장 방식 | 인덱싱 방식 | 지원 유사도 함수 |
---|
Faiss | 메모리/파일, 배열 형태 관리 | IVF, PQ, HNSW, Flat | L2, Dot Product, Cosine(내적 변형) |
Milvus | 분산 스토리지 + 오브젝트 스토리지 연동 | IVF, HNSW, ANNOY, PQ | L2, Inner Product, Cosine (내적 변환) |
Qdrant | 자체 스토리지, WAL 지원 | HNSW | Cosine, L2, Dot Product |
Weaviate | 자체 분산 스토리지 + 스키마 | HNSW | Cosine, Dot Product, L2 |
Pinecone | 클라우드 관리형 | 비공개, ANN 최적화 | Cosine, Dot Product, L2 |
마무리
각 벡터 DB는 저장 방식과 인덱싱, 유사도 계산 방법에 차이가 있지만,
공통적으로 고차원 벡터를 빠르고 정확하게 탐색하는 데 최적화되어 있다.
프로젝트 규모, 인프라 환경, 성능 요구사항에 맞춰 적합한 벡터 DB를 선택하면 된다.