Milvus实战入门——部署与基础操作


目录

  1. 环境准备
  2. 快速部署Milvus
  3. Milvus基础操作
  4. 常见问题与优化
  5. 总结与预告

1. 环境准备

硬件与软件需求

项目 推荐配置
CPU 支持 AVX2 指令集(Intel/AMD)
内存 至少 8GB(单机版);生产环境建议 32GB+
存储 至少 50GB 空闲空间(支持 SSD 或 NVMe)
Docker Docker 19.03+ 和 Docker Compose 1.25.1+
网络 可访问公网(用于下载镜像和模型)

生产环境注意事项

  • 高可用性:集群部署需至少 3 节点(Data Node + Query Node + Index Node)。
  • 存储分离:使用 Ceph、MinIO 等对象存储系统解耦计算与存储。
  • 认证与安全:启用 TLS 加密和用户权限管理(authorizationEnabled: true)。

2. 快速部署Milvus

单机版部署

步骤 1:下载 Docker Compose 配置文件
wget https://github.com/milvus-io/milvus/releases/download/v2.5.6/milvus-standalone-docker-compose.yml -O docker-compose.yml
步骤 2:修改配置(可选)
  • 启用认证:在 milvus-standalone 服务中添加 environment 配置:
    environment:
      - MILVUS_LICENSE=your_license_key
      - MILVUS_AUTHORIZATION_ENABLED=true
    
  • 调整存储路径:修改 volumes 映射到本地磁盘(如 /data/milvus)。
步骤 3:启动服务
docker compose up -d
docker compose ps

验证部署:访问 ATTU 可视化工具(http://localhost:8000),连接 localhost:19530

集群版部署(Kubernetes)

使用 Helm Chart
helm repo add milvus https://milvus.io/charts
helm install milvus milvus/milvus --set mode=cluster --set etcd.replicaCount=3

3. Milvus基础操作

1. SDK 安装与连接

pip install pymilvus
from pymilvus import connections
connections.connect(host='localhost', port='19530', user='root', password='Milvus')

2. 集合创建与数据插入

定义字段与集合
from pymilvus import FieldSchema, CollectionSchema, DataType

fields = [
    FieldSchema(name="id", dtype=DataType.INT64, is_primary=True),
    FieldSchema(name="vector", dtype=DataType.FLOAT_VECTOR, dim=768)
]
schema = CollectionSchema(fields, "Example Collection")
collection = Collection("example_collection", schema)
插入数据
import random

docs = [
    "Artificial intelligence was founded as an academic discipline in 1956.",
    "Alan Turing was the first person to conduct substantial research in AI."
]
vectors = [[random.uniform(-1, 1) for _ in range(768)] for _ in docs]

data = [{"id": i, "vector": vectors[i], "text": docs[i]} for i in range(len(vectors))]
res = collection.insert(data)
print(res)

3. 索引构建与搜索

创建索引
index_params = {
    "index_type": "IVF_PQ",
    "params": {"nlist": 100, "m": 16},
    "metric_type": "L2"
}
collection.create_index("vector", index_params)
向量搜索
search_params = {"nprobe": 10}
results = collection.search(
    data=[vectors[0]], 
    anns_field="vector",
    param=search_params,
    limit=2,
    output_fields=["text"]
)
print(results)

4. 常见问题与优化

部署失败排查

  • 日志分析
    docker logs milvus-standalone
    
  • 资源限制
    • 内存不足:增加 --memory 参数(如 --memory=8g)。
    • 端口冲突:检查 docker-compose.yml 中的端口映射(如 19530:19530)。

写入性能优化

  1. 批量插入:使用 insert 批量提交数据(推荐每批 1000~5000 条)。
  2. 分区策略:按时间或类别划分数据(partition_name 参数)。
  3. 索引预构建:在插入数据后立即创建索引,避免查询时延迟。

5. 总结与预告

总结

本次实战涵盖了 Milvus 的部署与基础操作,包括:

  1. 单机版部署:通过 Docker Compose 快速启动。
  2. Python SDK 操作:从集合创建到数据插入与索引构建。
  3. 性能优化技巧:批量插入与分区策略的应用。

预告

在下一次博客中,我们将深入 Milvus 的高级功能与性能调优,包括:

  1. 多索引兼容:HNSW 与 IVF_PQ 的混合使用场景。
  2. 语义搜索:结合 NLP 模型实现文本相似性检索。
  3. 分布式扩展:水平扩展与 GPU 加速实践。

参考资料

  • Milvus 官方文档:https://milvus.io/docs/zh/
  • CSDN 技术社区:https://blog.csdn.net/
  • GitHub 仓库:https://github.com/milvus-io/milvus

版权声明:本文为原创文章,转载请注明出处。

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐