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

어디에 쓰이나요?

  • 대규모 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
개인 사용자유롭게 사용 가능
상업적 사용자유롭게 사용 가능, 수정/재배포 제한 없음

참고

설치 점검 목록

  • docker compose up -ddocker compose ps로 컨테이너 상태를 확인했습니다.
  • 기본 포트/계정/비밀번호를 문서대로 점검했습니다.
  • 운영용으로 사용할 때 기본 비밀번호/시크릿 값을 변경했습니다.
  • 장애 분석을 위해 docker compose logs -f 확인 방법을 숙지했습니다.

문제 해결 가이드

  • 컨테이너가 실행되지 않으면 docker compose logs -f로 오류 원인을 먼저 확인합니다.
  • 포트 충돌이 나면 기존 프로세스를 종료하거나 포트 매핑 값을 변경합니다.
  • 이미지 pull 실패 시 네트워크 연결 및 레지스트리 접근 권한을 확인합니다.
  • 설정 변경 후 문제가 지속되면 docker compose down 후 다시 up -d로 재기동합니다.

관련 문서

Setup 홈

운영체제별 설치 흐름을 다시 확인합니다.

다음: Weaviate

다음 설치 단계를 이어서 진행합니다.