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