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