Milvus 部署选项概述
Milvus 是一个高性能、可扩展的向量数据库。它支持从在 Jupyter Notebooks 本地运行的演示到处理数百亿向量的 Kubernetes 集群等各种规模的使用场景。目前,Milvus 提供三种部署选项:Milvus Lite、Milvus Standalone 和 Milvus Distributed。
Milvus Lite
Milvus Lite 是一个可以导入到您的应用程序中的 Python 库。作为 Milvus 的轻量级版本,它非常适合在 Jupyter Notebooks 中进行快速原型设计或在资源有限的智能设备上运行。Milvus Lite 支持与其他 Milvus 部署相同的 API。与 Milvus Lite 交互的客户端代码也可以与其他部署模式的 Milvus 实例一起工作。
要将 Milvus Lite 集成到您的应用程序中,运行 pip install pymilvus
安装它,并使用 MilvusClient("./demo.db")
语句实例化一个带有本地文件的向量数据库,该文件将持久化存储所有数据。有关更多详细信息,请参阅 运行 Milvus Lite。
Milvus Standalone
Milvus Standalone 是单机服务器部署。Milvus Standalone 的所有组件都打包在一个 Docker 镜像 中,使部署变得方便。如果您有生产工作负载但不想使用 Kubernetes,在有足够内存的单机上运行 Milvus Standalone 是一个很好的选择。此外,Milvus Standalone 通过主从复制支持高可用性。
Milvus Distributed
Milvus Distributed 可以部署在 Kubernetes 集群上。这种部署采用云原生架构,其中数据摄入负载和搜索查询由独立的节点分别处理,允许关键组件的冗余。它提供最高的可扩展性和可用性,以及自定义每个组件分配资源的灵活性。Milvus Distributed 是运行大规模向量搜索系统的企业用户在生产环境中的首选。
为您的使用场景选择合适的部署方式
部署模式的选择通常取决于应用程序的开发阶段:
-
快速原型设计
如果您想快速构建原型或用于学习目的,例如 Retrieval Augmented Generation (RAG) 演示、AI 聊天机器人、多模态搜索,Milvus Lite 本身或 Milvus Lite 和 Milvus Standalone 的组合都很适合。您可以在 notebooks 中使用 Milvus Lite 进行快速原型设计,并探索各种方法,例如 RAG 中的不同分块策略。您可能希望将使用 Milvus Lite 构建的应用程序部署到小规模生产环境中以服务真实用户,或在更大的数据集(比如超过几百万向量)上验证想法。在这种情况下,Milvus Standalone 是合适的。Milvus Lite 的应用程序逻辑仍然可以共享,因为所有 Milvus 部署都具有相同的客户端 API。存储在 Milvus Lite 中的数据也可以通过命令行工具移植到 Milvus Standalone。
-
小规模生产部署
对于早期生产阶段,当项目仍在寻找产品市场契合点且敏捷性比可扩展性更重要时,Milvus Standalone 是最佳选择。在提供足够的机器资源的情况下,它仍然可以扩展到 1 亿向量,同时比维护 K8s 集群需要更少的 DevOps 工作。
-
大规模生产部署
随着您的业务快速增长和数据规模超过单台服务器的容量,是时候考虑 Milvus Distributed 了。您可以继续使用 Milvus Standalone 作为开发或测试环境,因为它很方便,同时运行托管 Milvus Distributed 的 K8s 集群。这可以支持您扩展到数百亿向量,并为特定工作负载(如高读取、低频写入或高写入、低读取场景)提供定制节点大小的灵活性。
-
边缘设备上的本地搜索
对于在边缘设备上搜索私有或敏感数据,您可以在设备上部署 Milvus Lite,而不需要依赖基于云的服务来进行文本或图像搜索。这适用于专有文档搜索或设备上物体检测等场景。
Milvus 部署模式的选择取决于您项目的阶段和规模。Milvus 为各种需求提供了灵活而强大的解决方案,从快速原型设计到大规模企业部署。
- Milvus Lite 推荐用于较小的数据集,最多几百万向量。
- Milvus Standalone 适合中等规模的数据集,可扩展到 1 亿向量。
- Milvus Distributed 专为大规模部署设计,能够处理从 1 亿到数百亿向量的数据集。
功能对比
功能 | Milvus Lite | Milvus Standalone | Milvus Distributed |
---|---|---|---|
SDK / 客户端库 | Python gRPC | Python Go Java Node.js C# RESTful | Python Java Go Node.js C# RESTful |
数据类型 | Dense Vector Sparse Vector Binary Vector Boolean Integer Floating Point VarChar Array JSON | Dense Vector Sparse Vector Binary Vector Boolean Integer Floating Point VarChar Array JSON | Dense Vector Sparse Vector Binary Vector Boolean Integer Floating Point VarChar Array JSON |
搜索能力 | Vector Search (ANN Search) Metadata Filtering Range Search Scalar Query Get Entities by Primary Key Hybrid Search | Vector Search (ANN Search) Metadata Filtering Range Search Scalar Query Get Entities by Primary Key Hybrid Search | Vector Search (ANN Search) Metadata Filtering Range Search Scalar Query Get Entities by Primary Key Hybrid Search |
CRUD 操作 | ✔️ | ✔️ | ✔️ |
高级数据管理 | N/A | Access Control Partition Partition Key | Access Control Partition Partition Key Physical Resource Grouping |
一致性级别 | Strong | Strong Bounded Staleness Session Eventual | Strong Bounded Staleness Session Eventual |