Milvus 向量数据库手册
Milvus 向量数据库手册
适用版本:服务端 3.0 线
v3.0.5(2026-10-30)、2.6 线v2.6.26(2026-10-26)仍在维护;官方 Quickstart 采用 PyMilvus3.0.2+ Milvus Lite3.2.2(SDK / Lite / 服务端为不同版本线,核实于 2026-11) 许可与形态:Apache 2.0(自托管)/Zilliz Cloud 商业托管;嵌入式(Lite)/单机服务(Standalone)/分布式(Distributed)/全托管(Zilliz Cloud) 一句话定位:面向海量向量的专用向量数据库,以「元数据 + 对象存储 + 计算节点」分层,一套 API 覆盖 Lite、单机与分布式。 约定:$普通用户、#root 或 sudo、<xxx>为占位符;标 ⚠️ 的是高危操作。 更新时间:2026-11(版本与 API 变化快,执行前请以官方文档复核)
目录
1. 它是什么、什么时候选它
1.1 定位与架构
Milvus 是专为向量检索设计的数据库,核心职责:存向量、建 ANN 索引、相似度检索、叠加标量过滤。它不是给现有库加一个向量列,而是围绕向量重新设计存储与查询链路。四种形态(官方资料确认):
| 形态 | 组成 | 适用场景 |
|---|---|---|
| Milvus Lite | pip 进程内库,无独立服务 |
本地开发、单测、演示 |
| Standalone | Docker Compose 单机多容器 | 中小规模生产 / 预发 |
| Distributed | Kubernetes 集群 | 大规模、横向扩展、高可用 |
| Zilliz Cloud | 全托管商业服务(Milvus 原班团队提供) | 免自运维、按需弹性 |
Standalone 3.0 默认 3 个容器:etcd(元数据)、minio(对象存储)、standalone(计算与接入)。通常元数据落 etcd、原始向量与索引文件落对象存储、计算节点负责索引构建与查询,具体流程以官方架构文档为准。分布式形态通常把接入/查询/数据/索引拆成独立节点并配副本,进程名与数量以官方架构文档为准。
版本差异:Standalone 3.0 起消息队列改为内嵌 Woodpecker(作 WAL),不再需要独立 MQ 容器;2.x 教程里"起 Pulsar / Kafka 容器"的步骤已不适用。
1.2 与同类产品的本质差别
| 对比对象 | 本质差别 |
|---|---|
| pgvector / Elasticsearch 等「融合型」 | 在现有库里加向量列/字段,复用宿主事务与查询引擎;Milvus 是独立系统,索引、扩展、稠密+稀疏都围绕向量设计 |
| Faiss / hnswlib 等「索引库」 | 索引库只有算法与数据结构,无服务化、无持久化管理、无权限;Milvus 带服务、标量过滤、监控与运维能力 |
| 同册 Qdrant / Weaviate | 同为专用向量库,差别在架构重心与客户端 API 风格,见第 11 章;本手册不引用第三方评测结论 |
1.3 适合 / 不适合
| 适合 | 不适合 |
|---|---|
| 向量规模大、需分布式扩展与副本高可用 | 数据量很小、单机内存足够放全量(更轻的嵌入式方案更省事) |
| 需在多种 ANN 索引 / 量化间按场景选型 | 只想给已有 PostgreSQL 加向量字段(应看融合型分册 pgvector 篇) |
| 稠密之外叠加稀疏向量 / BM25 混合召回 | 无人力维护 etcd / 对象存储 / 多容器编排 |
| 已有 K8s 与对象存储运维能力 | 要求跨库强事务一致性(向量库通常为可调/最终一致性,以官方为准) |
| 想一套 API 从 Lite 平滑过渡到集群 | — |
1.4 规模参考量级(经验值,非官方承诺)
| 维度 | 经验量级 | 说明 |
|---|---|---|
| 向量条数 | 单机 Standalone 通常千万级;Distributed 通常亿级及以上 | 取决于硬件、索引、副本,须压测 |
| 向量维度 | 常见 768 / 1024 / 1536 | 与 embedding 模型一致 |
| QPS | 随索引类型、副本数、过滤复杂度、硬件变化 | 无官方承诺值,以压测为准 |
1.5 在 RAG / 推荐 / 以图搜图链路中的位置
Milvus 处在召回层:文档/物品/图片经 embedding 模型得到向量,连同标量字段写入;查询时用相似度检索 + 标量过滤取 top-k 候选,再交给重排或 LLM 拼 context。它不负责生成向量、也不负责最终排序;重排通常由业务侧或外部组件实现,具体融合 API 以官方文档为准、实测为准。
2. 版本、许可与官方入口
2.1 版本状态表(2026-11)
| 版本线 | 版本 / tag | 时间 | 状态 | 备注 |
|---|---|---|---|---|
| 服务端 3.0 线 | v3.0.5 |
2026-10-30 | 最新 | Standalone 内嵌 Woodpecker |
| 服务端 2.6 线 | v2.6.26 |
2026-10-26 | 仍在维护 | 存量集群 |
| PyMilvus(SDK) | 3.0.2 |
官方未标注日期 | Quickstart 采用 | 与服务端不同线 |
| Milvus Lite | 3.2.2 |
官方未标注日期 | Quickstart 采用 | 与 SDK 不同线 |
避坑:服务端、PyMilvus、Milvus Lite 是三条独立版本线,数字不可互相套用,也不要用 SDK 版本推断服务端功能。
2.2 许可证与商业版边界
自托管为 Apache 2.0;Zilliz Cloud 为商业托管,功能与计费以官方为准。企业特性、托管版专属能力与价格未查到官方明确说明,本手册不列举具体价格,请以官网报价为准;许可变更风险以官方 LICENSE 与当次发版说明为准。
2.3 官方 URL 表
| 用途 | 地址 |
|---|---|
| 官网 | https://milvus.io |
| 文档 | https://milvus.io/docs |
| Quickstart | https://milvus.io/docs/quickstart.md |
| GitHub | https://github.com/milvus-io/milvus |
| Releases | https://github.com/milvus-io/milvus/releases |
| Docker 镜像 | https://hub.docker.com/r/milvusdb/milvus |
| Standalone Compose 文档 | https://milvus.io/docs/install_standalone-docker-compose.md |
| Helm 部署文档 | https://milvus.io/docs/install_cluster-helm.md |
| 索引文档 | https://milvus.io/docs/index.md |
| 度量文档 | https://milvus.io/docs/metric.md |
2.4 版本识别
python3 -m pip show pymilvus milvus-lite # 客户端 / Lite 版本
docker compose images # Standalone 各容器镜像 tag
docker images | grep milvusdb/milvus # 已拉取镜像 tag
服务端精确版本通常通过 WebUI 或管理接口查询,具体入口以官方文档为准。
2.5 近两年重要变更与弃用提醒
版本差异:ORM(
connections.connect()/Collection()/utility.*)官方明确标注 "NEVER use",当前统一用MilvusClient(v2.4+),详见第 5、9 章。
版本差异:Milvus Lite 2.x 建单个
.db文件,3.x 建目录,两者不兼容,须导出后迁移。
版本差异:Helm 仓库
milvus-io/milvus-helm已归档(chart ≤ 4.0.31),现用zilliztech/milvus-helm。
版本差异:稀疏索引
SPARSE_WAND自 2.5.4 弃用,改DAAT_WAND;GPU_CAGRA仅见 2.6.x release notes,索引文档逐字条目未核实(见第 11 章),不得当作确定索引名写入生产配置。
3. 安装与启动
3.1 方式一:pip 装 SDK + Lite
python3 -m pip install "pymilvus[milvus-lite]==3.0.2" "milvus-lite==3.2.2"
python3 -m pip install "pymilvus==3.0.2" # 仅 SDK,连远程服务端时用
前置:Python 3 与 pip。Lite 进程内运行,无需起服务、无需开端口,第 5 章示例即用此方式。
3.2 方式二:Docker Compose 起 Standalone
wget https://github.com/milvus-io/milvus/releases/download/v3.0.5/milvus-standalone-docker-compose.yaml -O docker-compose.yaml
sudo docker compose up -d
前置:Docker 与 docker compose 插件。3.0 起默认拉起 3 个容器(etcd / minio / standalone),消息队列内嵌 Woodpecker,无需额外 MQ 容器。
3.3 方式三:Helm 部署分布式集群
helm repo add zilliztech https://zilliztech.github.io/milvus-helm/
helm install my-release zilliztech/milvus --set image.all.tag=v3.0.5
前置:Kubernetes 集群与 Helm 3。仓库地址以 2.5 节为准,勿用已归档旧仓库。
3.4 目录与端口表
| 项 | 值 | 说明 |
|---|---|---|
| 19530 | SDK / gRPC | 客户端连接服务端主端口 |
| 9091 | WebUI /webui/、/healthz |
管理界面与存活探测 |
| Lite 数据 | 本地路径(如 milvus_demo.db) |
3.x 建的是目录,非 2.x 单 .db 文件 |
| Standalone 数据 | 由 docker-compose.yaml 的 volume 定义 |
具体路径以实际 compose 文件为准 |
| compose 文件 | docker-compose.yaml |
由 3.2 的 wget -O 生成 |
| 镜像 | milvusdb/milvus |
Docker Hub 官方镜像名 |
3.5 健康检查与连通性验证
curl -s http://localhost:9091/healthz # Standalone 存活探测
sudo docker compose ps # 3 个容器是否都 Up
sudo docker compose logs --tail=50 standalone # 启动日志尾段
客户端连通性用第 5 章建集合 + 插入 + 检索冒烟脚本验证。防火墙放行等基础 Linux 操作见根目录运维手册。
3.6 生产最小配置建议
| 项 | 建议 |
|---|---|
| 认证 | 默认 token 为 root:Milvus,生产必须修改;配置项名以官方配置模板为准 |
| 持久化 | 确认 compose/Helm 的 volume 指向可靠磁盘或对象存储,重建前先备份 |
| 资源限制 | 建议为各容器显式设 CPU / 内存 limit;数值以压测与官方建议为准 |
| 网络 | 19530 / 9091 收敛内网,禁止公网直曝;细则见根目录手册 |
4. 核心概念与数据模型
4.1 术语对照表
| Milvus 术语 | 通用术语 | 关系型类比 |
|---|---|---|
| Collection | 向量集合 | 表 |
| Entity | 一条记录 | 行 |
| Field | 字段 | 列 |
| Schema | 结构定义 | 表结构 DDL |
| Primary Key | 主键 | 主键 |
| Partition / Segment | 分区 / 物理存储分片(通用概念) | 分区 / — |
| Index | ANN 索引 | 索引 |
metric_type |
距离度量 | — |
上表含通用分层概念,具体层级与官方命名以数据模型文档为准。
4.2 数据模型层级
Database(通用)→ Collection → Partition(可选)→ Segment(物理)
↓
Entity(行)= 主键 + 向量字段 + 若干标量字段
一条 Entity 至少含一个主键与一个向量字段,其余标量字段(如 subject、text)用于过滤与回显。字段/向量类型的具体常量名以官方 schema 文档为准。
4.3 字段 / 向量类型与距离度量
| 向量类别 | 官方资料确认的度量 | 默认 | 方向(经验) |
|---|---|---|---|
| 浮点向量 | L2 / IP / COSINE | COSINE | 通常 L2 越小越相似,IP / COSINE 越大越相似 |
| 二值向量 | JACCARD / HAMMING | — | 以官方 metric 文档为准 |
| 稀疏向量 | IP / BM25 | — | 以官方 metric 文档为准 |
方向由 metric_type 决定,且与 SDK 返回的 distance / score 绑定;上表为通用经验,实际以官方 metric 文档与实测为准。
4.4 索引类型与关键参数
| 向量类别 | 官方资料确认的索引类型 |
|---|---|
| 浮点 | FLAT IVF_FLAT IVF_PQ IVF_SQ8 HNSW HNSW_SQ HNSW_PQ HNSW_PRQ SCANN DISKANN GPU_IVF_FLAT GPU_IVF_PQ |
| 二值 | BIN_FLAT BIN_IVF_FLAT |
| 稀疏 | SPARSE_INVERTED_INDEX |
| 参数类别 | 涉及索引 | 默认值 | 影响 |
|---|---|---|---|
| 建图 / 聚类(如 HNSW 的 M、efConstruction;IVF 的 nlist) | HNSW / IVF_* | 官方未明确,以 index.md 为准 | 召回率、建索引耗时与内存 |
| 查询参数(如 ef / nprobe) | HNSW / IVF_* | 官方未明确,以 index.md 为准 | 查询召回与延迟 |
| 量化参数 | IVF_PQ IVF_SQ8 HNSW_SQ HNSW_PQ HNSW_PRQ |
官方未明确,以 index.md 为准 | 内存压缩与精度损失 |
metric_type |
全部 | 浮点默认 COSINE | 相似度方向 |
4.5 生命周期与一致性模型
经验上,新写入先进入增长段并落 WAL,达到阈值后触发 flush / compaction 并构建索引;检索前集合通常需处于已加载状态。是否异步、是否需显式 load、load 方法名,以及一致性级别名称与默认值,均未查到官方明确说明,以官方文档与实测为准。
5. 快速上手:完整 CRUD 示例
5.1 完整可运行 Python 示例(基于官方 Quickstart)
from pymilvus import MilvusClient
# 连接:Lite 直接传本地路径(3.x 建的是目录)
# 连 Standalone 用:MilvusClient(uri="http://localhost:19530", token="root:Milvus")
client = MilvusClient("milvus_demo.db")
# 建集合:示例用 4 维小向量,实际常见 768 / 1024 / 1536
client.create_collection(collection_name="demo_collection", dimension=4)
# 插入:data 为 dict 列表,vector 维度须与 dimension 一致
# subject / text 为标量字段,分别用于过滤与回显
data = [
{"id": 1, "vector": [0.1, 0.2, 0.3, 0.4], "subject": "history", "text": "秦汉史"},
{"id": 2, "vector": [0.9, 0.8, 0.7, 0.6], "subject": "history", "text": "唐宋史"},
{"id": 3, "vector": [0.4, 0.3, 0.2, 0.1], "subject": "math", "text": "线性代数"},
{"id": 4, "vector": [0.2, 0.1, 0.4, 0.3], "subject": "math", "text": "概率论"},
]
client.insert(collection_name="demo_collection", data=data)
query_vec = [0.15, 0.25, 0.35, 0.45]
# 1) 纯相似度检索
res = client.search(
collection_name="demo_collection",
data=[query_vec],
limit=3,
output_fields=["text"],
)
print(res)
# 2) 带标量过滤检索:只取 subject == 'history'
res2 = client.search(
collection_name="demo_collection",
data=[query_vec],
filter="subject == 'history'",
limit=3,
output_fields=["text"],
)
print(res2)
避坑:旧教程会写成
from pymilvus import connections, Collection, utility,再connections.connect()、Collection("demo_collection")、utility.*这一套 ORM。官方明确标注 "NEVER use",当前统一改用MilvusClient(v2.4+):Lite 传本地路径,服务端传uri=+token=。完整对照见第 9 章。
5.2 输出怎么读
| 字段 | 含义 |
|---|---|
id |
命中实体的主键 |
distance / score |
与查询向量的距离或相似度;通常 L2 越小越相似,IP / COSINE 越大越相似,方向以 metric 与实测为准 |
text(output_fields) |
由 output_fields=["text"] 指定回显的标量字段 |
| 外层列表 | data=[query_vec] 可传多个查询向量,返回按查询向量分组,每组是一组 top-k 命中 |
返回结构的逐字段细节以 SDK 实际输出为准。
5.3 更新 / 删除 / 清理(经验性说明)
官方 Quickstart 逐字只覆盖到「连接 → 建集合 → 插入 → 检索 → 带过滤检索」,未逐字给出 MilvusClient 的更新 / 删除 / 清理方法名。按事实优先原则,不在可运行示例里编造这些调用。经验上这类客户端通常具备以下能力,方法名与参数以 pymilvus 官方文档为准、实测为准:
| 意图 | 经验做法 | 注意 |
|---|---|---|
| 更新 | 通常对同一主键再写一次(upsert 语义) | 方法名、是否需先删,以官方文档为准 |
| 删除 | 通常按主键或过滤表达式删除 | 表达式语法以官方文档为准 |
| 清理 | 通常删除整个集合 | 不可逆,先备份 |
⚠️ 危险:删除集合或清空数据不可逆,生产前必须确认目标集合、先备份、低峰操作。
5.4 REST / cURL 等价示例(仅健康探测)
curl -s http://localhost:9091/healthz
Milvus 主接口是 19530 上的 gRPC / SDK,CRUD 的 REST 路径未查到官方明确说明,以官方 API 文档为准;9091 上确认可用的是 /webui/ 与 /healthz。
6. 索引与检索进阶
6.1 索引参数调优表(经验性)
| 参数 | 默认值 | 影响 | 建议范围 |
|---|---|---|---|
| HNSW 的 M / efConstruction | 官方未明确,以 index.md 为准 | 越大通常召回越好,建索引更慢、内存更高 | 从默认起步,按 recall / 内存压测,实测为准 |
| 查询时 ef / nprobe | 官方未明确,以 index.md 为准 | 越大召回越高、延迟越大 | 从默认起步,按 P99 反推,实测为准 |
| IVF 的 nlist | 官方未明确,以 index.md 为准 | 聚类桶数,影响召回与建索引成本 | 通常与数据量级相关,实测为准 |
| 量化(SQ / PQ / PRQ) | 官方未明确,以 index.md 为准 | 降内存、损精度 | 内存紧张时启用,用 FLAT 基线测召回损失 |
metric_type |
浮点默认 COSINE | 相似度方向 | 与 embedding 模型匹配 |
6.2 检索进阶要点
- recall 与延迟:增大查询搜索范围或建图密度,recall 上升但 P99 延迟与内存上升;建议用
FLAT精确检索作基线算 recall@k,再逐步调参,实测为准。 - 标量过滤:带
filter检索时候选是否被预剪枝,以及「过滤后返回少于 limit」,与索引实现有关;Milvus 具体 pre / post-filter 行为未查到官方明确说明,以官方文档为准,排障见第 8 章。 - 混合检索:官方资料确认稀疏向量可用
SPARSE_INVERTED_INDEX与 IP / BM25 度量,稠密 + 稀疏 BM25 混合可行;但融合 / 重排 / RRF 的具体 API 官方未明确,以官方文档为准、实测为准。版本差异:
SPARSE_WAND自 2.5.4 弃用,改用DAAT_WAND。 - 多向量 / 稀疏 / 重排 / 量化:索引枚举已区分浮点 / 二值 / 稀疏三类;
IVF_SQ8IVF_PQHNSW_SQHNSW_PQHNSW_PRQ为量化类,通常用于降内存;GPU_IVF_FLATGPU_IVF_PQ面向 GPU 场景。多向量 schema、重排 API 以官方文档为准。
6.3 内存与磁盘容量估算(经验公式)
原始向量内存 ≈ 条数 N × 维度 D × 每维字节数(float32 = 4 B)
示例:N = 1e7,D = 768,float32 → 1e7 × 768 × 4 B ≈ 30.7 GB(仅原始向量)
不含 ANN 索引结构、副本、标量字段、WAL、系统开销与量化压缩比;为经验估算,实际以压测与监控为准。
7. 生产部署与运维
7.1 高可用、集群与备份
Distributed 跑在 Kubernetes 上,通常通过多副本与分片提供高可用;Standalone 为单机,无节点级 HA。分片数、副本数、节点角色配置以官方 Helm values 与架构文档为准。备份需同时覆盖 etcd 元数据与对象存储中的向量/索引;恢复后索引是否需重建、具体备份命令与桶路径,未查到官方明确说明,以官方备份恢复文档为准。
7.2 监控、容量与扩缩容
| 端点 | 用途 |
|---|---|
http://<host>:9091/healthz |
存活探测 |
http://<host>:9091/webui/ |
WebUI 管理界面 |
| 19530 | SDK / gRPC 主端口 |
具体 Prometheus 指标名、采集端点与告警阈值未查到官方明确说明,以官方监控文档为准。建议至少覆盖:存活、写入失败率、查询 P99、内存/磁盘水位、索引构建状态;阈值按业务 SLO 设定,实测为准。容量按 6.3 估算后叠加索引、副本与增长余量;扩缩容操作以官方 K8s 运维文档为准。
7.3 升级与跨版本迁移
版本差异:Lite 2.x
.db与 3.x 目录不兼容,须导出后迁移,不能直接拿新客户端打开旧文件。
版本差异:3.0 起 Standalone 用内嵌 Woodpecker 作 WAL,从 2.x 升级时不要再拉独立 MQ 容器;Helm 用户须从已归档的
milvus-io/milvus-helm迁到zilliztech/milvus-helm。
升级顺序、是否需停机、数据格式兼容矩阵,未查到官方明确说明,以官方升级指南为准。
7.4 安全基线与日志
| 项 | 建议 |
|---|---|
| 认证 | 默认 root:Milvus 必须修改;配置项名以官方模板为准 |
| TLS / RBAC | 是否启用、如何配置以官方安全文档为准 |
| 网络 | 19530 / 9091 收敛内网,禁止公网直曝;防火墙细则见根目录手册 |
| 凭据 | token 不写进代码库,用环境变量或密钥管理注入 |
| 日志 | Standalone 用 sudo docker compose logs 查看;Lite 无独立服务日志;文件日志默认路径以官方文档为准 |
8. 高频故障与排障
| 症状 | 可能原因 | 定位命令 | 处置 |
|---|---|---|---|
| 客户端连不上 | 容器未起 / 19530 不通 / token 错 | sudo docker compose ps、curl -s http://localhost:9091/healthz |
起容器、核对 uri= 与 token=、放行端口 |
| 写入失败 | 向量维度与 dimension 不一致 / 缺主键 / 磁盘满 |
sudo docker compose logs --tail=100 standalone、df -h |
对齐维度与 schema、清理磁盘 |
| 查不到 / 召回低 | 集合未加载 / 索引未构建 / metric 不匹配 | 第 5 章冒烟脚本、curl -s http://localhost:9091/healthz |
确认加载状态、等待索引就绪、核对 metric_type |
| 查询慢 | 查询参数过大 / 未建索引走 FLAT / 资源不足 | 压测对比、sudo docker compose stats |
调 ef / nprobe、补建索引、扩资源 |
| OOM | 索引 + 原始数据超内存 / 副本过多 | free -h、sudo docker compose stats |
启用量化索引、扩内存或减副本 |
| 磁盘满 | 对象存储 / WAL / 日志持续增长 | df -h、du -sh 挂载卷 |
清理过期数据、扩容卷、配置保留策略 |
| 索引不生效 | 索引类型与度量不匹配 / 检索前未加载 | 对照 4.4 表、日志检索索引构建记录 | 重建匹配索引、确认加载状态 |
| 版本升级后报错 | 用 2.x 的 .db 直接被 3.x 打开 / 旧 ORM 代码 |
python3 -m pip show pymilvus milvus-lite、docker compose images |
导出迁移 Lite 数据、ORM 改 MilvusClient |
| 带过滤检索结果变少 | 过滤条件先剪枝 / 匹配数据本就少 | 去掉 filter 再检索对比条数 |
放宽条件、确认过滤字段可过滤 |
| Standalone 起不来 | 3.0 仍按 2.x 教程拉了独立 MQ 容器 | sudo docker compose ps |
去掉多余 MQ 容器,用内嵌 Woodpecker |
9. 常见坑与避坑清单
- 照抄旧 ORM 教程:
connections/Collection/utility导入报错或行为异常,原因是官方已标注 "NEVER use";怎么做:全部改用MilvusClient(v2.4+),连接方式按 5.1。 - Lite 2.x 数据直接被 3.x 打开:打开失败或数据不可见,原因是 2.x 是
.db、3.x 是目录;怎么做:从 2.x 导出后迁移,勿直接覆盖。⚠️ 危险:用新版本直接覆盖旧 Lite 数据目录可能造成数据不可用,操作前先整目录备份。
- 3.0 仍去起独立 MQ 容器:出现多余容器、端口冲突,原因是 3.0 已内嵌 Woodpecker;怎么做:按官方 compose 只起 3 个容器。
- Helm 用旧仓库:
helm repo add失败或 chart 过旧,原因是milvus-io/milvus-helm已归档;怎么做:改zilliztech/milvus-helm。 - 混淆三条版本线:拿 SDK 版本号判断服务端功能;怎么做:分别用 2.4 节命令核实各自版本。
- 插入维度与
dimension不一致:插入报错;怎么做:create_collection(dimension=...)与vector长度对齐。 - 忽略默认 COSINE:相似度方向或排序与预期不符;怎么做:显式选
metric_type,与 embedding 模型匹配,实测为准。 - 索引/集合未就绪就检索:查不到或退化为精确扫描;怎么做:确认加载与索引构建状态,是否需显式 load 以官方文档为准。
- 把
GPU_CAGRA当确定索引:建索引报未知索引,原因是该条目仅见 2.6.x release notes、索引文档逐字条目未核实;怎么做:只用 4.4 表中确认的索引名,其余以官方文档为准。 - 稀疏检索沿用
SPARSE_WAND:弃用告警或行为变化,原因是 2.5.4 起弃用;怎么做:改DAAT_WAND。 - 默认 token 上生产:未授权可访问 19530,原因是沿用
root:Milvus;怎么做:部署即改 token,收敛网络暴露面。⚠️ 危险:默认凭据 + 公网直曝等于数据裸奔,属高危配置。
- 误删集合 / 清库:线上数据丢失;怎么做:删除前备份、核对目标集合名、低峰执行。
⚠️ 危险:删除集合不可逆,务必先备份。
- 单机默认资源直接上生产:高峰期 OOM 或查询抖动;怎么做:设 CPU / 内存 limit,按 6.3 估算容量并压测。
10. 速查表
| 操作 | 命令 / 代码 | 说明 |
|---|---|---|
| 装 SDK + Lite | python3 -m pip install "pymilvus[milvus-lite]==3.0.2" "milvus-lite==3.2.2" |
本地开发 |
| 仅装 SDK | python3 -m pip install "pymilvus==3.0.2" |
连远程服务端 |
| 下载 compose | wget https://github.com/milvus-io/milvus/releases/download/v3.0.5/milvus-standalone-docker-compose.yaml -O docker-compose.yaml |
Standalone |
| 起 Standalone | sudo docker compose up -d |
3 容器 |
| 加 Helm 仓库 | helm repo add zilliztech https://zilliztech.github.io/milvus-helm/ |
勿用旧仓库 |
| Helm 安装 | helm install my-release zilliztech/milvus --set image.all.tag=v3.0.5 |
分布式 |
| 连接 Lite | MilvusClient("milvus_demo.db") |
3.x 建目录 |
| 连接服务端 | MilvusClient(uri="http://localhost:19530", token="root:Milvus") |
生产改 token |
| 建集合 | client.create_collection(collection_name="demo_collection", dimension=768) |
默认 COSINE |
| 插入 | client.insert(collection_name="demo_collection", data=data) |
data 为 dict 列表 |
| 相似度检索 | client.search(collection_name="demo_collection", data=[query_vec], limit=3, output_fields=["text"]) |
top-k |
| 带过滤检索 | 上一行加 filter="subject == 'history'" |
标量过滤 |
| 客户端版本 | python3 -m pip show pymilvus milvus-lite |
版本线核实 |
| 镜像 tag | docker compose images / docker images | grep milvusdb/milvus |
服务端版本 |
| 存活探测 | curl -s http://localhost:9091/healthz |
9091 |
| WebUI | http://localhost:9091/webui/ |
管理界面 |
| 容器状态 | sudo docker compose ps |
3 容器是否 Up |
| 容器日志 | sudo docker compose logs -f standalone |
排障 |
| 停 Standalone | sudo docker compose down |
⚠️ 未持久化会丢数据 |
| Quickstart | https://milvus.io/docs/quickstart.md | 当前写法 |
常用端口与路径
| 值 | 用途 |
|---|---|
| 19530 | SDK / gRPC |
| 9091 | WebUI /webui/、/healthz |
milvus_demo.db |
Lite 3.x 本地目录(示例名) |
docker-compose.yaml |
Standalone 编排文件 |
milvusdb/milvus |
Docker 镜像名 |
11. 参考与延伸
11.1 官方文档链接清单
官网 https://milvus.io | 文档 https://milvus.io/docs | Quickstart https://milvus.io/docs/quickstart.md | GitHub https://github.com/milvus-io/milvus | Releases https://github.com/milvus-io/milvus/releases | Docker 镜像 https://hub.docker.com/r/milvusdb/milvus | Compose 文档 https://milvus.io/docs/install_standalone-docker-compose.md | Helm 文档 https://milvus.io/docs/install_cluster-helm.md | 索引 https://milvus.io/docs/index.md | 度量 https://milvus.io/docs/metric.md
11.2 与同册其他产品的关系
- 已有 PostgreSQL 实例、只需加向量列:见融合型分册 pgvector 篇(模板示例
pgvector.md)。 - 想要纯嵌入式、无服务进程:见同册 LanceDB / Chroma 相关篇。
- 对比专用向量库 API 风格:见
Qdrant.md、Weaviate.md;免运维托管见云托管分册 Zilliz Cloud 篇。
11.3 进阶阅读方向
索引选型与量化(IVF_PQ / HNSW_* / SCANN / DISKANN)、稠密+稀疏 BM25 混合检索、K8s 分布式运维、以 FLAT 为基线的 recall 基准测试;具体 API 与参数以官方文档为准。
11.4 本篇「未核实 / 以官方为准」事项
GPU_CAGRA索引:仅见 2.6.x release notes,索引文档逐字条目未核实;正文未列入确定索引枚举,生产配置不得当作确定可用索引名。MilvusClient的更新 / 删除 / 清理方法名与参数:Quickstart 未逐字给出,5.3 为经验性说明,以 pymilvus 官方文档为准、实测为准。- 各索引关键参数名、默认值、建议范围:官方未明确,以官方
index.md为准;第 6 章均为经验性讨论。 - 字段 / 向量类型具体常量名、一致性级别名称与默认值、写入→可检索是否需显式 load:官方未明确,以官方文档为准。
- CRUD 的 REST 路径、监控具体指标名、备份恢复具体命令、文件日志默认路径、pre/post-filter 具体行为、混合检索融合/RRF API:官方未明确,以官方文档为准、实测为准。
- 距离 / score 方向(L2 / IP / COSINE)与 pre/post-filter 结论:为通用经验,正文一律以「通常 / 实测为准 / 以官方文档为准」表述,非官方结论。
- 规模量级、容量公式、告警阈值:为经验估算,非官方承诺,以压测与监控数据为准。