快速本地部署搭建milvus向量数据库

详细步骤搭建

前置准备

安装docker、docker compose,参考:

  • docker安装:https://blog.csdn.net/cl939974883/article/details/124394266
  • docker compose安装:https://blog.csdn.net/cl939974883/article/details/126463806

1)配置docker镜像代理

情况1:如果是docker环境,则配置如下:

vim /etc/docker/daemon.json

{
        "registry-mirrors": [
          "https://docker.1panelproxy.com",
          "https://2a6bf1988cb6428c877f723ec7530dbc.mirror.swr.myhuaweicloud.com",
          "https://docker.m.daocloud.io",
          "https://hub-mirror.c.163.com",
          "https://mirror.baidubce.com",
          "https://your_preferred_mirror",
          "https://dockerhub.icu",
          "https://docker.registry.cyou",
          "https://docker-cf.registry.cyou",
          "https://dockercf.jsdelivr.fyi",
          "https://docker.jsdelivr.fyi",
          "https://dockertest.jsdelivr.fyi",
          "https://mirror.aliyuncs.com",
          "https://dockerproxy.com",
          "https://mirror.baidubce.com",
          "https://docker.m.daocloud.io",
          "https://docker.nju.edu.cn",
          "https://docker.mirrors.sjtug.sjtu.edu.cn",
          "https://docker.mirrors.ustc.edu.cn",
          "https://mirror.iscas.ac.cn",
          "https://docker.rainbond.cc"
        ]
}

# 重启docker
systemctl restart docker

情况2:如果你是mac电脑,用的是orbstack(官网直接下载安装即可)

# 国内使用最先需要更换源,orbstack 的配置文件在
vim ~/.orbstack/config/docker.json 		# 等于是~/.docker/daemon.json 文件

# 修改并保存
{
  "registry-mirrors": [
          "https://docker.1panelproxy.com",
          "https://2a6bf1988cb6428c877f723ec7530dbc.mirror.swr.myhuaweicloud.com",
          "https://docker.m.daocloud.io",
          "https://hub-mirror.c.163.com",
          "https://mirror.baidubce.com",
          "https://your_preferred_mirror",
          "https://dockerhub.icu",
          "https://docker.registry.cyou",
          "https://docker-cf.registry.cyou",
          "https://dockercf.jsdelivr.fyi",
          "https://docker.jsdelivr.fyi",
          "https://dockertest.jsdelivr.fyi",
          "https://mirror.aliyuncs.com",
          "https://dockerproxy.com",
          "https://mirror.baidubce.com",
          "https://docker.m.daocloud.io",
          "https://docker.nju.edu.cn",
          "https://docker.mirrors.sjtug.sjtu.edu.cn",
          "https://docker.mirrors.ustc.edu.cn",
          "https://mirror.iscas.ac.cn",
          "https://docker.rainbond.cc"
  ]
}

# 重启
orb restart docker

2)拉取最新部署minvus的docker-compose.yml

wget https://github.com/milvus-io/milvus/releases/download/v2.5.9/milvus-standalone-docker-compose.yml -O docker-compose.yml

完整配置如下:

version: '3.5'

services:
  etcd:
    container_name: milvus-etcd
    image: quay.io/coreos/etcd:v3.5.18
    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://etcd: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.5.9
    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"

networks:
  default:
    name: milvus

3)修改配置milvus的密码

在standlone.environment下添加 MILVUS_USERNAME和MILVUS_PASSWORD设置密码:

  • 补充两个配置如下:
    • 123
  • 123

image-20250606005612080

MILVUS_USERNAME: root
MILVUS_PASSWORD: 123456

4)docker compose启动milvus服务standalone

启动服务过程

image-20250606005752344

在对应目录下执行docker compose启动服务:

docker compose up -d

image-20250606010106608

启动成功,orbstack也已启动:

image-20250606010131113

访问milvus的web ui

milvus服务启动之后:

  • 一个名为 Milvus 的 docker 容器在19530 端口启动。
  • 嵌入式 etcd 与 Milvus 安装在同一个容器中,服务端口为2379。它的配置文件被映射到当前文件夹中的embedEtcd.yaml。要更改 Milvus 的默认配置,请将您的设置添加到当前文件夹中的user.yaml文件,然后重新启动服务。
  • Milvus 数据卷被映射到当前文件夹中的volumes/milvus。

image-20250606215300062

访问网址:http://127.0.0.1:9091/webui/

image-20250606215320694

5)安装可视化工具Attu

软件形式安装

Attu:https://github.com/zilliztech/attu/releases

我的mac是m3,应该选择arm64.dmg版本的软件。

下载如下: image-20250606010406257

经过测试,可以下载x64的可行,arm64不行。

同时安装之后,会显示:

image-20250606011051892

执行命令即可:

sudo spctl --master-disable

重新打开即可:

image-20250606011123941

我们刚刚一开始配置了用户名、密码,这里就需要填写:

image-20250606011330221

连接成功后效果如下:

image-20250606011358155

image-20250606011406237

创建collection name:

image-20250606013844667

创建成功:

image-20250606013914615

web服务模式访问

docker快速部署

对于Attu还包含有web服务模式,可以通过docker命令来启动服务:

docker run -p 8000:3000 -e MILVUS_URL=localhost:19530 zilliz/attu:latest

启动效果如下:

image-20250606223323488

访问网址:http://localhost:8000/#/connect

image-20250606223353658

# 注意:Attu 默认尝试连接 localhost:19530(Milvus 默认端口),但可能你的 Milvus 运行在不同地址,例如:Docker 环境:可能是 host.docker.internal:19530(Mac/Windows Docker 专用)
host.docker.internal:19530/default

连接成功效果如下:

image-20250606223526771

编写查询表达式

例如查询metadata字段中的指定字段:

metadata['uuid'] == "AoAxYqlE4NkDTD2S"

参考

[1]. Milvus向量数据库 docker安装:https://blog.csdn.net/qq_35378008/article/details/147433448

[2]. Spring AI应用:利用DeepSeek+嵌入模型+Milvus向量数据库实现检索增强生成--RAG应用(一)(超详细):https://blog.csdn.net/wanganui/article/details/145593847

[3]. Spring AI应用:利用DeepSeek+嵌入模型+Milvus向量数据库实现检索增强生成--RAG应用(二)(超详细):https://blog.csdn.net/wanganui/article/details/145919410

评论区请在客户端页面查看