内容提要
Amazon S3 Vectors 新增元数据预筛选功能,在相似度搜索前先按元数据过滤,提升筛选查询召回率,高选择性场景下匹配量可达原先5倍。支持 $startsWith 前缀匹配,每向量2KB元数据,单查询最多100个约束,无额外费用且无需重新摄取。适用于法律、金融、媒体及智能体等场景,现有索引可通过 UpdateIndexMode 启用。
延伸解读
预筛选与后筛选:召回率差异的关键
文章指出,在 CLASSIC 索引上,S3 Vectors 同时执行向量搜索和筛选条件评估,即先检索候选向量再按条件过滤,这可能导致符合筛选条件的向量未被召回。而 ENHANCED 索引先解析筛选条件,仅搜索匹配的向量,从而提升召回率。对于高选择性筛选,预筛选返回的匹配向量数量最多可达 CLASSIC 的 5 倍。这意味着在租户隔离、权限控制等场景下,预筛选能显著改善结果完整性。
现有索引升级:无需重新摄取,但需注意默认模式
现有索引可通过 UpdateIndexMode 切换为 ENHANCED,无需重新摄取向量,查询方式不变,且新运算符立即可用。但需注意:2026 年 9 月 30 日当天或之后创建的向量存储桶中,新索引默认使用 ENHANCED;此前存在的存储桶中的索引(包括之后新建的)在设置存储桶默认值前仍使用 CLASSIC。因此,若希望新索引自动启用预筛选,需通过 put-vector-bucket-default-index-mode 设置默认模式。
筛选条件约束上限与应对策略
单个查询最多支持 100 个筛选条件约束,按筛选条件评估的值计算。若超出,文章建议合并筛选条件,例如用单个 caseId 字段替换包含 300 个值的 $in 查询,或拆分成多个较小查询并行运行,再按距离合并结果。这提示在设计多租户或复杂过滤逻辑时,需提前规划元数据字段结构,避免因约束过多而影响查询效率或需要额外处理。
$startsWith 前缀匹配的适用场景
预筛选新增 $startsWith 运算符,用于路径、URL 和分层键的前缀匹配。例如,法律文档存储可将搜索范围限定到特定案件文件夹:{"$startsWith": {"document_id": "matter-4417/exhibits/"}}。该运算符与等值、数值范围、集成员资格、存在性检查及布尔逻辑共同构成筛选能力。对于按文件夹结构或命名空间组织的数据,$startsWith 提供了一种简洁的范围缩小方式,有助于提升筛选搜索的召回率。
Q&A
Amazon S3 Vectors 的元数据预筛选功能是什么?
元数据预筛选是 Amazon S3 Vectors 新增的功能,它在相似度搜索之前先评估元数据筛选条件,从而提高筛选查询的召回率。它支持 $startsWith 前缀匹配,每个向量最多可承载 2 KB 的可筛选元数据,单个查询最多支持 100 个筛选条件约束,且无额外费用、无需重新摄取、不会更改查询。
预筛选如何提高筛选搜索的召回率?
预筛选在相似度搜索之前先解析筛选条件,仅搜索匹配的向量,因此结果是从所有匹配向量中抽取的,而不是从整个索引中抽取。对于高选择性筛选条件,预筛选返回的匹配向量数量最多为此前在 CLASSIC 索引上执行同一查询时的 5 倍。
哪些场景适合使用元数据预筛选?
适合结果必须相关且范围正确的场景,包括:法律和专业服务(按客户、案件号、文件夹路径筛选文档)、金融服务(按签发者、文档类型、出版日期筛选)、媒体和娱乐(按内容分级和区域许可筛选)、智能体应用程序(按所有者、文档集、时间戳筛选)。
如何为现有索引启用预筛选?
对现有索引调用 UpdateIndexMode 命令,将索引模式设置为 ENHANCED,例如:aws s3vectors update-index-mode --vector-bucket-name my-vector-bucket --index-name product-catalog --index-mode ENHANCED。现有向量不会被重新摄取,查询不会更改,新的筛选条件运算符立即可用。
预筛选支持哪些筛选条件运算符?
预筛选支持等值匹配、数值范围、集成员资格、存在性检查、使用 $and 和 $or 的布尔逻辑,以及新增的 $startsWith 前缀匹配运算符,用于筛选路径、URL 和分层键。
使用预筛选有哪些限制或注意事项?
单个查询最多支持 100 个筛选条件约束,按筛选条件评估的值计算。如果超出,可以合并筛选条件(例如用单个 caseId 字段替换包含 300 个值的 $in)或拆分成较小查询并行运行后按距离合并结果。此外,2026 年 9 月 30 日当天或之后创建的向量存储桶中的索引默认使用 ENHANCED 模式;之前存在的存储桶中的索引在设置存储桶默认值之前使用 CLASSIC 模式。