> ## Documentation Index
> Fetch the complete documentation index at: https://docs.baeum.ai.kr/llms.txt
> Use this file to discover all available pages before exploring further.

# Milvus

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

## 어디에 쓰이나요?

* **대규모 RAG**: 수백만\~수십억 건의 문서를 대상으로 유사도 검색
* **시맨틱 검색**: 텍스트, 이미지, 오디오 등 다양한 데이터의 벡터 검색
* **추천 시스템**: 사용자 행동 벡터 기반 실시간 추천
* **멀티모달 검색**: 이미지로 유사 이미지 검색, 텍스트로 이미지 검색

Qdrant와 비교하면 **대규모 분산 환경**에 강점이 있습니다. 소규모 프로젝트는 Qdrant, 대규모 프로덕션 환경은 Milvus가 적합합니다.

## Docker Compose

Milvus Standalone 모드로 설치합니다.

```yaml docker-compose.yml theme={null}
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:
```

<Note>
  Milvus Standalone은 etcd(메타데이터 저장)와 MinIO(오브젝트 스토리지)를 함께 사용합니다. Attu는 Milvus 관리용 웹 UI입니다.
</Note>

## 실행

```bash theme={null}
docker compose up -d
```

## 접속 확인

```bash theme={null}
# API 헬스 체크
curl http://localhost:9091/healthz

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

## 기본 정보

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

## 라이선스

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

## 참고

* [Milvus Docker 설치 가이드](https://milvus.io/docs/install_standalone-docker-compose.md)
* [Milvus 공식 문서](https://milvus.io/docs)

## 설치 점검 목록

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

## 문제 해결 가이드

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

## 관련 문서

<CardGroup cols={2}>
  <Card title="Setup 홈" icon="house" href="/setup/index">
    운영체제별 설치 흐름을 다시 확인합니다.
  </Card>

  <Card title="다음: Weaviate" icon="arrow-right" href="/stacks/weaviate">
    다음 설치 단계를 이어서 진행합니다.
  </Card>
</CardGroup>
