Windows 系统下使用 Docker 安装 Milvus 向量数据库

引路者👇:

引言

[一、Docker 简介](#一、Docker 简介)

[Docker 的基本操作](#Docker 的基本操作)

[二、安装 Milvus](#二、安装 Milvus)

安装步骤

[Milvus 架构图](#Milvus 架构图)

[三、使用 Milvus](#三、使用 Milvus)

四、总结


引言

在数据分析和机器学习领域,Milvus 作为一款高性能的向量数据库,正变得越来越受欢迎。它能够高效地处理海量向量数据,支持复杂的相似性搜索,广泛应用于推荐系统、图像识别和自然语言处理等领域。在 Windows 系统上,借助 Docker,我们可以轻松地部署和管理 Milvus,无需担心复杂的依赖问题。本文将详细介绍如何在 Windows 系统上使用 Docker 安装 Milvus 向量数据库,包括 Docker 的基本使用方法和 Milvus 的部署步骤。

一、Docker 简介

Docker 是一个开源的应用容器引擎,它允许开发者将应用及其依赖打包到一个可移植的容器中,然后发布到任何支持 Docker 的平台上。Docker 容器与虚拟机相比,具有启动速度快、资源占用少等优点。

Docker 的基本操作

  1. 安装 Docker Desktop

    • 访问 https://www.docker.com/products/docker-desktop 下载 Docker Desktop。

    • 安装过程中,建议选择使用 WSL 2(Windows Subsystem for Linux 2)作为后端,因为它比 Hyper-V 提供更好的性能和兼容性。

    • 安装完成后,重启计算机以完成安装。

  2. 基本命令

    • 查看 Docker 版本docker --versiondocker-compose --version

    • 查看当前运行的容器docker ps

    • 启动/停止容器docker start <container_id>docker stop <container_id>

    • 删除容器docker rm <container_id>

    • 构建镜像docker build -t <image_name> .

    • 运行容器docker run -d -p <host_port>:<container_port> <image_name>

二、安装 Milvus

Milvus 是一个开源的向量数据库,专为处理海量向量数据而设计。它支持多种数据类型和索引结构,能够高效地进行相似性搜索。

安装步骤

  1. 创建文件夹和配置文件

    • 创建一个名为 milvus 的文件夹,并在其中创建以下文件和文件夹结构:

      python 复制代码
      milvus/
      ├── volumes/
      │   ├── etcd/
      │   ├── minio/
      │   └── milvus/
      └── docker-compose.yml
    • 编辑 docker-compose.yml 文件,内容如下:

python 复制代码
version: '3.5'
services:
  etcd:
    container_name: milvus-etcd
    image: quay.io/coreos/etcd:v3.5.5
    environment:
      - ETCD_AUTO_COMPACTION_MODE=revision
      - ETCD_AUTO_COMPACTION_RETENTION=1000
      - ETCD_QUOTA_BACKEND_BYTES=4294967296
      - ETCD_SNAPSHOT_COUNT=50000
    volumes:
      - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/etcd:/etcd
    command: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd
    healthcheck:
      test: ["CMD", "etcdctl", "endpoint", "health"]
      interval: 30s
      timeout: 20s
      retries: 3

  minio:
    container_name: milvus-minio
    image: minio/minio:RELEASE.2023-03-20T20-16-18Z
    environment:
      MINIO_ACCESS_KEY: minioadmin
      MINIO_SECRET_KEY: minioadmin
    ports:
      - "9001:9001"
      - "9000:9000"
    volumes:
      - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/minio:/minio_data
    command: minio server /minio_data --console-address ":9001"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
      interval: 30s
      timeout: 20s
      retries: 3

  standalone:
    container_name: milvus-standalone
    image: milvusdb/milvus:v2.3.10
    command: ["milvus", "run", "standalone"]
    security_opt:
      - seccomp:unconfined
    environment:
      ETCD_ENDPOINTS: etcd:2379
      MINIO_ADDRESS: minio:9000
    volumes:
      - ${DOCKER_VOLUME_DIRECTORY:-.}/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

  attu:
    container_name: attu
    image: zilliz/attu:v2.3.10
    environment:
      MILVUS_URL: standalone:19530
    ports:
      - "8000:3000"
    depends_on:
      - standalone
  1. 运行 Docker Compose

    • 打开命令提示符,切换到 milvus 文件夹目录。

    • 运行以下命令启动 Milvus 服务

      复制代码
      docker-compose up -d
    • 如果出现端口冲突错误,需要修改 docker-compose.yml 文件中的端口配置,确保端口未被占用。

  2. 验证 Milvus 是否成功启动

    • 打开浏览器,访问 http://127.0.0.1:8000,如果看到 Milvus 的管理界面,说明安装成功。

Milvus 架构图

三、使用 Milvus

Milvus 提供了丰富的 API 和 SDK,支持 Python、Java、Go 等多种编程语言。以下是使用 Python SDK 连接 Milvus 的示例代码:

python 复制代码
from pymilvus import connections, Collection, FieldSchema, CollectionSchema, DataType

# 连接到 Milvus 服务
connections.connect("default", host="127.0.0.1", port="19530")

# 定义集合结构
fields = [
    FieldSchema(name="id", dtype=DataType.INT64, is_primary=True),
    FieldSchema(name="embedding", dtype=DataType.FLOAT_VECTOR, dim=128)
]
schema = CollectionSchema(fields, description="example collection")

# 创建集合
collection_name = "example_collection"
collection = Collection(name=collection_name, schema=schema)

# 插入数据
data = [
    [i for i in range(10)],
    [[float(i) for _ in range(128)] for i in range(10)]
]
collection.insert(data)

# 创建索引
index_params = {
    "metric_type": "L2",
    "index_type": "IVF_FLAT",
    "params": {"nlist": 10}
}
collection.create_index(field_name="embedding", index_params=index_params)

# 进行相似性搜索
search_params = {"metric_type": "L2", "params": {"nprobe": 10}}
result = collection.search(
    data=[[float(i) for i in range(128)]],
    anns_field="embedding",
    param=search_params,
    limit=3,
    expr=None
)
print(result)

四、总结

通过 Docker,我们可以在 Windows 系统上轻松地安装和运行 Milvus 向量数据库。Docker 的容器化技术使得 Milvus 的部署变得简单快捷,同时也方便了后续的维护和升级。Milvus 提供了强大的向量数据处理能力,能够满足各种复杂的应用场景需求。希望本文的介绍能够帮助你快速上手 Milvus,并在实际项目中发挥其强大的功能。

如果实践操作中遇到其他问题,也可以在评论区留言,Fly帮你在线答疑!!!

相关推荐
爱宇阳5 小时前
离线环境下运行 Docker 容器编排指南
docker·容器·eureka
hello kitty w5 小时前
Python学习(11) ----- Python的泛型
windows·python·学习
加号35 小时前
【C#】获取电脑网卡MAC地址
windows·c#
Java陈序员6 小时前
免费开源!一款操作 MySQL 和 MariaDB 的 Web 界面工具!
mysql·docker·php·mariadb
QT 小鲜肉6 小时前
【个人成长笔记】在本地Windows系统中如何正确使用adb pull命令,把Linux系统中的文件或文件夹复制到本地中(亲测有效)
linux·windows·笔记·学习·adb
梁正雄6 小时前
9、dockerfile
docker·dockerfile·dockerfile基础用法
panplan.top6 小时前
Tornado + Motor 微服务架构(Docker + 测试 + Kubernetes)
linux·python·docker·微服务·k8s·tornado
-指短琴长-7 小时前
Docker基础【Ubuntu安装/Windows安装】
windows·ubuntu·docker
Z_Xshan7 小时前
docker 容器web站点 中文文件名访问404问题
linux·开发语言·docker