Milvus

本文最后更新于 2026年8月1日

未完待续

概述

Milvus是一个云原生向量数据库,采用存算分离架构,支持向量相似度与标量过滤的混合查询,能在毫秒级完成十亿级向量检索,并可按需选择强一致或最终一致等多种一致性等级。

从业务角度,milvus的数据模型层级是:Database => Collection => Partition => Entity

  • Database 数据库,隔离不同业务数据
  • Collection 核心的逻辑容器,类似mysql的table
  • Partition 分区,是collection的子集,不是必须创建,而且一个collection至少有默认partition
  • Entity collection中的一条记录,类似MySQL的一行数据

1.部署和配置

milvus部署方式很多,支持大规模部署在k8s,这里为了学习研究采用docker-compose安装Milvus,以2.6.19版本为例,docker-compose文件从官方github下载即可:https://github.com/milvus-io/milvus/

启动前,先修改配置文件启用认证,否则就算重置了密码仍然能免密登录,找到milvus-standalone容器,将common.security.authorizationEnabled: "true"新增进去,这个是2.6.x版本的做法

... ...
standalone:
    container_name: milvus-standalone
    image: milvusdb/milvus:v2.6.19
    command: ["milvus", "run", "standalone"]
    security_opt:
    - seccomp:unconfined
    environment:
      ETCD_ENDPOINTS: etcd:2379
      MINIO_ADDRESS: minio:9000
      MQ_TYPE: woodpecker
      common.security.authorizationEnabled: "true"
... ...

然后docker compose up -d启动即可,启动后,有三个容器,还监听了不止一个端口

[root@rocky102 ~]# docker ps
CONTAINER ID   IMAGE                                      COMMAND                   CREATED          STATUS                    PORTS                                                                                          NAMES
47d071e552f2   milvusdb/milvus:v2.6.19                    "/tini -- milvus run…"   25 minutes ago   Up 25 minutes (healthy)   0.0.0.0:9091->9091/tcp, [::]:9091->9091/tcp, 0.0.0.0:19530->19530/tcp, [::]:19530->19530/tcp   milvus-standalone
a6e864be674d   minio/minio:RELEASE.2024-12-18T13-15-44Z   "/usr/bin/docker-ent…"   25 minutes ago   Up 25 minutes (healthy)   0.0.0.0:9000-9001->9000-9001/tcp, [::]:9000-9001->9000-9001/tcp                                milvus-minio
c4d5ee2d0bf6   quay.io/coreos/etcd:v3.5.25                "etcd -advertise-cli…"   25 minutes ago   Up 25 minutes (healthy)   2379-2380/tcp                                                                                  milvus-etcd

19530端口用于连接数据库,9091端口还运行着webui,9000-9001的minio也在运行,以及etcd的2379,为了安全,建议除了19530端口外,其余端口不要暴露

然后,修改用户名密码,先用默认的用户名root,密码Milvus登录进去,然后马上修改密码,连接milvus可以使用工具Attu:https://github.com/zilliztech/attu/

2.使用Milvus

3.Milvus Python API

pip install pymilvus

3.1 连接

import os

from dotenv import load_dotenv
from pymilvus import connections, utility

load_dotenv(encoding='utf-8')

try:
    connections.connect(host=os.getenv('MILVUS_HOST'),
                        port=os.getenv('MILVUS_PORT'),
                        user="root",
                        password=os.getenv('MILVUS_KEY'))
    print("登录成功")
except Exception as e:
    print(f":{e}")

"如果文章对您有帮助,可以请作者喝杯咖啡吗?"

微信二维码

微信支付

支付宝二维码

支付宝


Milvus
https://blog.liuzijian.com/post/2026/08/01/milvus/
作者
Liu Zijian
发布于
2026年8月1日
更新于
2026年8月1日
许可协议