向量搜索功能和限制 - Amazon ElastiCache
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

向量搜索功能和限制

向量搜索可用性

Amazon ElastiCache 的矢量搜索在 Valkey 版本 8.2 中可用,适用于所有Amazon区域的基于节点的集群,无需支付额外费用。您还可以在现有集群上使用向量搜索功能,方法是从任意版本的 Valkey 或 Redis OSS 升级到 Valkey 8.2,只需单击几下,无需停机

目前,除具有数据分层的节点外,所有 ElastiCache 实例类型都可以使用矢量搜索。要在 t2、t3 和 t4g 实例上使用向量搜索功能,您需要将微型实例的内存预留增加到至少 50%,小型实例的内存预留至少增加到 30%。如需了解更多信息,请参阅此页面

参数限制

下表列出了各种向量搜索项目的限制:

向量搜索限制
Item 最大值
向量中的维数 32768
可以创建的索引数量 10
索引中的字段数量 50
FT.SEARCH TIMEOUT 子句(毫秒) 60000
每个索引的最大前缀数量 16
标签字段的最大长度 10000
数值字段的最大长度 256
HNSW M 参数 2000000
HNSW EF_CONSTRUCTION 参数 4096
HNSW EF_RUNTIME 参数 4096

操作限制

索引持久性和回填

更新过程包含三个步骤。第一步,修改 HASH 或 JSON 键并阻止发出请求的客户端。第二步在后台执行,更新包含修改后的键的每个索引。第三步,取消阻止客户端。因此,对于在与变更相同的连接上执行的查询操作,该更改会立即反映在搜索结果中。但是,插入或更新键后,可能短时间内不会出现在其他客户端的搜索结果中。在系统负载繁重的时期,数据发生 and/or 大量突变,可见性延迟可能会变得更长。

向量搜索功能保留索引定义和索引内容。系统会保存向量字段的索引,但不会保存 TAGS 和 NUMERIC 的索引,这意味着系统在外部加载索引时必须重新构建索引(完全同步或重新加载)。这意味着,在任何会导致节点启动或重新启动的操作请求或事件中,将从最新快照中恢复索引定义和内容。无需用户执行任何操作即可启动此操作。但是,对于 TAGS 和 NUMERIC 索引,重建过程会在数据恢复后立即作为回填操作执行。这在功能上等同于系统自动为每个定义的索引执行 FT.CREATE 命令。请注意,数据恢复后,很可能在索引回填完成之前,节点便可用于应用程序操作,这意味着应用程序将再次看到回填操作。

索引回填的完成在主索引和副本之间不同步。应用程序可能会意外看到这种不同步的情况,因此建议应用程序在启动搜索操作之前,先在主副本和所有副本上验证回填完成情况。

扩展限制

在扩展事件期间,随着数据的迁移,索引可能会被回填。这将降低搜索查询的召回率。

快照 import/export 和实时迁移

可以将具有搜索索引的一个集群中的 RDB 文件导入到另一个版本为 8.2 或更高版本的 ElastiCache Valkey 集群。新集群将在加载 RDB 文件时重新构建索引内容。但是,RDB 文件中存在搜索索引会限制该数据与较旧 Valkey 版本的兼容性。由向量搜索功能定义的搜索索引的格式只能由另一个版本为 Valkey 8.2 或更高版本的 ElastiCache 集群理解。但是,不包含索引的 RDB 文件不受这种限制。

在回填期间内存不足

与 Valkey OSS 写入操作类似,索引回填会受到限制。 out-of-memory如果引擎内存在回填过程中已满,则所有回填都将暂停。有可用内存后,回填过程会恢复。当由于内存不足导致回填暂停时,也可以删除索引。

事务

命令 FT.CREATEFT.DROPINDEXFT.ALIASADDFT.ALIASDELFT.ALIASUPDATE 不能在事务上下文中执行,也就是说,不能在 MULTI/EXEC 数据块或者 LUA 或 FUNCTION 脚本中执行。