Milvus
云原生分布式向量数据库,支持十亿级向量ANN检索,广泛应用于RAG和AI语义搜索场景
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
云原生分布式向量数据库,支持十亿级向量ANN检索,广泛应用于RAG和AI语义搜索场景
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下,你在网上搜索一张「橘猫趴在窗台上晒太阳」的照片,搜索引擎是如何在毫秒内从数十亿张图片中找出最相似的结果的?答案是——向量检索。Milvus 就是这个过程中的核心基础设施,它专门负责存储、索引和搜索 embedding 向量,让 AI 应用能够在海量非结构化数据中快速找到「最相似的那个」。

图1:以图搜图的向量检索流程
Milvus 由中国公司 Zilliz 于 2019 年开源,其创始人兼 CEO 刁正是数据库领域的老将,曾在 Oracle 和 IBM 从事分布式系统研发。在创立 Zilliz 之前,他意识到随着深度学习的爆发,全球正在产生海量的 embedding 向量数据——每段文本、每张图片、每段音频经过 AI 模型处理后都会变成一个高维向量,而传统的关系型数据库根本无法高效处理这类数据。
于是他决定从零打造一个专为向量检索设计的数据库。Milvus 的名字来源于科幻电影《黑客帝国》中的「Miluvian」概念——一种能在虚拟世界中快速定位目标的技术。这个命名暗示了 Milvus 的核心使命:在数据海洋中精准定位相似内容。
2020 年,Milvus 正式加入 Linux 基金会旗下的 LF AI & Data 基金会,成为最早获得顶级开源治理的项目之一。2022 年,Zilliz 获得 6000 万美元 B 轮融资,估值达数亿美元,进一步加速了 Milvus 商业化版本 Zilliz Cloud 的发展。如今 Milvus 在 GitHub 上已收获超过 4.4 万颗星,被全球数千家企业采用,涵盖内容推荐、语义搜索、安全风控、智能问答等场景。

图2:基于 Milvus 的智能问答系统架构
Milvus 的架构设计充分体现了「专业的事情交给专业的组件」这一原则。它并非一个独立运行的单体程序,而是一套由多个组件协同工作的分布式系统:
存储层:Milvus 支持多种存储后端,包括 MinIO(S3 兼容的对象存储)、本地磁盘,以及 Azure Blob Storage 和 Google Cloud Storage。这种灵活性让它可以无缝集成到现有的云基础设施中。对于向量数据,Milvus 采用列式存储格式;对元数据则依赖 etcd 进行分布式协调。
计算层:Milvus 的核心索引(ANN 近似最近邻搜索)引擎支持多种算法,包括 HNSW(分层可导航小世界图)、DiskANN(磁盘索引)、IVF(倒排索引)以及 PQ/SQ(乘积量化/标量量化)。用户可以根据数据规模、查询精度要求和硬件条件灵活选择。系统还充分利用了 Intel AVX512/SIMD 指令集进行硬件加速,在 CPU 上也能达到极高的吞吐。
服务层:Milvus 对外暴露 gRPC API,并提供多语言 SDK(Python、Go、Java、Node.js、C++ 等),几乎覆盖所有主流开发环境。客户端通过负载均衡连接到 Proxy 组件,后者负责请求路由、结果合并和访问控制。
Milvus 的另一大亮点是 K8s 原生设计。官方提供了 Helm Chart,支持通过 Kubernetes 快速部署分布式集群,具备自动扩缩容、故障自愈等能力。对于个人开发者或小团队,官方同样提供了 standalone 模式的 docker-compose 一键部署方案。
Milvus 的使用门槛相对较低,但功能却十分强大。以下是几个关键能力:
1. 丰富的向量索引类型
不同业务场景对「速度」和「精度」的要求各不相同。Milvus 提供了逐级满足需求的索引选择:
2. 混合检索与动态字段过滤
Milvus 不仅能做向量相似度搜索,还支持在向量查询的同时施加动态标量过滤条件。例如:「找出与这张图片最相似的商品,但只限于价格低于200元的类别」。这种 Hybrid Search 能力对电商推荐、安全风控等场景至关重要。
3. 时序管理与数据分区
支持按时间或自定义字段对数据进行分区(Partition),大幅提升查询效率。这对于聊天记录检索、日志分析等有时间属性的场景非常有用。
4. 多租户与资源隔离
通过 Collection 和 Resource Group 机制,Milvus 支持多租户场景下的资源隔离,适合 SaaS 平台或企业内部提供共享向量数据库服务。
轻量级体验(Milvus Lite):如果只是想快速体验,最简单的方式是 pip install milvus-lite,这会启动一个嵌入式的本地 Milvus 实例,适合原型验证和本地开发。
标准部署(Docker Standalone):对于正式环境,推荐使用官方提供的 docker-compose 配置文件,只需三步即可启动一个包含 Milvus + etcd + MinIO 的完整服务:
wget https://github.com/milvus-io/milvus/releases/latest/download/docker-compose.yml
docker-compose up -d
生产部署(K8s):生产环境建议使用 Kubernetes 部署,官方 Helm Chart 支持配置副本数、存储类、资源限制等参数。分布式模式下,Milvus 会自动协调各节点的工作负载,实现水平扩展。
连接 Milvus 使用 Python SDK 非常直观:
from pymilvus import MilvusClient
client = MilvusClient("http://localhost:19530")
client.insert("my_collection", {"vector": [0.1]*128, "id": 1})
results = client.search("my_collection", data=[[0.1]*128], limit=10)

图3:分子相似性搜索应用
Milvus 并非完美,了解其局限有助于做出更好的技术选型:
1. 分布式部署复杂度较高
分布式 Milvus 需要额外运维 etcd 和 MinIO/Kafka 等依赖组件,相比纯 Python 的向量库(如 FAISS),运维成本明显更高。对于仅有百万级向量的中小规模应用,Milvus 的复杂度可能过剩。
2. GPU 加速需企业版
虽然 Milvus 的核心代码支持 GPU 索引(如 GPU HNSW),但部分高级 GPU 加速功能仅在 Zilliz Cloud 商业版中提供。开源版本主要依赖 CPU 加速。
3. 不支持强一致性事务
Milvus 的设计目标是高速向量检索,而非强一致性事务。对于需要 ACID 保证的场景(如金融交易),需要额外的数据保护层。
Milvus 的出现填补了向量数据库这一细分领域的空白。在大语言模型(LLM)时代,Milvus 更是成为 RAG(检索增强生成)架构中不可或缺的记忆模块——它负责存储和检索文档的向量表示,帮助 LLM 突破上下文长度限制,实现对海量知识的高效访问。
从 GitHub 趋势来看,Milvus 的 star 增长曲线与 LLM 的爆发时间高度吻合。2023 年 ChatGPT 发布后,Milvus 的社区活跃度和企业采用率显著提升。如今它已是向量数据库领域的标杆项目,与 Qdrant、Pinecone 等共同推动了这一赛道的快速发展。
对于 AI 开发者而言,掌握 Milvus 意味着拥有了一把打开高效 AI 应用大门的钥匙——无论是构建语义搜索引擎、开发多模态内容推荐系统,还是搭建企业级 RAG 知识库,Milvus 都提供了可靠、成熟、可扩展的向量存储与检索能力。