本文档提供有关解决MongoDB Vector Search 问题的建议。如需有关MongoDB Vector Search 问题的直接帮助,您可以在 Reddit 或 Stack Overflow上的MongoDB社区上发起讨论,也可以联系支持。
无法在集群上使用 $vectorSearch
阶段
要使用 $vectorSearch
管道阶段查询集群,集群必须运行MongoDB 7.0.2+。如果您在不兼容的MongoDB版本上调用 $vectorSearch
,则可能会看到以下错误:
OperationFailure: $vectorSearch is not allowed with the current configuration. You may need to enable the corresponding feature flag.
要检查集群的 MongoDB 版本,请执行以下操作:
AtlasGoClusters在Atlas中,Go项目的 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含所需项目的组织。
如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。
在侧边栏中,单击 Database 标题下的 Clusters。
会显示集群页面。
找到要使用$vectorSearch
的集群的信息窗格。
请查阅信息窗格底部的Version号码。
如果您的集群运行的是早于6.0.11或7.0.2的 MongoDB 版本, 您必须升级集群的 MongoDB 版本。
慢查询
有关提高查询性能的建议,请参阅MongoDB Vector Search 基准。
$vectorSearch
未返回任何结果
如果 $vectorSearch
查询未返回结果,请执行以下操作:
确保您对数据和查询使用相同的嵌入模型。 如果嵌入查询使用的模型与嵌入数据时使用的模型不同,则
$vectorSearch
无法识别匹配项。确保MongoDB Vector Search 已完成构建。创建或更新MongoDB Vector Search索引时,索引索引处于初始同步状态。构建完成后,您可以开始查询集合中的数据。
Error during document retrieval
使用 LangChain 进行筛选时
当您使用 LangChain 执行带预过滤的 RAG时,可能会遇到以下错误:
Error during the document retrieval or generation process: MongoServerError: PlanExecutor error during aggregation :: caused by :: Path 'field' needs to be indexed as token
如果field
上存在索引,请确保您已将此索引创建为MongoDB Vector Search索引,而不是MongoDB Search索引。如果field
上不存在索引,则创建一个。要学习;了解有关使用MongoDB Vector Search 和 LangChain 实施 RAG 的更多信息,请参阅回答有关数据的问题。
Command not found
创建MongoDB Vector Search索引时
当您尝试以编程方式创建MongoDB Vector Search索引时,可能会遇到 Command not found
错误。出现此错误的原因有两个:
您对运行6.0.11 或 7.0.2 之前的MongoDB版本的集群运行该命令。在这种情况下,您必须升级集群的MongoDB版本才能为集群启用MongoDB Vector Search。
针对
M0
免费层级集群运行该命令。在这种情况下,只要集群运行的是兼容的MongoDB版本,您就可以使用Atlas用户界面创建MongoDB Vector Search索引。
无法筛选给定字段
MongoDB Vector Search 目前仅支持对具有布尔值、日期、数字、ObjectId、字符串和 UUID 值的字段进行筛选。 要学习;了解更多信息,请参阅关于 filter
类型。