查看部署选项
您可以使用不同的部署类型、云提供商和集群层来构建 Atlas 集群,以满足预生产或生产环境的需求。 使用这些建议来选择部署类型、云提供商和区域以及用于执行向量Atlas Search的集群和Atlas Search层。
environment | 部署类型 | 集群层 | 云提供商地区 | 节点架构 |
---|---|---|---|---|
测试查询 | Shared or dedicated cluster Local deployment | M0 , M2 , M5 , or higher tierN/A | All N/A | MongoDB和Atlas Search进程在同一节点上运行 |
应用程序原型设计 | 专用集群 |
| 所有 | MongoDB和Atlas Search进程在同一节点上运行 |
生产 | 具有独立搜索节点的专用集群 |
| 某些 地区的 AWS 和Azure或所有地区的 Google Cloud | MongoDB和Atlas Search进程在不同节点上运行 |
要了解有关这些部署模型的更多信息,请查看以下部分:
测试和原型环境
为了测试您的向量搜索查询和构建应用程序原型,我们建议使用以下配置。
部署类型
要测试 Atlas Vector Search 查询,您可以部署共享或专用集群或本地 Atlas 部署。
如果您希望在本地测试 Atlas Vector Search 查询,则可以使用 Atlas CLI 部署一个托管在本地计算机上的单节点副本集。要开始使用,请完成 Atlas Vector Search 快速入门,然后选择本地部署标签页。
当您的应用程序准备上线时,请使用实时迁移功能将本地 Atlas 部署迁移到生产环境。本地部署受本地计算机的 CPU、内存和存储资源的限制。
节点架构
在此部署模型中,搜索 mongot
进程与 Atlas 集群每个节点上的 mongod
一起运行。mongod
进程将查询路由到同一节点上的 mongot
,并且它们共享相同的资源。
默认情况下,Atlas 在创建第一个 Atlas Vector Search 索引时,在运行 mongod
进程的同一节点上启用搜索 mongot
进程。mongot
流程执行关于 mongot
流程中描述的操作。
限制
您可能会遇到数据库 mongod
和搜索 mongot
进程之间的资源争用。这可能会对索引性能和查询延迟产生负面影响。我们建议这种部署模式仅用于测试和原型开发环境。对于生产就绪型应用程序和相关的搜索工作负载,我们建议迁移到专用的搜索节点。
生产环境
对于生产就绪的应用程序,我们建议使用以下集群配置。
部署类型
对于生产就绪的应用程序,您需要专用的集群。
Cluster Tiers
专用集群包括 M10
和更高层级。M10
和 M20
层级适用于开发和生产环境。但是,较高的层级可以处理大型数据集和生产工作负载。我们建议您还为搜索工作负载部署专用的搜索节点。这样,您就可以独立且适当地扩展搜索部署。
云提供商和地区
搜索节点在 Google Cloud 的所有区域中可用,但仅在部分 AWS 和Azure区域中可用。您必须选择搜索节点可用于您的部署的云提供商和地区。
所有集群层在支持的云提供商区域均可使用。您选择的云提供商和区域会影响集群可用的配置选项和搜索层级以及运行集群的成本。
节点架构
在此部署模型中,mongot
进程在搜索节点上运行,搜索节点与运行 mongod
进程的群集节点是分开的。Atlas 为每个集群或集群上的每个分片部署搜索节点。
例如,如果您为具有 3 个分片的集群部署 2 个搜索节点,则 Atlas 会部署 6 个搜索节点,每个分片 2 个。您还可以配置搜索节点的数量,以及为每个搜索节点配置的资源量。
部署单独的搜索节点时,Atlas 会自动为每个 mongot
分配一个 mongod
以进行索引。mongot
会与 mongod
通信,以侦听并同步其所存储索引的索引更改。Atlas Vector Search 对查询进行索引和处理的方式与 mongod
和 mongot
进程在同一节点上运行时类似。要了解更多信息,请参阅如何为向量搜索的字段建立索引和运行向量搜索查询。要了解有关单独部署搜索节点的更多信息,请参阅用于隔离工作负载的搜索节点。
当您迁移到搜索节点时,Atlas 会部署搜索节点,但不会在节点上提供查询,直到它在搜索节点上的集群上成功构建所有索引。当 Atlas 在新节点上构建索引时,它会继续使用集群节点上的索引提供查询。仅当 Atlas 在搜索节点上成功构建索引并删除集群节点上的索引后,它才会开始从搜索节点提供查询服务。
如果删除集群上的所有搜索节点,则在处理搜索查询结果时会出现中断。要了解更多信息,请参阅修改集群。如果删除 Atlas 集群,Atlas 会暂停,然后删除所有关联的 Atlas Vector Search 部署(mongot
进程)。
收益分析
此部署模型具有以下优点:
高效利用资源,同时确保资源对Atlas Search工作负载具有高可用性。
Atlas Search部署的大小和扩展独立于数据库部署。
自动并行处理 Atlas Vector Search 查询,从而缩短响应时间,尤其是在处理大型数据集时。要了解更多信息,请参阅跨分段执行并行查询。
调整集群大小和扩展
Atlas Vector Search 将整个索引保存在内存中,因此您需要确保有足够的内存来容纳 Atlas Vector Search 索引和 JVM。每个索引都是所索引向量和附加元数据的组合。索引大小主要取决于所索引向量的大小,元数据空间通常相对较小。
考虑单个向量的以下要求:
嵌入模型 | 向量维度 | 空间要求 |
---|---|---|
OpenAI | 1536 | 6 kb |
Google | 768 | 3 kb |
Cohere | 1024 | 1.07kb |
BinData
vector
子类型int8
或int1
量化向量。要学习;了解更多信息,请参阅摄取量化向量。
所需空间与要索引的向量数量和向量维数呈线性关系。您还可以使用 Search Index Size 指标来确定搜索节点上所需的空间和内存量。
如果使用 BinData 或量化向量进行摄取,则浮点向量在mongod
上的存储量减少约66 %。 的RAM标量减少了mongot
3.75x,二进制减少了 x,因为向量值分别缩小了24 4x 和24 x,但分层可导航小世界 图表本身不会缩小。用于重新评分的全保真向量仅使用少量内存,不需要像索引一样保存在缓存中。但是,这些向量存储在磁盘上。因此,您需要的搜索节点能够分别为标量和二进制量化提供大约4 x/24 x 的存储与RAM比率。
部署专用搜索节点时,您可以选择不同的搜索层级。每个搜索层级都有默认的 RAM 容量、存储容量和 CPU。这样,您就可以独立于数据库部署来调整集群的大小和扩展。要单独扩展搜索部署,您可以随时对集群配置进行以下更改:
调整集群上的 Search Nodes 数量。
通过更改 层来调整节点的 CPU、RAMAtlas Search 和存储。
注意
要进一步了解搜索节点和搜索层级的成本,请展开 View all plan features 并点击 MongoDB 定价页面中的 Atlas Vector Search。
我们建议您的节点的 RAM 至少要比 Atlas Vector Search 索引的总大小大 10%。我们还建议您确保有足够的可用 CPU。查询延迟取决于可用 CPU 的数量,这可能会严重影响可提高查询性能的内部并发级别。
例子
假设您有 1M 个 768 维向量,大小约为 3GB。S30(低 CPU)和 S20(高 CPU)搜索层级都有足够的 RAM 来支持索引。我们建议不要在 S30(低 CPU)搜索层级上部署,而是在 S20(高 CPU)搜索层级上部署,因为 S20(高 CPU)搜索层级有更多可用的 CPU 来并发运行查询。
迁移到专用Atlas Search节点
专用搜索节点允许您独立于集群来调整搜索部署的大小和扩展。 它还消除了在同一节点上运行数据库和搜索进程的集群中可能出现的资源争用现象。
要迁移到专用搜索节点,请对您的部署进行以下更改:
如果您的部署当前使用共享层级,请将您的集群升级到更高的层级。专用搜索节点仅支持
M10
及更高集群层级。要了解有关迁移到不同集群层的更多信息,请参阅修改Cluster Tier 。专用搜索节点在部分 AWS 和Azure区域以及所有支持的 Google Cloud 区域中可用。确保将集群部署在搜索节点也可用的区域。如果您的现有集群位于搜索节点不可用的地区,请将集群迁移到搜索节点可用的地区。要学习;了解更多信息,请参阅云提供商区域。
启用 Search Nodes for workload isolation 并配置搜索节点。要了解更多信息,请参阅添加搜索节点。