what-is-milvus
Milvus란 무엇인가 (벡터 DB 소개)
벡터 DB는 임베딩(벡터)을 저장해두고, 질문 벡터와 가장 가까운 벡터를 빠르게 찾아주는 전용 저장소예요. Milvus는 Zilliz가 만들고 Apache 2.0으로 공개한 오픈소스 벡터 DB로, 노트북의 경량 배포부터 수십억 벡터를 다루는 대규모 쿠버네티스 클러스터까지 폭넓은 환경에서 동작하도록 설계됐어요.
이 페이지는 소스 문서 Milvus — What is Milvus 를 바탕으로, Milvus가 왜 빠르고 확장 가능한지 그리고 어떤 검색을 지원하는지를 정리해 드려요.
상황부터 — 비정형 데이터의 벡터화와 검색
텍스트·이미지·오디오 같은 비정형 데이터는 형식이 제각각이고 풍부한 의미를 담고 있어서 기존 DB로는 분석하기 어려워요. 그래서 **임베딩(Embedding)**으로 이들을 수치 벡터로 바꾸고, 그 벡터를 벡터 DB에 저장해 빠르고 확장 가능한 검색과 분석을 수행합니다. Milvus는 이런 비정형·멀티모달 데이터를 **컬렉션(Collection)**이라는 구조화된 형태로 정리할 수 있게 해줘요.
숫자·문자 같은 일반 타입은 물론, 여러 벡터 타입·배열·집합·JSON까지 다양한 데이터 타입을 지원해서 여러 DB 시스템을 유지할 필요를 줄여주는 게 특징이에요.
핵심 개념
- 벡터(Vector) — 비정형 데이터를 임베딩 모델로 변환한 실수 배열. 유사도 검색의 기본 단위입니다.
- 컬렉션(Collection) — 스키마로 구조를 정의한 데이터 저장 단위. 벡터와 스칼라 필드를 함께 담습니다.
- 거리 척도(Metric) — 두 벡터의 가까움을 재는 기준. 사용하는 임베딩에 맞춰 선택해요.
배포 모드
Milvus는 데이터 규모에 따라 세 가지 배포 모드를 제공합니다.
- Milvus Lite — Python 라이브러리형 경량 버전. Jupyter 노트북 프로토타이핑이나 리소스가 제한된 엣지 디바이스에 적합합니다.
- Milvus Standalone — 단일 머신 서버 배포. 모든 컴포넌트가 하나의 Docker 이미지에 담겨 있어 구성이 쉽습니다.
- Milvus Distributed — 쿠버네티스 클러스터용 클라우드 네이티브 아키텍처. 십억 단위 이상의 대규모 시나리오를 위한 것으로, 핵심 컴포넌트에 이중화를 보장합니다.
Milvus는 왜 빠를까
Milvus는 처음부터 고효율 벡터 DB로 설계됐고, 대부분의 상황에서 다른 벡터 DB보다 2~5배 빠른 성능을 내요(VectorDBBench 기준). 그 성능의 근거는 몇 가지 설계 결정에서 나옵니다.
- 하드웨어 인지 최적화 — AVX512, SIMD, GPU, NVMe SSD 등 여러 하드웨어 아키텍처·플랫폼에 맞춰 성능을 최적화했어요.
- 고급 검색 알고리즘 — IVF, HNSW, DiskANN 등 인메모리·온디스크 인덱싱/검색 알고리즘을 폭넓게 지원하며, FAISS·HNSWLib 같은 대중적인 구현 대비 30~70% 더 나은 성능을 보여요.
- C++ 검색 엔진 — 벡터 DB 성능의 80% 이상은 검색 엔진이 결정합니다. Milvus는 고성능·저수준 최적화에 유리한 C++로 이 핵심부를 작성했어요.
- 컬럼 지향(Column-Oriented) — 쿼리 시 관련 필드만 읽어 접근 데이터를 크게 줄이고, 컬럼 단위 연산을 벡터화해 성능을 높입니다.
Milvus는 왜 확장 가능할까
2022년 십억 단위, 2023년엔 수백억 단위 벡터까지 안정적으로 확장하며 Salesforce·PayPal·Shopee·Airbnb·NVIDIA·LINE 등 300개 이상 주요 기업의 대규모 시나리오를 뒷받침했어요.
Milvus는 **완전 무상태(stateless)**라서 쿠버네티스나 퍼블릭 클라우드로 쉽게 확장할 수 있고, 검색·데이터 삽입·인덱싱/컴팩션 같은 핵심 작업을 병렬화하기 쉬운 프로세스로 분리했습니다. 그래서 쿼리 노드(query node)·데이터 노드(data node)·인덱스 노드(index node)가 각각 독립적으로 확장될 수 있어 성능과 비용 효율을 높여요.
Milvus가 지원하는 검색 종류
- ANN 검색 — 질문 벡터와 가장 가까운 top-K 벡터를 찾습니다.
- 필터링 검색 — 지정한 필터 조건 아래에서 ANN 검색을 수행합니다.
- 범위 검색(Range Search) — 질문 벡터에서 지정한 반경 안의 벡터를 찾습니다.
- 하이브리드 검색 — 여러 벡터 필드를 기반으로 ANN 검색을 수행합니다.
- 전문 검색(Full Text Search) — BM25 기반의 텍스트 검색입니다.
- 리랭킹(Reranking) — 추가 기준이나 2차 알고리즘으로 초기 ANN 결과의 순서를 다듬습니다.
- Fetch / Query — 기본 키로 데이터를 가져오거나 특정 표현식으로 데이터를 조회합니다.
실제 적용 (데이터스케쳐스)
- 벡터 저장 + 검색 — RAG 파이프라인의 벡터 저장·유사도 검색을 담당하는 저장소로 활용합니다.
- 컬렉션 기반 구조화 — 스키마로 벡터 필드와 스칼라 필드를 함께 정의해 비정형 문서 데이터를 구조적으로 관리합니다.
- ANN 검색 기본 — 전수 비교 대신 인덱스 기반의 근사 최근접 이웃 검색으로 응답 지연을 낮춥니다.
더 알아보기
- 공식 문서 (1차): Milvus What is Milvus, Create Collection, Embedding Overview
- 밀버스 블로그/한국어 자료 (2차): Zilliz 블로그