Milvus向量数据库部署

一、什么是Milvus

Milvus 是一款开源的向量数据库,旨在帮助开发者轻松管理和检索大规模向量数据。它通过高效的索引技术,支持快速的相似度搜索,使得从海量数据中查找最接近的匹配变得简单而快捷。无论是构建推荐系统、进行图像识别还是分析自然语言,Milvus都能提供强大的支持。

这里我们将在macos环境下基于Docker安装Milvus的单机版本。

二、Milvus安装

官方下载文档

这里我们跳过Docker的安装,直接开始Milvus的安装

官方为我们提供很多中安装方式,这里我选择Docker Compose。下载的docker-compose.yml文件内容为:

yaml 复制代码
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
    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"
    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.5
    command: ["milvus", "run", "standalone"]
    security_opt:
    - seccomp:unconfined
    environment:
      ETCD_ENDPOINTS: etcd:2379
      MINIO_ADDRESS: minio:9000
    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

这里出于演示,我取消了挂载。最终运行

复制代码
docker-compose up -d

运行成功后一共三个容器:milvus-etcd、milvus-minio、milvus-standalone

三、组件分析

1、etcd

etcd 是一个分布式的键值存储系统,主要用于配置共享和服务发现。在 Milvus 环境中,它主要用于存储元数据(如集合信息、索引配置等)。这使得 Milvus 能够有效地管理其内部状态,并支持集群模式下的协调工作。可以简单的理解为是字典的目录,可以可靠的访问机制。

2、minio

MinIO 是一款高性能的分布式对象存储系统,在 Milvus 架构中,MinIO 作为持久化存储层,用于保存原始向量数据、索引文件以及其他需要长期存储的信息。通俗来说就是数据持久化。并且本身就有可视化的管理页面,访问9001端口即可访问,账户密码都是minioadmin。登录后可以查看并管理存储的数据信息。

3、milvus

这就是实际执行向量相似度搜索的核心服务。Milvus 实例集成了所有必要的组件,允许用户在其上构建基于向量的智能应用。通过该实例,你可以进行向量数据插入、查询以及索引创建等多种操作。后面我们会通过python去连接这个向量数据库。

四、可视化

milvus不同于MySQL、Redis等可通过像Navicat等客户端连接进行可视化的操作。这里我们使用Attu对milvus进行可视化管理。具体介绍和安装可以看官网说明。

Attu官方

yaml 复制代码
version: '3.5'

services:
  attu:
    container_name: milvus-attu
    image: zilliz/attu:v2.4
    environment:
      MILVUS_URL: milvus:19530
    ports:
      - "7000:3000"
    depends_on:
      - "milvus"
    networks:
      - default
networks:
  default:
    name: milvus_network

使用Docker Compose运行成功后访问localhost:7000

复制代码
docker-compose up -d

这里没有设置密码,可以直接点击连接进入,实际场景下是需要设置密码的

这样我们就可以可视化的管理我们的向量数据库了。

五、Python操作

首先我们在attu中创建一个数据库来用于测试。

python 复制代码
from pymilvus import MilvusClient

client = MilvusClient(url="http://localhost:19530",
                      db_name="programming")

print(f"角色列表为:{client.list_roles()}")
print(f"用户列表为:{client.list_users()}")
client.create_user(user_name="test", password="123456")
client.create_role(role_name="test_role")
print(f"角色列表为:{client.list_roles()}")
print(f"用户列表为:{client.list_users()}")

可以看到正常连接到了向量数据库并且用户和角色都已经创建成功。

相关推荐
dhxhsgrx14 分钟前
PYTHON训练营DAY25
java·开发语言·python
伊织code2 小时前
PyTorch API 5 - 全分片数据并行、流水线并行、概率分布
pytorch·python·ai·api·-·5
风逸hhh3 小时前
python打卡day25@浙大疏锦行
开发语言·python
魔尔助理顾问4 小时前
Flask如何读取配置信息
python·flask·bootstrap
jc_hook5 小时前
Python 接入DeepSeek
python·大模型·deepseek
chicpopoo5 小时前
Python打卡DAY25
开发语言·python
crazyme_66 小时前
深入掌握 Python 切片操作:解锁数据处理的高效密码
开发语言·python
Code_流苏7 小时前
《Python星球日记》 第69天:生成式模型(GPT 系列)
python·gpt·深度学习·机器学习·自然语言处理·transformer·生成式模型
于壮士hoho7 小时前
Python | Dashboard制作
开发语言·python
掘金-我是哪吒8 小时前
分布式微服务系统架构第131集:fastapi-python
分布式·python·微服务·系统架构·fastapi