本文档提供有关解决MongoDB 向量搜索 问题的建议。如需有关MongoDB 向量搜索 问题的直接帮助,您可以在 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 版本,请执行以下操作:
在Atlas中,转到项目的 Clusters 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含所需项目的组织。
如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。
在侧边栏中,单击 Database 标题下的 Clusters。
会显示集群页面。
找到要使用$vectorSearch的集群的信息窗格。
请查阅信息窗格底部的Version号码。
如果您的集群运行的是早于 6.0.11 或 7.0.2 的MongoDB版本,您必须升级集群的MongoDB版本。
慢查询
有关提高查询性能的建议,请参阅 MongoDB 向量搜索的基准。
$vectorSearch 未返回任何结果
如果 $vectorSearch 查询未返回结果,请执行以下操作:
确保您对数据和查询使用相同的嵌入模型。 如果嵌入查询使用的模型与嵌入数据时使用的模型不同,则
$vectorSearch无法识别匹配项。确保MongoDB 向量搜索已完成构建。创建或更新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 向量搜索索引,而不是MongoDB Search索引。如果 field 上不存在索引,则创建一个。要学习有关使用 MongoDB 向量搜索和 LangChain 实施 RAG 的更多信息,请参阅 回答有关数据的问题。
Command not found 创建MongoDB Vector Search索引时
当您尝试以编程方式创建MongoDB Vector Search索引时,可能会遇到 Command not found 错误。出现此错误的原因有两个:
您对运行6.0.11 或 7.0.2 之前的MongoDB版本的集群运行该命令。在这种情况下,您必须升级集群的MongoDB版本才能为集群启用MongoDB 向量搜索。
您可以针对免费集群(以前称为
M0)运行该命令。在这种情况下,只要集群运行的是兼容的MongoDB版本,您就可以使用Atlas用户界面创建MongoDB Vector Search索引。
无法筛选给定字段
MongoDB Vector Search 目前仅支持对具有布尔值、日期、数字、ObjectId、字符串和 UUID 值的字段进行筛选。 要学习;了解更多信息,请参阅关于 filter 类型。