Link Search Menu Expand Document Documentation Menu

性能调优

本主题提供了用于提高近似 k-近邻 (ANN) 搜索的索引和搜索性能的性能调优建议。从高层面来看,k-NN 按照以下原则工作:

  • 向量索引是按 knn_vector 字段/Lucene 段对创建的。
  • 查询在分片中的段上按顺序执行(与任何其他 OpenSearch 查询一样)。
  • 协调节点从每个分片返回的邻居中选择最终的 size 个邻居。

以下部分提供了关于将 ANN 与使用评分脚本的精确 k-NN 进行比较的建议。

引擎和集群节点大小调整建议

用于 ANN 搜索的三种引擎各有特点,使其在特定情况下比其他引擎更适合使用。请使用以下信息帮助确定哪种引擎最能满足您的需求。

为了优化索引吞吐量,Faiss 是一个不错的选择。对于相对较小的数据集(高达数百万个向量),Lucene 引擎表现出更好的延迟和召回率。同时,与其它引擎相比,索引大小最小,这使其能够为数据节点使用较小的 AWS 实例。更多考虑事项,请参阅选择正确的方法内存估算

在考虑集群节点大小调整时,一般方法是首先在集群中建立索引的均匀分布。但是,还有其他考虑因素。为了帮助做出这些选择,您可以参考 OpenSearch 托管服务指南中的调整域大小部分。

提升召回率

召回率取决于多个因素,例如向量数量、维度、段等。搜索大量小段并聚合结果比搜索少量大段并聚合结果能带来更好的召回率。如果使用较小的算法参数,较大的原生库索引更有可能失去召回率。为算法参数选择更大的值应该有助于解决此问题,但这会牺牲搜索延迟和索引时间。重要的是要了解您的系统对延迟和准确性的要求,然后根据实验选择段的数量。

默认参数适用于更广泛的用例,但请务必在您自己的数据集上运行实验并选择合适的值。有关索引级设置,请参阅索引设置

ANN 与评分脚本的比较

标准 k-NN 查询和自定义评分选项的性能表现不同。使用一组代表性文档运行测试,以查看搜索结果和延迟是否符合您的预期。

如果初始过滤器将文档数量减少到不超过 20,000 个,则自定义评分效果最佳。增加分片数量可以改善延迟,但请务必将分片大小保持在推荐指南内。


相关文章

剩余 350 字符

有问题?

想贡献?