Hướng dẫn triển khai Milvus Vector Database bằng Docker Compose

Giới thiệu về Milvus

Milvus là một cơ sở dữ liệu vector mã nguồn mở, được thiết kế để lưu trữ, tìm kiếm và quản lý dữ liệu vector với hiệu năng cao. Hệ thống này phù hợp cho các ứng dụng yêu cầu xử lý dữ liệu phi cấu trúc quy mô lớn như machine learning, AI và xử lý ngôn ngữ tự nhiên. Bạn có thể tham khảo tài liệu chính thức tại: https://milvus.io/docs/zh

Đặc điểm nổi bật

  • Truy vấn vector hiệu suất cao: Hỗ trợ nhiều thuật toán index như IVF, HNSW, ANNOY để tối ưu tốc độ truy xuất dữ liệu.
  • Mô hình dữ liệu linh hoạt: Cho phép lưu trữ cả dữ liệu có cấu trúc và phi cấu trúc dưới nhiều định dạng khác nhau.
  • Xử lý đồng thời mạnh mẽ: Đáp ứng tốt các truy vấn đồng thời trong thời gian thực.
  • Khả năng mở rộng ngang: Dễ dàng thêm node để xử lý khối lượng dữ liệu và yêu cầu truy vấn lớn hơn.
  • Hỗ trợ đa ngôn ngữ: SDK có sẵn cho Python, Java, Go, C++ giúp tích hợp dễ dàng.
  • Tích hợp framework ML: Hoạt động tốt với TensorFlow, PyTorch và các framework deep learning phổ biến.
  • Đa dạng lưu trữ backend: Hỗ trợ local storage lẫn cloud storage tùy theo nhu cầu.

Ứng dụng thực tế

  • Truy xuất ảnh và video tương tự trong hệ thống thị giác máy tính.
  • Phân tích vector văn bản trong các ứng dụng NLP.
  • Xây dựng hệ thống gợi ý cá nhân hóa dựa trên hành vi người dùng.
  • Phân tích dữ liệu gen và protein trong lĩnh vực sinh tin học.

Triển khai Milvus với Docker Compose

Bước 1: Tạo thư mục dữ liệu

mkdir -p /zpaas/volumes/etcd
mkdir -p /zpaas/volumes/milvus
mkdir -p /zpaas/volumes/minio
chmod 700 /zpaas/volumes/etcd

Bước 2: Cấu hình Docker Compose

Tạo file docker-compose-milvus.yml với nội dung:

version: '3.5'
services:
  etcd:
    container_name: milvus-etcd
    image: hub-nj.iwhalecloud.com/zcm_k8s/etcd:3.5.6-0
    environment:
      - ETCD_AUTO_COMPACTION_MODE=revision
      - ETCD_AUTO_COMPACTION_RETENTION=1000
      - ETCD_QUOTA_BACKEND_BYTES=4294967296
      - ETCD_SNAPSHOT_COUNT=50000
    volumes:
      - /zpaas/volumes/etcd:/etcd
    ports:
      - "3379:3379"
    command: etcd -advertise-client-urls=http://127.0.0.1:3379 -listen-client-urls http://0.0.0.0:3379 --data-dir /etcd
    healthcheck:
      test: ["CMD", "etcdctl", "endpoint", "health"]
      interval: 5s
      timeout: 3s
      retries: 10
 
  minio:
    container_name: milvus-minio
    image: hub-nj.iwhalecloud.com/public/minio:RELEASE.2023-03-20T20-16-18Z
    environment:
      MINIO_ACCESS_KEY: minioadmin
      MINIO_SECRET_KEY: minioadmin
    ports:
      - "9001:9001"
      - "9000:9000"
    volumes:
      - /zpaas/volumes/minio:/minio_data
    command: minio server /minio_data --console-address ":9001"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
      interval: 5s
      timeout: 3s
      retries: 10
 
  standalone:
    container_name: milvus-standalone
    image: hub-nj.iwhalecloud.com/public/milvus:v2.4.5
    command: ["milvus", "run", "standalone"]
    security_opt:
      - seccomp:unconfined
    environment:
      ETCD_ENDPOINTS: etcd:3379
      MINIO_ADDRESS: minio:9000
    volumes:
      - /zpaas/volumes/milvus:/var/lib/milvus
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9091/healthz"]
      interval: 30s
      start_period: 90s
      timeout: 20s
      retries: 3
    ports:
      - "19530:19530"
      - "9091:9091"
    depends_on:
      - "etcd"
      - "minio"
 
networks:
  default:
    name: milvus

Bước 3: Khởi động dịch vụ

docker-compose -f docker-compose-milvus.yml up -d

Bước 4: Kiểm tra trạng thái

root@10.10.194.210[/zpaas/volumes]# docker ps -a  | grep milvus
df9f6e31a2f6   hub-nj.iwhalecloud.com/public/milvus:v2.4.5    "/tini -- milvus run…"   33 minutes ago   Up 33 minutes (healthy)   0.0.0.0:9091->9091/tcp, :::9091->9091/tcp, 0.0.0.0:19530->19530/tcp, :::19530->19530/tcp   milvus-standalone
3e4c32da554c   hub-nj.iwhalecloud.com/public/minio:RELEASE.2023-03-20T20-16-18Z   "/usr/bin/docker-ent…"   33 minutes ago   Up 33 minutes (healthy)   0.0.0.0:9000-9001->9000-9001/tcp, :::9000-9001->9000-9001/tcp   milvus-minio
be224b2f19d7   hub-nj.iwhalecloud.com/zcm_k8s/etcd:3.5.6-0   "etcd -advertise-cli…"   33 minutes ago   Up 33 minutes (unhealthy)   2379-2380/tcp, 4001/tcp, 7001/tcp, 0.0.0.0:3379->3379/tcp, :::3379->3379/tcp   milvus-etcd

root@10.10.194.210[/zpaas/volumes]# docker exec -it milvus-etcd etcdctl --endpoints=http://127.0.0.1:3379 endpoint health
http://127.0.0.1:3379 is healthy: successfully committed proposal: took = 9.597225ms

Cài đặt Attu - GUI Management Tool

Attu là giao diện đồ họa giúp quản lý Milvus dễ dàng hơn. Cài đặt bằng lệnh:

docker run -d \
--name=attu \
-p 8000:3000 \
-e MILVUS_URL=10.10.194.210:19530 \
hub-nj.iwhalecloud.com/public/attu:v2.3.9

Truy cập giao diện Attu tại: http://x.x.x.x:8000

Truy cập Minio Console

Sử dụng thông tin đăng nhập: minioadmin / minioadmin

Giao diện quản lý Minio: http://x.x.x.x:9001

Thẻ: Milvus Vector Database Docker Compose Attu MinIO

Đăng vào ngày 19 tháng 5 lúc 06:56