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 도구와의 연동성 제공

Reference

https://milvus.io/docs/overview.md

Comments