如何选择适合您AI应用的Milvus部署模式
Milvus是一个开源向量数据库,能够存储、索引和检索数十亿规模的向量嵌入。它也是检索增强型生成(RAG)不可或缺的组件,RAG是一种流行且有效的方法,用于减轻大型语言模型(LLMs)中的幻觉问题。
与其他开源向量搜索项目如Qdrant、Weaviate和Chroma不同,Milvus为开发者提供了三种主要的部署选项,以适应不同大小的数据集、用例和业务需求。虽然拥有多种选择是一项福利,但也可能有点压倒性。许多开发者不确定如何为他们特定的AI应用选择最佳的部署模式。在这篇博客文章中,我们将提供一个清晰详细的指南,帮助您为您的项目选择正确的Milvus版本。
Milvus Lite与Standalone与Distributed
Milvus提供了三种部署选项:Milvus Lite、Standalone和Distributed。
Milvus Lite
Milvus Lite是Milvus的Python库和超轻量级版本。它非常适合在Python或笔记本环境中进行快速原型设计,以及进行小规模的本地实验。您可以直接通过pymilvus
包使用一行pip install pymilvus
进行安装。无需运行单独的服务器,它使用本地文件处理数据持久性,使其易于设置和使用。
Milvus Standalone
Milvus Standalone是Milvus的单节点部署选项,使用客户端-服务器模型。您可以将其视为MySQL的Milvus等效物,而Milvus Lite则类似于SQLite。所有Milvus Standalone组件都包含在一个Docker映像中,使服务器部署变得简单直接。在具有足够内存的机器上运行单个Milvus Standalone实例将适用于大多数不需要广泛扩展的项目。此外,Milvus Standalone提供了主备份模式的高可用性,使其成为生产环境的可靠选择。
Milvus Distributed
Milvus Distributed是Milvus的分布式模式,非常适合企业用户构建大规模向量数据库系统或向量数据平台。它采用云原生架构,采用读写分离来优化性能。Milvus Distributed的关键组件配备了内置备份和额外实例,因此如果一部分失败,其他部分可以无缝接管,确保系统保持不间断。这种冗余水平增强了可靠性,并保证了持续可用性。在三种部署选项中,Milvus Distributed提供了最高的可扩展性和可用性。它还提供了组件级弹性,允许您根据特定的业务负载需求独立扩展Proxy、查询节点和索引节点。
下图总结了Milvus Lite、Milvus Standalone和Milvus Distributed的关键能力并进行了比较。
屏幕截图 2024-11-12 204726.png
表:比较Milvus Lite、Milvus Standalone和Milvus Distributed
如何选择适合每个开发阶段的正确Milvus部署
选择合适的Milvus部署选项取决于您的应用开发阶段。这些阶段包括快速原型设计、早期生产部署和大规模生产部署。让我们详细探讨每个阶段。
Milvus Lite用于AI应用的快速原型设计
在开发和原型设计AI应用,如个人助理、语义搜索引擎或端到端RAG时,应用速度和灵活性通常比性能和稳定性更受重视。因此,Milvus Lite是这个阶段的理想选择。它允许您在笔记本环境中快速构建端到端功能,并进行以测试有效性为重点的轻量级实验。
过渡到Milvus Standalone以在大型数据集上进行验证
如果您需要在大型数据集上验证结果,Milvus Standalone是下一个合乎逻辑的步骤。Milvus Lite和Standalone旨在无缝协作,提供从本地原型设计到基于服务器的验证的轻松过渡。由于Milvus Lite、Standalone和Distributed共享相同的客户端接口,您可以重用相同的业务逻辑,用于本地和大规模数据验证。此外,Milvus Standalone支持多用户,使敏捷开发团队更容易使用单个实例进行协作或共享数据。
Milvus Standalone用于早期生产部署
在应用生产的早期阶段,当您的项目刚刚启动并仍在寻找其产品市场契合时,业务请求和数据量相对较低。重点应该放在业务有效性和竞争力上,而不是基础设施上。Milvus Standalone非常适合这个阶段。对于在线服务,在主备份模式下部署Milvus确保了可靠性。对于测试环境,通常单个节点部署就足够了。
注意:Milvus Standalone不提供表之间的物理资源隔离。如果您有两个关键的、对性能敏感的应用,最好使用单独的Milvus Standalone实例来隔离它们的数据。虽然这可能会导致一些资源效率低下,但与在这个阶段管理Milvus Distributed设置相比,它更具成本效益。
您可以继续使用Milvus Lite进行特定的调试任务,但避免在部署了Milvus Standalone的生产环境中这样做,因为这可能会引入性能和稳定性风险。
Milvus Distributed用于大规模生产部署
当您的数据超出单个服务器的容量或正在迅速扩展时,是时候准备未来的可扩展性了。Milvus Distributed在这个阶段变得至关重要。
最佳实践包括在开始时同时运行Milvus Standalone和Milvus Distributed实例,并逐渐将数据流量从Standalone转移到Distributed。确保至少监控系统一个月,直到Milvus Distributed稳定运行。
在这个阶段,您还需要加强运营管理。Milvus Distributed本地支持Prometheus,并提供Attu等管理工具。虽然Milvus提供了广泛的专用运营工具和生态系统集成,但管理大型分布式系统可能具有挑战性。我们鼓励您加入开放且活跃的Milvus社区,寻求支持,贡献代码,参加活动,并做出许多其他有价值的贡献。
如何选择适合您的向量数据集的正确部署
Milvus旨在随着项目的发展而扩展,提供不同的部署模式以满足您数据集不断变化的需求。为了澄清它们的差异,我们将分解Milvus Lite、Standalone和Distributed如何相互比较,更重要的是,与市场上的其他开源向量数据库,如Chroma、Weaviate和Qdrant进行比较。
自去年以来,Chroma在开发者中获得了关注,特别是对于小规模项目。像Milvus Lite一样,Chroma是一个轻量级向量数据库。它最适合处理少于数十万向量的应用。Chroma提供基本功能,如向量数据插入和相似性搜索,使其成为快速原型设计的轻量级选项。然而,其有限的功能集和缺乏生产准备意味着即使Milvus Lite也提供了更强大的能力。
对于生产就绪的解决方案,Milvus Standalone和Distributed以及Weaviate和Qdrant是更强的选择。Weaviate以其与AI应用的集成而闻名,为各种上游模型提供原生支持。另一方面,Qdrant专注于核心向量数据库功能,并强调向量搜索性能。然而,根据VectorDBBench的说法,一个开源向量数据库基准测试工具,Milvus在搜索性能方面仍然优于Qdrant,使其成为这个领域的顶级竞争者。
以下是每个向量数据库适合的数据规模的分解:
Figure_2_Milvus_vs_Chroma_vs_Qdrant_vs_Weaviate_for_vector_storage_and_retrieval_5877bdd81a.png
图2-Milvus与Chroma与Qdrant与Weaviate在向量存储和检索方面的比较
- Milvus Lite和Chroma适用于数据规模高达一百万个向量。它们旨在易于使用,为了简单性牺牲了一些系统能力。
- Milvus Standalone、Weaviate和Qdrant:最适合数据规模从一百万到数千万向量。这些数据库在强大的系统能力和易用性之间取得了平衡,适合早期生产阶段。
- Milvus Distributed:旨在处理数千万规模及以上的数据。Milvus社区已验证其支持十亿规模的用例,现在正在实施涉及数千亿向量的情况。
虽然其他向量数据库如Chroma、Weaviate和Qdrant有自己的优势,但它们在提供与Milvus相同的灵活性、可扩展性和长期支持方面往往不足。随着项目的增长,切换向量数据库可能变得成本高昂且复杂。Milvus凭借其多样化的部署选项,支持各种数据规模的混合工作流程,确保您不会超出数据库解决方案的规模。
Milvus Lite、Standalone和Distributed底层组件
由于共享底层组件,Milvus在其三种部署模式中提供了一致的用户体验和统一的发展。这种设计确保了无论您是使用Milvus Lite进行轻量级任务还是使用Milvus Distributed进行大规模操作,都能从相同的核心功能中受益。
下图说明了这些Milvus部署模式所涵盖的功能组件:
Figure_2_Milvus_Lite_vs_Standalone_vs_Distributed_on_underlying_components_bb98880a4f.png
图2-Milvus Lite与Standalone与Distributed在底层组件上的区别
Milvus Lite主要封装了搜索引擎,同时还提供了数据插入、持久性、索引构建和元数据管理等基本任务的本地实现。将Milvus Lite视为一个强大的库,而不是一个简单的工具。与Chroma等更基本的库相比,Milvus Lite的搜索引擎提供了更优越的性能和查询能力,使其成为向量嵌入的理想选择。如果您正在寻找FAISS或HNSWLib的替代品,Milvus Lite是一个强有力的候选者,因为它本地集成了主流的向量搜索算法库,并经过了广泛的性能和功能优化。
Milvus Standalone包括Milvus系统的所有功能组件,除了负载均衡和多节点管理(协调器)。这些组件在同一Docker环境中运行,促进了高效的本地通信,并最小化了服务器延迟。
Milvus Distributed拥有一整套功能组件。虽然Standalone和Distributed模式都包含具有相同功能的Proxy、查询节点、数据节点和索引节点,但Milvus Distributed提供了更大的部署灵活性。每个功能组件可以多次部署以处理更高的负载,多个组件可以部署在同一物理节点上以共享资源,或部署在不同节点上以确保资源隔离。此外,Distributed模式允许每个组件独立扩展,使您能够适应不同的负载特性,并有效地提高资源利用率。
总结
在这篇文章中,我们探讨了Milvus提供的三种部署选项:Milvus Lite、Standalone和Distributed。每种部署模式都旨在满足不同的开发阶段、数据大小和用例,确保Milvus可以随着您的项目一起扩展。
- Milvus Lite适合在Python环境中进行快速原型设计和小规模实验。它易于设置和使用,非常适合需要轻量级但功能强大的解决方案进行测试和开发的开发者。
- Milvus Standalone是那些准备从原型设计过渡到生产的下一步。这个单节点部署选项为早期生产环境提供了所有必要的组件,平衡了性能和资源效率。它非常适合数据量适中且用户需求不断增长的项目。
- Milvus Distributed旨在用于需要高可用性、可扩展性和灵活性的大规模生产部署。它是企业和处理大量数据的应用程序的理想选择,确保您的向量数据库可以随着业务需求的增长而增长。
技术干货
关系数据库与向量数据库
在本文中,我们将探索向量数据库,并与传统关系数据库进行比较,帮助您做出明智的决策。
2024-11-05技术干货
使用 Neo4j 和 Milvus 搭建 GraphRAG Agent
本文详细介绍了如何使用 Neo4j 图数据库和 Milvus 向量数据库搭建 GraphRAG Agent。这个 Agent 通过结合图数据库和向量搜索的强大功能,能够提供准确且与用户查询十分相关的答案。在本文示例中,我们将使用 LangGraph、Llama 3.1 8B 配合 Ollama 和 GPT-4o。
2024-11-15技术干货
驾驭机器学习管理的挑战:成功所需的工具与洞察
随着机器学习(ML)以惊人的速度持续进步,管理和版本控制大规模数据集和模型的复杂性呈指数级增长。虽然开发者长期以来依赖于像Git这样的工具来进行软件开发中的版本控制,但机器学习的独特挑战需要更专业的解决方案。与软件不同,软件的代码库可以相对容易地进行版本控制和管理,而ML模型、数据集和工件往往缺乏统一的行业标准来进行版本控制和管理。
2024-11-05