Milvus
Milvus
- 고성능, 고 확장성을 가진 벡터 데이터베이스
- Zilliz에서 개발해 Linux 재단 산하 LF AI & Data Foundation에 기증됨
- 오픈 소스 소프트웨어와 클라우드 서비스(Zilliz Cloud) 형태로 제공됨
- Apache2.0 라이선스
배포 모드
Milvus Lite
- Python 라이브러리로
- Jupyter Notebook에서의 빠른 프로토타이핑이나 리소스가 제한된 엣지 디바이스에 적합
Milvus Standalone
- 단일 머신 서버 배포
- 모든 구성 요소가 단일 Docker 이미지로 번들되어 배포가 편리
Milvus Distributed
- 클라우드 네이티브 아키텍처
- K8s 클러스터에 배포 가능
- 핵심 구성 요소에 이중화가 보장됨
고성능
- 여타 벡터 데이터베이스보다 2~5배 더 뛰어난 성능 (VectorDBBench)
- 하드웨어 최적화 : AVX512, SIMD, GPU, NVMe SSD 등 여러 하드웨어 아키텍처와 플랫폼에 맞게 최적화
- 고급 검색 알고리즘 : IVF, HNSW, DiskANN 등 다양한 인덱싱/검색 알고리즘 지원, 최적화
- C++ 기반 검색 엔진 : 언어적으로 고성능, 저수준 최적화, 효율족인 리소스 관리 가능
- 컬럼 지향 : 데이터 엑세스 패턴에서 컬럼 지향 구조의 효율성, 연산의 효율성
Milvus는 처음부터 매우 효율적인 벡터 데이터베이스 시스템으로 설계되었습니다. 대부분의 경우 Milvus는 다른 벡터 데이터베이스보다 2~5배 더 뛰어난 성능을 발휘합니다(VectorDBBench 결과 참조). 이러한 높은 성능은 몇 가지 주요 설계 결정의 결과입니다:
하드웨어 인식 최적화: 다양한 하드웨어 환경에서 Milvus를 사용할 수 있도록 AVX512, SIMD, GPU, NVMe SSD를 비롯한 여러 하드웨어 아키텍처와 플랫폼에 맞게 성능을 최적화했습니다.
고급 검색 알고리즘: Milvus는 IVF, HNSW, DiskANN 등 다양한 인메모리 및 온디스크 인덱싱/검색 알고리즘을 지원하며, 모두 심층적으로 최적화되어 있습니다. Milvus는 FAISS 및 HNSWLib와 같은 널리 사용되는 구현에 비해 30%~70% 더 나은 성능을 제공합니다.
C++로 구현된 검색 엔진: 벡터 데이터베이스 성능의 80% 이상은 검색 엔진에 의해 결정됩니다. Milvus는 이 중요한 구성 요소에 C++를 사용하는데, 그 이유는 이 언어의 고성능, 저수준 최적화, 효율적인 리소스 관리 때문입니다. 가장 중요한 점은 Milvus가 어셈블리 수준의 벡터화부터 멀티스레드 병렬화 및 스케줄링에 이르기까지 수많은 하드웨어 인식 코드 최적화 기능을 통합하여 하드웨어 기능을 최대한 활용한다는 점입니다.
컬럼 지향: Milvus는 컬럼 지향 벡터 데이터베이스 시스템입니다. 주요 장점은 데이터 액세스 패턴에서 비롯됩니다. 쿼리를 수행할 때 열 지향 데이터베이스는 전체 행이 아닌 쿼리와 관련된 특정 필드만 읽으므로 액세스하는 데이터의 양이 크게 줄어듭니다. 또한 열 기반 데이터에 대한 연산을 쉽게 벡터화할 수 있으므로 전체 열에 한 번에 연산을 적용할 수 있어 성능이 더욱 향상됩니다.
지원하는 검색 유형
종류 | 설명 |
---|---|
ANN 검색 | 쿼리 벡터와 가장 가까운 상위 K 벡터를 찾음 |
필터링 검색 | 지정된 필터 조건에 따라 ANN 검색 수행 |
범위 검색 | 쿼리 벡터에서 지정된 반경 내의 벡터 찾음 |
하이브리드 검색 | 여러 벡터 필드를 기반으로 ANN 검색 수행 |
전체 텍스트 검색 | BM25에 기반한 전체 텍스트 검색 수행 |
순위 재조정(리랭킹) | 추가 기준이나 보조 알고리즘으로 사용 검색 결과 순서를 재조정해 초기 ANN 검색 결과를 개선(의도에 맞게) |
가져오기 | 기본 키로 데이터 검색 |
쿼리 | 특정 표현식을 사용해 데이터 검색 |
지원하는 데이터 유형
데이터 유형 | 특징 |
---|---|
Int, Float, Bool, String | 일반적인 숫자, 문자열, 불리언 값 (메타데이터, 필터링 조건으로 사용) |
스파스 벡터 | 대부분 값이 0인 희소 벡터 메모리 절약 가능, 희소 벡터 전용 거리 메트릭 지원 |
바이너리 벡터 | 0과 1로 구성된 이진 벡터 해밍 거리·자카드 거리 같은 바이너리 메트릭 지원 |
JSON | JSON 형식의 복잡한 계층 데이터 다양한 구조적 쿼리 가능 |
배열 | 배열 형태 데이터 다차원 값 표현 가능 |
거리 메트릭 | 각 벡터 유형에 맞는 거리 계산 방식 (예: L2, Cosine, Hamming, Jaccard 등) 지원 |
AI 통합
-
임베딩 모델 통합 : Python용 SDK(Pymilvus)를 사용하면 여러 임베딩 모델과 바로 연동할 수 있어, 개발자가 따로 준비할 필요 없이 쉽게 벡터화 가능.
-
리랭크 모델 통합 : Milvus가 처음 돌린 검색 결과는 “대략적으로” 좋은 순서임. 이를 더 정교하게 의도에 맞게 순서를 매기는 리랭커(re-ranker) 모델을 Milvus 에서 통합하여 제공함.
-
LangChain 등 AI 도구 연동 : LangChain 등 AI 도구와의 연동성 제공
Comments