Milvus (벡터 DB)

Milvus (벡터 DB)

RAG에서 답의 질을 좌우하는 건 결국 "저장된 문서 벡터를 얼마나 빠르고 정확하게 찾느냐"예요. Milvus는 이 벡터 저장·검색을 전담하는 오픈소스 벡터 데이터베이스로, 노트북의 Milvus Lite부터 수십억 벡터를 다루는 쿠버네티스 클러스터까지 폭넓은 환경에서 동작하도록 설계됐어요.

Milvus는 Zilliz가 만들고 LF AI & Data 재단에 기증된 대표 오픈소스 벡터 DB로, 검색 엔진을 C++로 작성하고 IVF·HNSW·DiskANN 같은 다양한 인덱스 알고리즘을 지원해 벡터 검색 성능에 강점을 가져요.


상황부터 — 비정형 데이터를 어떻게 검색할까

텍스트·이미지·오디오 같은 비정형 데이터는 형식이 제각각이라 구조적 질의에만 의존할 수 없어요. 그래서 **임베딩(Embedding)**으로 이들을 수치 벡터로 바꾼 뒤, 벡터 DB에 저장하고 유사도 기반으로 빠르게 검색합니다. Milvus는 이 과정 전체, 즉 벡터 저장·인덱싱·검색을 하나의 도구로 처리합니다.

Milvus는 데이터를 **컬렉션(Collection)**이라는 구조화된 단위로 정리하며, 숫자·문자·벡터·배열·집합·JSON까지 다양한 데이터 타입을 지원해 여러 DB를 함께 운영해야 하는 부담을 덜어줘요.


핵심 개념

  • 컬렉션(Collection) — 데이터를 묶는 이차원 테이블. 스키마로 필드와 타입을 정의합니다.
  • 스키마(Schema) — 각 엔티티가 가져야 할 필드·타입·제약을 정의합니다. 컬렉션 만들 때 필수예요.
  • 동적 필드(Dynamic Field) — 스키마에 없는 필드도 $meta(JSON)에 남겨 유연하게 저장합니다.
  • 벡터 필드(Vector Field) — 크기가 고정된 실수 배열(예: 5차원 FLOAT_VECTOR)을 담는 필드로, 인덱스와 거리 척도가 필수입니다.
  • 거리 척도(Metric Type) — 근사 최근접 이웃(ANN) 검색에서 가까움을 재는 기준. COSINE, L2, IP 등을 지원합니다.
  • 인덱스(Index) — 벡터 검색을 빠르게 하기 위한 구조. AUTOINDEX로 데이터 분포에 맞는 최적 설정을 자동 선택할 수 있습니다.
  • 임베딩 + 리랭킹 통합 — PyMilvus가 OpenAI·BGE-M3·SPLADE 등 임베딩 모델과 리랭커를 통합해 원본 텍스트를 바로 검색 가능한 벡터로 바꿔줍니다.

배포 모드

  • Milvus Lite 🟢 — Python 라이브러리형 경량 모드. Jupyter 노트북 프로토타이핑이나 리소스가 제한된 엣지 환경에 적합합니다.
  • Milvus Standalone — 단일 머신 서버 배포. 모든 컴포넌트가 하나의 Docker 이미지에 들어 있어 구성이 쉽습니다.
  • Milvus Distributed — 쿠버네티스 클러스터 배포. 클라우드 네이티브 구조로 수십억~그 이상 규모를 다룹니다.

관리/가이드

이 허브 아래엔 Milvus의 컬렉션 생성, 임베딩, 벡터 검색, 인덱스 가이드를 실용적인 관점에서 정리해요. 각 페이지는 공식 문서를 바탕으로 하되 API 이름과 파라미터·거리 척도를 그대로 보존해 바로 코드로 옮길 수 있게 구성합니다.


더 알아보기