Skip to main content

Milvus

대규모 벡터 검색 엔진입니다. 수십억 건의 벡터 데이터에서도 밀리초 단위의 검색이 가능하며, 분산 처리를 지원합니다.

어디에 쓰이나요?

  • 대규모 RAG: 수백만~수십억 건의 문서를 대상으로 유사도 검색
  • 시맨틱 검색: 텍스트, 이미지, 오디오 등 다양한 데이터의 벡터 검색
  • 추천 시스템: 사용자 행동 벡터 기반 실시간 추천
  • 멀티모달 검색: 이미지로 유사 이미지 검색, 텍스트로 이미지 검색
Qdrant와 비교하면 대규모 분산 환경에 강점이 있습니다. 소규모 프로젝트는 Qdrant, 대규모 프로덕션 환경은 Milvus가 적합합니다.

Docker Compose

Milvus Standalone 모드로 설치합니다.
docker-compose.yml
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입니다.

실행

docker compose up -d

접속 확인

# API 헬스 체크
curl http://localhost:9091/healthz

# Attu 웹 UI: http://localhost:8000

기본 정보

항목
gRPC 포트19530
헬스 체크 포트9091
Attu UI 포트8000

라이선스

구분내용
라이선스Apache License 2.0
개인 사용자유롭게 사용 가능
상업적 사용자유롭게 사용 가능, 수정/재배포 제한 없음

참고