本页面详细介绍了向量搜索功能和限制。
可用性
向量搜索功能适用于所有层级和所有受支持区域中的所有 Memorystore for Valkey 版本。
只有在 2024 年 9 月 13 日之后创建的实例启用了向量搜索功能。
索引限制
以下内容概述了索引的限制:
- 索引中的属性数量上限为 10。
- 向量的维度不得超过 32,768。
- HNSW 的 M 值不得超过 2M。
- HNSW 的 EF Construct 值不得超过 4096。
- HNSW 的 EF Runtime 值也不得超过 4096。
性能影响
在考虑向量搜索的性能时,需要考虑一些重要的变量。
节点类型
向量搜索通过集成专用于执行向量搜索操作的线程池来促进纵向伸缩。这意味着性能将与实例中每个节点的 vCPU 数量相关联。 如需详细了解每种节点类型可用的 vCPU 数量,请参阅 节点特征。
分片数
Memorystore for Valkey 为所有向量实现本地索引编制技术。这意味着存储在每个分片上的索引仅包含该分片上包含的文档。因此,索引编制速度和向量总数将与实例中的分片数呈线性关系。
由于每个本地索引仅包含单个分片的内容,因此搜索实例需要搜索实例中的每个分片并汇总结果。在向量数量稳定的情况下,由于每个本地索引中包含的向量较少,因此增加分片数将以对数方式提高 HNSW 索引的搜索性能,并以线性方式提高 FLAT 索引的搜索性能。
请注意,由于搜索所有分片所需的工作量增加,因此随着分片的增加,完成给定搜索请求的可观测延迟可能会增加。尽管如此,即使是最大的实例也支持个位数的毫秒级延迟。
副本数量
添加更多副本将允许对读取副本的搜索请求进行负载均衡,从而以线性方式提高搜索吞吐量。
扩缩事件
调整 Memorystore for Valkey 实例的大小时,索引中的文档将被移动,以将数据均匀分布到新的分片数中。发生这种情况时,跨节点移动的文档将在后台编制索引。伸缩操作完成后,您可以监控
mutation_queue_size在FT.INFO
输出中的值,以了解因调整实例大小而重新编制索引的进度。
内存消耗
向量会被复制,同时存储在键空间和向量搜索算法中。
交易
由于线程池执行任务的异步性质,向量搜索操作不遵循事务语义。