Milvus
대규모 벡터 검색 엔진입니다. 수십억 건의 벡터 데이터에서도 밀리초 단위의 검색이 가능하며, 분산 처리를 지원합니다.
어디에 쓰이나요?
- 대규모 RAG: 수백만~수십억 건의 문서를 대상으로 유사도 검색
- 시맨틱 검색: 텍스트, 이미지, 오디오 등 다양한 데이터의 벡터 검색
- 추천 시스템: 사용자 행동 벡터 기반 실시간 추천
- 멀티모달 검색: 이미지로 유사 이미지 검색, 텍스트로 이미지 검색
Qdrant와 비교하면 대규모 분산 환경에 강점이 있습니다. 소규모 프로젝트는 Qdrant, 대규모 프로덕션 환경은 Milvus가 적합합니다.
Docker Compose
Milvus Standalone 모드로 설치합니다.
services:
etcd:
image: quay.io/coreos/etcd:v3.5.18
container_name: milvus-etcd
restart: unless-stopped
environment:
- ETCD_AUTO_COMPACTION_MODE=revision
- ETCD_AUTO_COMPACTION_RETENTION=1000
- ETCD_QUOTA_BACKEND_BYTES=4294967296
- ETCD_SNAPSHOT_COUNT=50000
volumes:
- etcd_data:/etcd
command: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd
minio:
image: minio/minio:latest
container_name: milvus-minio
restart: unless-stopped
environment:
MINIO_ACCESS_KEY: minioadmin
MINIO_SECRET_KEY: minioadmin
volumes:
- minio_data:/minio_data
command: minio server /minio_data
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 30s
timeout: 20s
retries: 3
milvus:
image: milvusdb/milvus:latest
container_name: milvus
restart: unless-stopped
ports:
- "19530:19530"
- "9091:9091"
environment:
ETCD_ENDPOINTS: etcd:2379
MINIO_ADDRESS: minio:9000
volumes:
- milvus_data:/var/lib/milvus
depends_on:
- etcd
- minio
attu:
image: zilliz/attu:latest
container_name: milvus-attu
restart: unless-stopped
ports:
- "8000:3000"
environment:
- MILVUS_URL=http://milvus:19530
volumes:
etcd_data:
minio_data:
milvus_data:
Milvus Standalone은 etcd(메타데이터 저장)와 MinIO(오브젝트 스토리지)를 함께 사용합니다. Attu는 Milvus 관리용 웹 UI입니다.
접속 확인
# API 헬스 체크
curl http://localhost:9091/healthz
# Attu 웹 UI: http://localhost:8000
기본 정보
| 항목 | 값 |
|---|
| gRPC 포트 | 19530 |
| 헬스 체크 포트 | 9091 |
| Attu UI 포트 | 8000 |
라이선스
| 구분 | 내용 |
|---|
| 라이선스 | Apache License 2.0 |
| 개인 사용 | 자유롭게 사용 가능 |
| 상업적 사용 | 자유롭게 사용 가능, 수정/재배포 제한 없음 |