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()}")

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

相关推荐
gplitems1231 分钟前
Technox – IT Solutions & Services WordPress Theme: A Practical
linux·服务器·数据库
Deamon Tree8 分钟前
后端开发常用Linux命令
linux·运维·python
不剪发的Tony老师31 分钟前
MySQL 9.5创新版发布,有哪些新功能?
数据库·mysql
布朗克1681 小时前
MySQL 及 SQL 注入详细说明
数据库·sql·mysql·1024程序员节
武子康2 小时前
Java-154 深入浅出 MongoDB 用Java访问 MongoDB 数据库 从环境搭建到CRUD完整示例
java·数据库·分布式·sql·mongodb·性能优化·nosql
卡卡恩2 小时前
使用uv创建系统全局python执行环境
python
查士丁尼·绵2 小时前
笔试-座位调整
python
飞翔的佩奇2 小时前
【完整源码+数据集+部署教程】【运动的&足球】足球场地区域图像分割系统源码&数据集全套:改进yolo11-RFAConv
前端·python·yolo·计算机视觉·数据集·yolo11·足球场地区域图像分割系统
Austindatabases2 小时前
DBA 从“修电脑的” 到 上演一套 “数据治理” 大戏 --- 维护DBA生存空间,体现个体价值
数据库·dba
LB21122 小时前
Redis黑马点评 day01
数据库·redis·缓存