Milvus是一个高性能、可扩展的向量数据库,支持各种规模的用例,从在Jupyter Notebooks中本地运行的演示到处理数百亿向量的大规模Kubernetes集群。目前,Milvus提供三种部署选项:Milvus Lite、Milvus Standalone和Milvus Distributed。
一、Milvus Lite
Milvus Lite是一个Python库,可以导入到你的应用程序中。作为Milvus的轻量级版本,它非常适合在 Jupyter Notebooks中快速原型设计,或者在资源有限的智能设备上运行。Milvus Lite支持的API与其他Milvus部署相同。与Milvus Lite交互的客户端代码也可以与其他部署模式下的Milvus实例一起工作。
要将Milvus Lite集成到应用程序中,请运行以安装它,并使用语句实例化一个包含所有数据的本地文件。
!pip install pymilvus from milvus import MilvusClient milvus_client = MilvusClient("./demo.db")
二、Milvus Standalone
Milvus Standalone是一个单机服务器部署。Milvus Standalone的所有组件都打包在一个Docker镜像中,方便部署。如果你有生产工作负载,但不喜欢使用Kubernetes,那么在内存充足的单机上运行Milvus Standalone是个不错的选择。此外,Milvus Standalone通过主从复制支持高可用性。
三、Milvus Distributed
Milvus Distributed可以部署在Kubernetes集群上。此部署采用云原生架构,其中引入负载和搜索查询由隔离节点单独处理,从而为关键组件提供冗余。它提供了最高的可扩展性和可用性,以及自定义每个组件中分配的资源的灵活性。Milvus Distributed是企业用户在生产环境中运行大规模向量搜索系统的首选。
四、如何选择Milvus版本
1、小规模生产
对于前期生产来说,当项目仍在寻求产品与市场的契合度,敏捷性比可扩展性更重要时,MilvusStandalone是最好的选择。如果有足够的机器资源,它仍然可以扩展到100M向量,同时与维护K8s集群相比,它需要的DevOps要少得多。
2、大规模生产
随着业务快速增长,数据规模超过单台服务器的容量,是时候考虑使用Milvus Distributed了。为了方便起见,可以继续使用Milvus Standalone进行开发或暂存环境,并操作运行Milvus Distributed的 K8s 集群。这使能够处理数百亿个向量,并为特定工作负载定制节点大小提供了灵活性,例如高读取、不频繁写入或高写入、低读取情况。
3、边缘设备上的本地搜索
对于边缘设备上的私有或敏感搜索,可以在设备上部署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# | Python, Java, Go, Node.js, C# |
数据类型 | 密集向量, 稀疏向量, 二进制向量, 布尔值, 整数, 浮点数, VarChar, 数组, JSON | 密集向量, 稀疏向量, 二进制向量, 布尔值, 整数, 浮点数, VarChar, 数组, JSON | 密集向量, 稀疏向量, 二进制向量, 布尔值, 整数, 浮点数, VarChar, 数组, JSON |
搜索功能 | 向量搜索(ANN Search), 元数据过滤, 范围搜索, 标量查询, 按主键, 获取实体, 混合搜索 | 向量搜索(ANN Search), 元数据过滤, 范围搜索, 标量查询, 按主键, 获取实体, 混合搜索 | 向量搜索(ANN Search), 元数据过滤, 范围搜索, 标量查询, 按主键, 获取实体, 混合搜索 |
CRUD 操作 | ✔️ | ✔️ | ✔️ |
高级数据管理 | N/A | 访问控制, 分区, 分区键 | 访问控制, 分区, 分区键, 物理资源分组 |
一致性级别 | 强 | 强, 有限过期, 会话 | 强, 有限过期, 会话, 最终 |