Milvus向量数据库部署

一、什么是Milvus

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

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

二、Milvus安装

官方下载文档

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

官方为我们提供很多中安装方式,这里我选择Docker Compose。下载的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
    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官方

复制代码
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中创建一个数据库来用于测试。

复制代码
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()}")

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

相关推荐
hongjianMa8 分钟前
ModuleNotFoundError No module named ‘torch_geometric‘未找到
python
火兮明兮20 分钟前
Python训练第四十五天
开发语言·python
趁你还年轻_23 分钟前
Redis大量key集中过期怎么办
数据库·redis·缓存
zdy126357468825 分钟前
python43天
python·深度学习·机器学习
GUIQU.37 分钟前
【Oracle】视图
数据库·oracle
南棱笑笑生38 分钟前
20250605在微星X99主板中配置WIN10和ubuntu22.04.6双系统启动的引导设置
数据库
Leo.yuan1 小时前
实时数据仓库是什么?数据仓库设计怎么做?
大数据·数据库·数据仓库·数据分析·spark
艾露z1 小时前
深度解析Mysql中MVCC的工作机制
java·数据库·后端·mysql
搏博1 小时前
将图形可视化工具的 Python 脚本打包为 Windows 应用程序
开发语言·windows·python·matplotlib·数据可视化