TipMilvus 是一款云原生的向量数据库,专为万亿级向量检索设计,支持分布式部署和 GPU 加速。
Milvus 简介
Milvus 是 Zilliz 开源的向量数据库,专注于大规模向量相似度检索,广泛应用于推荐系统、图像搜索、RAG 等场景。
版本选择
| 版本 | 适用场景 | 特点 |
|---|---|---|
| Milvus Lite | 开发测试 | 嵌入式,无需独立服务 |
| Milvus Standalone | 小规模生产 | Docker 单机部署 |
| Milvus Distributed | 大规模生产 | K8s 集群,水平扩展 |
Windows 安装
方式一:Milvus Lite(Python)
# 安装 Milvus Litepip install milvus
# 验证安装python -c "from milvus import default_server; print('Milvus Lite installed')"方式二:Docker Desktop 部署
# 1. 下载安装脚本Invoke-WebRequest -Uri "https://github.com/milvus-io/milvus/releases/download/v2.4.1/milvus-standalone-docker-compose.yml" -OutFile "docker-compose.yml"
# 2. 启动 Milvusdocker-compose up -d
# 3. 检查状态docker-compose ps方式三:使用 milvusctl(推荐)
# 安装 milvusctlpip install milvusctl
# 启动 Milvusmilvusctl start
# 查看状态milvusctl status
# 停止服务milvusctl stopLinux 安装
Docker Compose 部署(Standalone)
# 1. 创建工作目录mkdir -p ~/milvus && cd ~/milvus
# 2. 下载配置文件wget https://github.com/milvus-io/milvus/releases/download/v2.4.1/milvus-standalone-docker-compose.yml -O docker-compose.yml
# 3. 创建数据目录mkdir -p volumes/etcd volumes/minio volumes/milvus
# 4. 启动服务docker-compose up -d
# 5. 查看日志docker-compose logs -f milvus-standalone裸机安装
# Ubuntu 20.04/22.04# 1. 安装依赖sudo apt-get updatesudo apt-get install -y wget apt-transport-https software-properties-common
# 2. 下载并安装wget https://github.com/milvus-io/milvus/releases/download/v2.4.1/milvus_2.4.1-1_amd64.debsudo dpkg -i milvus_2.4.1-1_amd64.deb
# 3. 启动服务sudo systemctl start milvussudo systemctl enable milvusKubernetes 部署(分布式)
# 1. 安装 Helmcurl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
# 2. 添加 Milvus Helm 仓库helm repo add milvus https://zilliztech.github.io/milvus-helm/helm repo update
# 3. 安装 Milvus(默认单机版)helm install my-milvus milvus/milvus
# 4. 查看 Pod 状态kubectl get pods验证安装
使用 Attu 图形界面
# Docker 启动 Attu(Milvus GUI)docker run -p 8000:3000 -e MILVUS_URL={milvus server IP}:19530 zilliz/attu:latest访问 http://localhost:8000 连接 Milvus。
Python SDK 验证
from pymilvus import connections, FieldSchema, CollectionSchema, DataType, Collection
# 连接 Milvusconnections.connect(alias="default", host="localhost", port="19530")
# 定义字段fields = [ FieldSchema(name="id", dtype=DataType.INT64, is_primary=True, auto_id=True), FieldSchema(name="embedding", dtype=DataType.FLOAT_VECTOR, dim=128), FieldSchema(name="text", dtype=DataType.VARCHAR, max_length=512)]
# 创建集合schema = CollectionSchema(fields, "Demo collection")collection = Collection("demo_collection", schema)
# 创建索引index_params = { "metric_type": "L2", "index_type": "IVF_FLAT", "params": {"nlist": 128}}collection.create_index(field_name="embedding", index_params=index_params)
print("Milvus 连接成功!")配置优化
单机版资源配置
# docker-compose.yml 修改资源限制services: milvus-standalone: deploy: resources: limits: cpus: '4' memory: 8G reservations: cpus: '2' memory: 4G启用 GPU 支持
# 使用 GPU 版本的 Milvusservices: milvus-standalone: image: milvusdb/milvus:v2.4.1-gpu runtime: nvidia environment: - NVIDIA_VISIBLE_DEVICES=all常用操作
Docker 管理
# 查看 Milvus 容器docker ps | grep milvus
# 停止服务docker-compose down
# 完全清理数据(谨慎操作)docker-compose down -vrm -rf volumes/
# 查看日志docker-compose logs milvus-standalone备份与恢复
# 使用 milvus-backup 工具docker run -v ~/milvus-backup:/backup zilliz/milvus-backup create
# 恢复docker run -v ~/milvus-backup:/backup zilliz/milvus-backup restore常见问题
端口冲突
# 修改 docker-compose.yml 端口映射ports: - "19531:19530" # 改为 19531 - "9092:9091"内存不足
# 调整 Milvus 配置# milvus.yamlqueryCoord: autoHandoff: true autoBalance: truedataCoord: segment: maxSize: 512 # 减小 segment 大小连接被拒绝
# 检查防火墙sudo ufw allow 19530/tcpsudo ufw allow 9091/tcp
# 检查服务状态docker-compose psdocker-compose logs milvus-standalone | tail -50与 Spring AI 集成
Maven 依赖
<dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-milvus-store-spring-boot-starter</artifactId></dependency>配置
spring: ai: vectorstore: milvus: client: host: localhost port: 19530 database-name: default collection-name: spring_ai_document embedding-dimension: 1536 index-type: IVF_FLAT metric-type: COSINE性能对比
| 数据库 | 十亿级向量 | 延迟 | 适用场景 |
|---|---|---|---|
| ChromaDB | 不支持 | 低 | 中小规模,快速原型 |
| Milvus | 支持 | 中 | 大规模生产环境 |
| Pinecone | 支持 | 低 | 托管服务,预算充足 |
| Qdrant | 支持 | 低 | 混合搜索,Rust 生态 |
总结
Milvus 适合需要处理大规模向量数据的场景,建议:
- 开发测试:Milvus Lite
- 小规模生产:Docker Standalone
- 大规模生产:Kubernetes 分布式
Warning生产环境部署建议配置监控(Prometheus + Grafana)和定期备份。
参考链接: