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