表与向量索引之间的数据同步
DynamoDB 会自动保持向量索引与其基表的同步。了解同步的工作方式有助于您预测搜索结果何时是完整的,以及为什么某个项目可能不会出现在结果中。
在现有表上回填索引
向已包含项目的表添加向量索引时,DynamoDB 会使用现有数据回填索引。DynamoDB 设置索引基础设施时,索引会首先转换为 IndexStatus CREATING。然后,当 DynamoDB 从现有基表数据填充索引时,它将转为 IndexStatus ACTIVE 并将 Backfilling 设置为 true。在此阶段,对基表的新写入将会复制到索引中,但在回填完成之前,SearchVectors 会返回错误。使用 DescribeTable 并等待直至 IndexStatus 为 ACTIVE 且 Backfilling 为 false 之后,再进行搜索。请参阅将向量索引添加到现有表。
持续进行的写入同步
索引处于活动状态后,DynamoDB 会将对基表的每个写入复制到向量索引中。以下行为会影响写入是否到达索引以及如何到达索引:
-
项目只有在包含有效的向量属性时,才会被复制到索引中。如果索引定义了分区键,则项目还必须包含该分区键属性;否则,在基表上写入会成功,但项目不会复制到索引中。
-
向量值按写入格式存储在基表中,但以 32 位浮点数(f32)精度存储在索引中。超过此精度的值,在复制到索引时会丢失精度。
-
当您从项目中删除向量属性或者删除项目时,对应的条目将从索引中移除。
有关完整的写入验证规则集合,请参阅写入带有向量数据的项目。
跨区域同步
当具有向量索引的表是全局表时,DynamoDB 会将任何副本区域中的写入复制到其他区域,并在其他区域中编制索引。DynamoDB 以异步方式将数据复制到向量索引。即使表使用多区域强一致性(MRSC),您在一个区域中写入的向量也不会立即出现在另一个区域的 SearchVectors 结果中。请参阅在全局表中使用向量索引。