Ubuntu 22.04下Milvus从安装到运行的全流程图解

云信安装大师
90
AI 质量分
10 5 月, 2025
3 分钟阅读
0 阅读

Ubuntu 22.04下Milvus从安装到运行的全流程图解

引言

Milvus是一款开源的向量数据库,专为AI应用设计,能够高效处理海量向量数据。本文将带你从零开始,在Ubuntu 22.04系统上完成Milvus的安装、配置和基本使用全过程。

准备工作

环境要求

  • Ubuntu 22.04 LTS系统
  • 至少8GB内存(推荐16GB以上)
  • 至少20GB可用磁盘空间
  • Python 3.8或更高版本

前置知识

  • 基本的Linux命令行操作
  • Python基础语法(用于测试)

安装步骤

1. 更新系统包

首先确保你的系统是最新的:

代码片段
sudo apt update && sudo apt upgrade -y

2. 安装Docker(推荐方式)

Milvus官方推荐使用Docker容器运行:

代码片段
# 安装Docker依赖
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common

# 添加Docker官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# 添加Docker仓库
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 安装Docker引擎
sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io

# 验证Docker是否安装成功
sudo docker run hello-world

3. 安装Docker Compose

代码片段
sudo curl -L "https://github.com/docker/compose/releases/download/v2.12.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose

# 验证安装
docker-compose --version

4. 下载Milvus配置文件

代码片段
mkdir milvus && cd milvus
wget https://github.com/milvus-io/milvus/releases/download/v2.2.9/milvus-standalone-docker-compose.yml -O docker-compose.yml

5. 启动Milvus服务

代码片段
sudo docker-compose up -d

等待所有容器启动完成(约1-2分钟),可以使用以下命令检查状态:

代码片段
sudo docker-compose ps

正常情况应该看到类似这样的输出:

代码片段
      Name                     Command                  State                          Ports                    
-------------------------------------------------------------------------------------------------------------
milvus-etcd         etcd -advertise-client-url ...   Up             2379/tcp, 2380/tcp                         
milvus-minio        /usr/bin/docker-entrypoint ...   Up (healthy)   9000/tcp                                   
milvus-standalone   /tini -- milvus run standalone   Up             0.0.0.0:19530->19530/tcp,:::19530->19530/tcp

Python客户端测试

1. 安装Python SDK

代码片段
pip install pymilvus==2.2.9 numpy pandas python-dotenv tqdm 

2. Python示例代码测试

创建一个demo.py文件:

代码片段
from pymilvus import connections, Collection, utility, FieldSchema, CollectionSchema, DataType

# Step1: Connect to Milvus server (默认端口19530)
connections.connect("default", host="localhost", port="19530")

# Step2: Create a collection (相当于数据库表)
fields = [
    FieldSchema(name="id", dtype=DataType.INT64, is_primary=True),
    FieldSchema(name="embedding", dtype=DataType.FLOAT_VECTOR, dim=128)
]
schema = CollectionSchema(fields, "hello_milvus is the simplest demo")
collection = Collection("hello_milvus", schema)

# Step3: Insert vectors (插入数据)
import numpy as np
vectors = np.random.random((1000,128)).tolist() #1000个128维随机向量数据示例 
collection.insert([[i for i in range(1000)], vectors])

# Step4: Create index and load collection (创建索引并加载到内存)
index_params = {
    "index_type": "IVF_FLAT",
    "metric_type": "L2",
    "params": {"nlist":128}
}
collection.create_index("embedding", index_params)
collection.load()

# Step5: Search vectors (向量搜索)
search_vectors = np.random.random((5,128)).tolist() #5个查询向量示例 
results = collection.search(
    search_vectors,
    "embedding",
    {"metric_type": "L2", "params": {"nprobe":10}},
    limit=3,
    output_fields=["id"]
)

for i, result in enumerate(results):
    print(f"Search result for vector {i}:")
    for hit in result:
        print(f"ID: {hit.id}, Distance: {hit.distance}")

# Step6: Clean up (清理测试数据)
utility.drop_collection("hello_milvus")
print("Demo completed successfully!")

运行测试脚本:

代码片段
python demo.py

Milvus管理工具(可选)

Attu可视化界面安装

Attu是Milvus的官方GUI管理工具:

代码片段
docker run -p 8000:3000 -e MILVUS_URL=localhost:19530 zilliz/attu:v2.2.5 

然后在浏览器访问:http://localhost:8000/

Milvus架构解析(简要)

  1. Standalone模式:适合开发和测试的单机部署模式,包含以下组件:

    • etcd:存储元数据信息(集合、索引等)
    • MinIO:对象存储服务,存储实际向量数据文件
    • Milvus主服务:处理查询请求的核心组件
  2. 分布式模式:生产环境推荐部署方式,需要额外配置:

    代码片段
    wget https://github.com/milvus-io/milvus/releases/download/v2.2.x/milvus-cluster-docker-compose.yml 
    

FAQ常见问题解决

  1. 端口冲突问题

    代码片段
    #修改docker-compose.yml中的端口映射后重启服务:
    sudo docker-compose down && sudo docker-compose up -d 
    
  2. 内存不足问题

    代码片段
    #修改etcd的内存限制(在docker-compose.yml中):
      environment:
        ETCD_AUTO_COMPACTION_RETENTION: '1'
        ETCD_QUOTA_BACKEND_BYTES: '4294967296' #4GB限制 
    
  3. 数据持久化问题

    代码片段
    #在docker-compose.yml中添加volumes映射:
      volumes:
        - ./volumes/etcd:/etcd/data 
        - ./volumes/minio:/minio/data  
        - ./volumes/milvus:/var/lib/milvus  
    

Milvus常用命令速查表

Command Description
docker-compose ps Check container status
docker-compose logs [service] View container logs
docker exec -it milvu-standalone bash Enter container shell
sudo docker system prune Clean unused Docker objects

Milvs性能优化建议

  1. 索引选择

    代码片段
    #生产环境推荐IVF_PQ索引(节省内存):
      index_params = {
          "index_type": "IVF_PQ",
          "metric_type": "L2",
          "params": {"nlist":1024,"m":16,"nbits":8}
      }
    
  2. 批量插入:每次插入建议1000~5000条记录一批次

3.查询参数调优:根据数据集大小调整nprobe值(平衡精度和性能)

Milvs集群与监控(进阶)

生产环境建议部署集群版并配置Prometheus监控:

代码片段
version:'3'

services:
 prometheus:
 image:prom/prometheus:v2.x.x  
 volumes:
     ./prometheus.yaml:/etc/prometheus/prometheus.yaml

 grafana:
 image:grafana/grafana:x.x.x  
 ports:
    3000:3000  

Milvs升级指南

升级前务必备份数据!升级步骤:

代码片段
docker-compose down && mv volumes volumes_backup  
wget https://github.com/milvu.../milvu-x.y.z.yml  
docker pull milvu/milu:x.y.z  
docker-compose up-d   

总结

本文详细介绍了在Ubuntu22上部署Milvu的全流程,包括:

✅ Docker环境准备
✅ Milvu Standalone部署
✅ Python客户端测试代码
✅常见问题解决方案

下一步可以探索:

• Milvu集群部署方案
•结合AI框架的实际应用案例(如推荐系统)

希望这篇教程能帮助你快速上手这个强大的向量数据库!

原创 高质量