Docs 菜单
Docs 主页
/
MongoDB Atlas
/

提高向量搜索性能

在此页面上

  • 减少向量维度
  • 运行查询时避免对向量建立索引
  • 预过滤数据
  • 使用专用搜索节点
  • 从结果中排除向量字段
  • 确保有足够的内存
  • 预热文件系统缓存

Atlas Vector Search使您能够执行 ANN查询, Atlas Search查询与所选产品相似的结果, Atlas Search查询图像等。 要提高索引速度和查询性能,请查看以下最佳实践。

Atlas Vector Search 最多支持 4096 (含)向量维度。 然而,向量Atlas Search索引和查询的计算量很大,因为较大的向量需要更多的浮点比较。 因此,在可能的情况下,我们建议在确保可以衡量更改嵌入模型对向量查询准确性的影响后,减少维数。

向量嵌入在索引期间会消耗计算资源。我们建议避免在向量搜索期间编制索引或重新索引。如果您决定更改生成索引向量的嵌入模型,我们建议您将新向量重新编入一个新索引,而不是更新当前使用的索引。

如果向量更多或维度更高,则可以缩小语义搜索的范围,并确保不会考虑所有向量进行比较。我们建议在filter $vectorSearch管道中包含 选项,该管道执行预过滤以减少要执行向量搜索的文档数量。此外,请考虑极高维向量的性能影响,因为大型数组可能会降低查询性能。

如果部署mongodmongot 进程部署在同一节点上,则进程之间可能会出现资源争用。为了优化Atlas Vector Search查询的性能,我们建议您在专用搜索节点上部署mongot 进程。这不仅有助于避免mongotmongod 进程之间的资源争用,而且默认为搜索节点上的 $vectorSearch查询启用并行段搜索。

您可以请求结果中文档的现有字段,以及在 $project阶段返回新计算的字段。 要提高查询性能,请使用$project阶段审慎选择要在结果中返回的字段,除非您需要结果中的所有字段。 我们建议在$project阶段排除向量字段,因为向量嵌入可能很大,会影响返回结果的查询延迟。

当矢量数据保存在内存中时,分层可导航小世界 可以高效运行。您必须确保数据节点有足够的RAM来保存向量数据和索引。我们建议部署单独的搜索节点以实现工作负载隔离性,而不进行数据隔离性,这样可以更有效地为向量搜索使用案例使用内存。

执行向量搜索时,当您遍历分层导航小世界图表时,您的查询最初会在磁盘上执行随机查找,并将向量值读入内存。这会导致初始查询出现非常高的延迟。当分层导航小世界遍历将所有已索引向量读入内存时,延迟会有所改善,这样在后续查询时就能更快地访问这些向量。

但是,在进行大型写入或重建索引时,必须重复此缓存预热进程。

后退

API 资源