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-etcd19530端口用于连接数据库,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 pymilvus3.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}")"如果文章对您有帮助,可以请作者喝杯咖啡吗?"
微信支付
支付宝