MongoDB Vector Searchmongot 通过在MongoDB 数据库部署() 的同时部署 进程,在Kubernetes环境中启用AI驱动的语义搜索功能。mongod mongot进程管理向量索引,从数据库获取数据,并处理$vectorSearch 查询。这样一来,在提供高级搜索功能的同时,就无需保持不同的系统同步。
要部署Vector Search,请应用MongoDBSearch 自定义资源 (CR), Kubernetes Operator 会拾取并使用该资源来部署mongot Pod 并请求在 spec 中指定的持久存储。
有关部署过程,请参阅部署MongoDB Search 和 Vector Search。
进程mongot
每个 mongot进程都有自己的持久卷,不与数据库或其他搜索节点共享。存储用于维护向量索引,而向量索引是根据持续源自数据库的数据构建的。索引定义(元数据)存储在数据库中。
mongot 执行以下操作:
管理向量索引。
mongot负责更新数据库中的索引定义。从数据库中获取数据。
mongot节点与数据库建立永久连接,以便实时更新数据库中的索引。处理向量搜索查询。
当
mongod收到$vectorSearch查询时,它会将查询定向到mongot节点之一。接收查询的mongot处理查询,聚合数据,并将结果返回给mongod,后者将结果转发给用户。
mongot 组件与单个MongoDB副本集紧密耦合,不能在多个数据库或副本集之间共享。每个副本集部署都有自己的专用搜索节点。
网络
mongot 和 mongod 之间的网络连接是双向的:
mongot建立与副本集的连接,以获取用于构建索引和运行查询的数据。mongod连接到mongot以转发与搜索相关的操作,例如索引管理和查询数据。
mongod 充当所有搜索查询的代理。您从不直接与 mongot交互。
Operator 管理的部署
当 mongot 和 mongod 进程同时部署在Kubernetes集群内时, Kubernetes Operator 会自动为这两个进程执行配置。具体来说, Kubernetes Operator:
使用 查找 MongoDBSearch 引用的MongoDB CR,或根据命名约定查找与
spec.source.mongodbResourceRefMongoDBSearch 同名的MongoDB CR。在 YAML 文件中生成
mongot配置,并将其保存到名为<MongoDBSearch.metadata.name>-search-config的配置映射中。部署名为 的 Vector Search
<MongoDBSearch.metadata.name>-search有状态设立,并根据spec.persistencespec.resourceRequirementsCR 中的 和 配置存储和资源要求。通过添加必要的
setParameter选项(包括mongot主机的主机名和端口号)来更新每个mongod进程的配置。
外部MongoDB部署
当MongoDB副本集位于Kubernetes外部时,您可以使用Kubernetes Operator部署mongot 并手动执行一些步骤。 Kubernetes Operator 会处理搜索Pod 的配置,但您必须重新配置MongoDB节点和网络。
安全性
如果MongoDB服务器位于Kubernetes集群内,则Kubernetes Operator 会自动为 Vector Search 设置密钥文件身份验证。如果MongoDB服务器位于外部,则必须创建一个包含副本集密钥文件档案的Kubernetes密钥,并在 MongoDBSearch CR 中引用它。
限制
您无法在以下架构上部署Vector Search:
IBM Power (ppc64le)
IBM Z (s390x)
提示
部署MongoDB Search 和 Vector Search — 部署MongoDB Search 和 Vector Search
MongoDB Search 和 Vector Search 设置 — MongoDBSearch CR 设置