玩转 Milvus(二):在 Ubuntu 22.04(WSL2)上安装 Milvus

发布于:2025-07-22 ⋅ 阅读:(12) ⋅ 点赞:(0)

玩转 Milvus(二):在 Ubuntu 22.04(WSL2)上安装 Milvus

引言:让 Milvus 在你的笔记本上“起飞”

在《玩转 Milvus(一)》中,我们揭开了向量数据库的神秘面纱,认识了 Milvus 作为 AI 时代的“超级引擎”,如何驱动智能搜索、推荐系统和多模态应用。现在,是时候让 Milvus 在你的电脑上“落地生根”了!本篇博客将带你在 Ubuntu 22.04(WSL2) 环境下安装 Milvus,聚焦两种单机模式:Milvus LiteMilvus Standalone。无论你是初学者想快速上手,还是进阶开发者准备小规模生产,这篇教程都能帮你轻松搞定。

Milvus 支持三种部署模式:Milvus Lite(轻量级 Python 库)、Milvus Standalone(单机部署)和 Milvus Distributed(分布式集群)。考虑到我们专栏的目标(单机环境,2025年7月14日会话)和 Ubuntu 22.04/WSL2 的开发环境,本篇只讲 Milvus LiteMilvus Standalone(通过 Docker 和 Docker Compose 两种方式)。分布式部署后续有机会再探讨。

通过详细步骤、验证案例和常见问题解答,你将学会在几分钟内跑通 Milvus,甚至实现一个简单的语义搜索。准备好你的 Ubuntu 终端,让我们开始这场“安装冒险”!

环境准备:为 Milvus 铺好跑道

在安装 Milvus 之前,需要确保你的 Ubuntu 22.04(WSL2)环境已准备就绪。以下是详细要求和配置步骤。

系统环境

  • 操作系统:Ubuntu 22.04,运行在 WSL2 上(Windows 10/11)。
  • 硬件要求
    • CPU:支持 AVX512 或 SIMD 指令(参考2025年5月6日会话),普通笔记本即可。
    • 内存:建议 8GB+(Milvus Lite)或 16GB+(Standalone)。
    • 磁盘:至少 10GB 可用空间(MinIO 存储向量和元数据)。
  • WSL2 注意事项
    • 确保 WSL2 已正确安装:运行 wsl --version,应显示 WSL 2。
    • 推荐使用 Docker Desktop 与 WSL2 集成,简化 Docker 管理。
    • 在 Windows 的 Docker Desktop 设置中,启用 WSL2 后端(Settings > Resources > WSL Integration),选择 Ubuntu 22.04 分发。

必要软件

  1. Docker(用于 Milvus Standalone):

    • 安装命令:

      sudo apt update
      sudo apt install -y docker.io
      sudo systemctl start docker
      sudo systemctl enable docker
      
    • 验证:docker --version(应显示 Docker 20.x 或更高)。

    • WSL2 特殊配置:确保 Docker Desktop 运行,WSL2 可通过 sudo service docker start 启动 Docker(若未用 Docker Desktop)。

  2. Docker Compose(用于 Standalone 的 Docker Compose 方式):

    • 安装命令:

      sudo apt install -y docker-compose
      
    • 验证:docker-compose --version(应显示 Docker Compose 1.29.x 或更高)。

  3. Python 3.7+(用于 Milvus Lite 和验证):

    • 安装命令:

      sudo apt install -y python3 python3-pip
      
    • 验证:python3 --version(应显示 3.7 或更高)。

为什么选择 WSL2 而非 Docker Desktop 直接安装?

  • WSL2 优势:轻量、灵活,Ubuntu 环境更接近生产服务器,适合开发者调试。Docker Desktop 虽方便,但在 Windows 上直接运行可能遇到权限或网络问题(如 localhost 访问失败)。
  • 注意:本篇使用 WSL2 的 Ubuntu 22.04 运行 Docker,避免 Windows 环境的复杂配置。若你更喜欢 Windows 原生 Docker Desktop,可参考 Milvus 文档

Milvus 安装方式综述:选择你的“起飞方式”

Milvus 提供三种部署模式,适合不同场景:

  • Milvus Lite:像笔记本上的“迷你数据库”,通过 Python 库运行,无需额外服务器,适合快速学习和原型开发。
  • Milvus Standalone:单机“全能选手”,支持中等规模数据,适合开发、测试或小规模生产。
  • Milvus Distributed:分布式“超级舰队”,适合亿级向量和企业级场景。

对于 Milvus Standalone,我们将介绍两种安装方式:

  • Docker(Linux):通过单个容器快速启动,简单直接。
  • Docker Compose(Linux):通过配置文件管理 Milvus 及其依赖(etcd、MinIO),适合自定义配置。

本篇聚焦 Milvus LiteMilvus Standalone(Docker 和 Docker Compose),基于 Ubuntu 22.04(WSL2)。

安装方式对比

特性 Milvus Lite Standalone (Docker) Standalone (Docker Compose)
安装难度 超简单(pip 安装) 简单(脚本启动) 中等(配置 YAML 文件)
资源占用 低(4GB 内存) 中等(8GB+ 内存) 较高(8GB+ 内存)
自定义能力 低(默认配置) 中等(有限调整) 高(支持端口、存储配置)
数据规模 小规模(<1000万向量) 中规模(<1亿向量) 中规模(<1亿向量)

说明

  • Milvus Lite:适合初学者,几分钟跑通,笔记本就能用,完美用于学习或小项目。
  • Standalone Docker:快速部署,适合开发测试,想省心就选它。
  • Standalone Docker Compose:支持灵活配置,适合需要调整端口或存储的生产环境。
    建议:新手从 Milvus Lite 开始,熟悉后尝试 Docker 方式,进阶者用 Docker Compose 定制部署。

安装方式一:Milvus Lite —— 几分钟跑通“迷你数据库”

概述

Milvus Lite 是一个轻量级 Python 库,集成了 Milvus 核心功能,无需部署独立服务器(参考 Milvus Lite 文档)。它像一个“便携式数据库”,直接嵌入 Python 项目,适合初学者和小规模实验。

适用场景

  • 学习 Milvus 的基本操作(如集合创建、向量搜索)。
  • 小规模数据处理(<1000万向量)。
  • 无 Docker 环境的快速原型开发。

安装步骤

  1. 检查 Python 环境

    python3 --version
    

    确保版本为 3.7 或更高。

  2. 安装 Milvus Lite

    pip3 install -U pymilvus
    

    安装最新版 pymilvus(推荐 2.5.8,与 Milvus 2.5.11 兼容)。

  3. 验证安装

    • 启动 Python 解释器,运行:

      from pymilvus import MilvusClient
      client = MilvusClient("./milvus_demo.db")
      print("Milvus Lite connected successfully!")
      
    • 成功后,当前目录生成 milvus_demo.db 文件,表示本地数据库已创建.

  4. 简单语义搜索验证
    为确认 Milvus Lite 可用,试试一个小型语义搜索:

    from pymilvus import MilvusClient, CollectionSchema, FieldSchema, DataType
    client = MilvusClient("./milvus_demo.db")
    # 创建集合
    schema = CollectionSchema(fields=[
        FieldSchema("id", DataType.INT64, is_primary=True, auto_id=True),
        FieldSchema("vector", DataType.FLOAT_VECTOR, dim=4)
    ])
    client.create_collection("test_collection", schema)
    # 插入数据
    vectors = [[0.1, 0.2, 0.3, 0.4], [0.2, 0.3, 0.4, 0.5]]
    client.insert("test_collection", {"vector": vectors})
    # 插入数据
    client.insert("test_collection", [
        {"vector": [0.1, 0.2, 0.3, 0.4]},
    
        {"vector": [0.2, 0.3, 0.4, 0.5]}
    
    ])
    index_params = MilvusClient.prepare_index_params()
    index_params.add_index(
        field_name="vector",
        index_type="IVF_FLAT",
        index_name="ivf_flat_index",
        params={"nlist": 128}
    )
    # 创建索引
    client.create_index(
        collection_name="test_collection",
        index_params=index_params
    )
    # 搜索
    results = client.search("test_collection", data=[[0.1, 0.2, 0.3, 0.4]], limit=1)
    print(f"Top result: ID {results[0][0]['id']}, Distance {results[0][0]['distance']}")
    

    说明:此代码创建 4 维向量集合,插入两条数据,搜索最相似向量。输出示例:Top result: ID 1, Distance 0.0.

优点与局限性

  • 优点:安装简单(一行 pip 命令),资源占用低,适合笔记本(4GB 内存即可)。
  • 局限性:不支持分布式部署,数据规模限于百万级,功能较 Standalone 少。

安装方式二:Milvus Standalone —— Docker(Linux)

概述

Milvus Standalone 通过单个 Docker 容器运行,快速部署单机环境(参考 Standalone Docker 文档)。它像一台“全能服务器”,整合 Milvus 和依赖(etcd、MinIO),适合中等规模数据。

适用场景

  • 快速搭建开发或测试环境。
  • 处理百万级向量(如电商图像搜索)。
  • 对配置要求较低的场景。

安装步骤

  1. 检查 Docker

    docker --version
    sudo service docker start
    

    确保 Docker 运行(WSL2 中需 Docker Desktop 支持)。

  2. 创建工作目录

    mkdir -p /home/milvus
    cd /home/milvus
    
  3. 下载安装脚本

    curl -sfL https://raw.githubusercontent.com/milvus-io/milvus/v2.5.11/scripts/standalone_embed.sh -o standalone_embed.sh
    chmod +x standalone_embed.sh
    
  4. 启动 Milvus

    bash standalone_embed.sh start
    
    • 启动后,milvus-standalone 容器在 19530 端口运行,嵌入 etcd(2379 端口)。
    • 数据存储在 /home/milvus/volumes/milvus,配置文件为 embedEtcd.yaml.
  5. 验证安装

    • 检查容器状态:

      docker ps
      

      应看到 milvus-standalone 运行。

    • 访问 WebUI:打开浏览器,输入 http://127.0.0.1:9091/webui/,检查界面是否加载。

    • 测试 Python 连接:

      pip3 install pymilvus==2.5.8
      
      from pymilvus import connections, utility
      connections.connect(host="localhost", port="19530")
      print(f"Milvus version: {utility.get_server_version()}")
      

      输出示例:Milvus version: v2.5.11.

  6. 停止和删除

    bash standalone_embed.sh stop
    bash standalone_embed.sh delete
    

优点与局限性

  • 优点:部署快速(几分钟),支持数据持久化,适合开发测试。
  • 局限性:配置灵活性有限,不支持分布式扩展。

安装方式三:Milvus Standalone —— Docker Compose(Linux)

概述

Docker Compose 通过配置文件管理 Milvus Standalone 及其依赖(etcd、MinIO),适合需要自定义配置的场景(参考 Docker Compose 文档)。它像一个“可定制的工作站”,提供更高灵活性。

适用场景

  • 稳定的开发或小规模生产环境。
  • 自定义存储路径、端口或日志配置。
  • 处理千万到亿级向量。

安装步骤

  1. 检查 Docker Compose

    docker-compose --version
    
  2. 下载配置文件

    mkdir -p /home/milvus
    cd /home/milvus
    wget https://github.com/milvus-io/milvus/releases/download/v2.5.11/milvus-standalone-docker-compose.yml -O docker-compose.yml
    

    注意:使用 Milvus 2.5.11 的配置文件,避免 2.5.10 的重启问题(参考初稿)。

  3. 启动服务

    docker-compose up -d
    

    输出示例:

    Creating milvus-etcd  ... done
    Creating milvus-minio ... done
    Creating milvus-standalone ... done
    
  4. 验证安装

    • 检查服务状态:

      docker-compose ps
      

      确认 milvus-standalonemilvus-etcdmilvus-minio 均运行。

    • 访问 WebUI:http://127.0.0.1:9091/webui/.

    • 测试 Python 连接(同 Docker 方式):

      from pymilvus import connections, utility
      connections.connect(host="localhost", port="19530")
      print(f"Milvus version: {utility.get_server_version()}")
      
  5. 停止和删除

    docker-compose down
    

优点与局限性

  • 优点:支持自定义配置(如端口、存储路径),适合生产环境,扩展性强。
  • 局限性:配置稍复杂,资源占用高于 Milvus Lite。

常见问题解答

1. Python SDK 连接失败?

  • 原因:Milvus 服务未启动,或 host/port 配置错误。
  • 解决
    • 确认服务状态:docker psdocker-compose ps.
    • 检查端口:默认 localhost:19530.
    • 确保 SDK 版本匹配:Milvus 2.5.11 需 pymilvus==2.5.8(参考 Milvus版本说明)。

2. Docker 容器启动失败?

  • 原因:端口冲突(19530、2379、9091)或磁盘空间不足。
  • 解决
    • 检查端口:sudo netstat -tuln | grep 19530.
    • 释放空间:df -h 确认 /home/milvus 有 10GB+ 空间。
    • 查看日志:docker logs -f milvus-standalone.

3. Milvus Lite 性能瓶颈?

  • 原因:内存不足或向量规模过大(>1000万)。
  • 解决
    • 增加内存:建议 8GB+。
    • 切换 Standalone:支持更大规模数据。
    • 优化索引:使用 IVF_FLAT 替代 HNSW(后续文章详解)。

4. WSL2 与 Docker Desktop 网络问题?

  • 原因:WSL2 网络隔离导致 localhost 不可用。
  • 解决
    • 使用 Docker Desktop 的 WSL2 后端。
    • 替换 localhosthost.docker.internal(Python SDK 中)。

性能优化提示

  • Milvus Lite:适合 <1000万向量,内存 4GB 即可。HNSW 索引速度快但内存占用高,建议小数据集使用。
  • Standalone Docker:支持 <1亿向量,建议 16GB 内存,MinIO 数据存储路径(/home/milvus/volumes)需 SSD。
  • Docker Compose:自定义 docker-compose.yml(如调整 MinIO 端口:9000),优化网络性能。
  • 硬件:确保 CPU 支持 AVX512 或 SIMD,提升搜索效率。
  • WSL2:分配足够资源,避免性能瓶颈。

结语:Milvus 之旅已启动

在 Ubuntu 22.04(WSL2)上成功安装 Milvus!本篇详细介绍了两种单机部署方式:

  • Milvus Lite:像“迷你数据库”,一行命令搞定,适合快速学习。
  • Milvus Standalone
    • Docker:快速启动,适合开发测试。
    • Docker Compose:灵活配置,适合小规模生产。

通过验证代码和 WebUI,可以确认 Milvus 的可用性,甚至跑通了语义搜索。现在,已经为后续实战打下基础!运行上面的语义搜索代码,或在评论区分享你的安装体验!有什么问题?欢迎留言,我们一起解决!


网站公告

今日签到

点亮在社区的每一天
去签到