①定义与来历:Milvus 到底是什么
谁做的
由 Zilliz 发起,已捐献给 LF AI & Data 基金会(毕业项目),Apache 2.0 协议开源。
站在巨人肩上
底层向量引擎 Knowhere 封装了 FAISS、Annoy、HNSW 等成熟算法库,并在此之上做工程化。
形态
有单机版(Standalone)、分布式版(Cluster,K8s 部署),还有嵌入式 Milvus Lite 与云上 Zilliz Cloud。
主线版本
当前主推 2.x 系列(存储计算彻底分离的设计),2.4+ 支持多向量 / 稀疏向量,2.5 强化全文检索。
②核心功能清单
Milvus 不是「只会算余弦距离」的小工具,而是一整套面向生产的向量数据平台能力:
🔎 向量相似检索(ANN)
支持 L2 / IP / COSINE 等多种距离度量,亿级向量毫秒级返回 TopK 最近邻。
🧮 标量 + 向量混合查询
在向量检索的同时按标量字段过滤(如 category='tech' and score>0.8),谓词下推提速。
🎯 多向量 / 多模态
一个 Collection 可含多个向量列(稠密 + 稀疏 + 二进制),支持多路召回后重排。
🗂️ 分区 / 分片
Partition 减少读取范围,Sharding 按主键哈希把写入打散到多节点并行。
⚡ SIMD 加速
原生支持 SSE / AVX2 / AVX512 指令集,向量距离计算大幅提速。
🧩 内置标量索引
倒排、Bloom、hash、树状、位图等索引,加速元数据过滤与主键查询。
🌐 多语言 SDK
Python(pymilvus)、Java、Go、Node.js、RESTful,生态完善。
⏱️ Time Travel / 一致性
基于 TSO 时间戳,支持强一致 / 有界 / 会话 / 最终一致多档级别。
from pymilvus import MilvusClient, DataType
client = MilvusClient("milvus.db") # 或连接远程 "http://localhost:19530"
schema = MilvusClient.create_schema()
schema.add_field("id", DataType.INT64, is_primary=True)
schema.add_field("embedding", DataType.FLOAT_VECTOR, dim=768) # 向量字段
schema.add_field("category", DataType.VARCHAR, max_length=64) # 标量字段
client.create_collection("docs", schema=schema)
client.create_index("docs", "embedding", index_params={"index_type":"HNSW"})
# 向量检索 + 标量过滤(混合查询)
res = client.search("docs", data=[query_vec], anns_field="embedding",
filter="category == 'tech'", limit=10, metric_type="COSINE")
③关键问题:标量索引和向量索引,Milvus 都具备吗?
| 维度 | 标量索引(Scalar Index) | 向量索引(Vector Index) |
|---|---|---|
| 作用对象 | 整数 / 字符串 / 布尔 / JSON 等结构化字段 | 高维浮点 / 二值 / 稀疏向量字段 |
| 解决什么 | 加速「等于 / 范围 / 包含」等过滤与主键查找 | 加速「最近邻」相似度检索(替代暴力全扫) |
| Milvus 内置类型 | 倒排索引(inverted)、Bloom、hash、树状、位图(bitmap,规划中) | IVF_FLAT / IVF_PQ / IVF_SQ8 / HNSW / DiskANN / ScaNN / GPU系 / AUTOINDEX |
| 底层算法 | B+树思想 / 位图 / 哈希 —— 适合「有序 / 可比较」数据 | 聚类(IVF) / 图(HNSW) / 磁盘图(DiskANN) —— 适合「不可比较的高维空间」 |
| 能否混用 | 可以 一次查询里标量过滤 + 向量检索同时生效(先过滤再检索 / 谓词下推) | |
④核心特点
云原生 · 存储计算分离
接入、协调、执行、存储四层完全独立,计算节点无状态,可随 K8s 弹性扩缩容。
高可用 · 高可靠
组件无单点,依赖 etcd / 对象存储做持久化,故障可快速恢复。
高性能 · 水平扩展
MPP 大规模并行处理 + SIMD,十亿乃至万亿级向量仍可低延迟检索。
开发者友好
多语言 SDK、RESTful、与 LangChain / LlamaIndex 等 AI 框架无缝集成。
⑤解决什么问题
世界约 80% 的数据是非结构化的:图片、视频、音频、自然语言……它们没有整齐的二维表结构。要让计算机「理解」并检索它们,做法是:
- 用 AI / embedding 模型把非结构化数据变成高维向量(如 768 维浮点数组)。
- 向量之间的距离 ≈ 原始数据的语义相似度(两个向量越近,代表的东西越像)。
- 问题转化为:在亿万个向量里,快速找出与查询向量最像的那几个。
⑥应用场景
💬 RAG 检索增强生成
大模型问答前,先从知识库检索最相关片段喂给 LLM。Milvus 是最主流的 RAG 向量底座之一。
🔍 语义搜索
「意思相近」就能搜到,而不只是关键词匹配。客服、文档、商品搜索都适用。
🛒 推荐系统
用户/商品 embedding 后,找相似用户、相似商品,做「看了又看」「猜你喜欢」。
🖼️ 图文 / 音视频检索
以图搜图、以文搜图、视频片段去重与查重。
🛡️ 异常 / 欺诈检测
把行为序列向量化,偏离正常簇的即为异常。
💊 生物 / 药物发现
分子结构向量化后做相似性筛选,加速候选化合物发现。
🤖 智能体记忆
把 Agent 的历史经验存成向量,下次按语义召回相关记忆。
📑 文档聚类 / 去重
海量文本按语义聚类、查重、去噪。
⑦Milvus 与「其他数据库」对比
| 维度 | 传统关系库 (MySQL) | 搜索引擎 (Elasticsearch) | 向量库 (Milvus) |
|---|---|---|---|
| 核心数据 | 结构化行记录 | 文档(含全文倒排) | 高维向量 + 标量 |
| 主力索引 | B+树(标量) | 倒排索引(全文)+ HNSW(向量) | IVF / HNSW / DiskANN(向量)+ 标量索引 |
| 擅长查询 | 等值 / 范围 / 事务 | 全文检索 + 混合召回 | 大规模向量相似检索(ANN) |
| 十亿级向量 | 不擅长(需外部向量库) | 可但非专长 | 专长 |
| 典型定位 | 业务系统主库 | 日志 / 搜索中台 | AI 语义检索底座 |