在向量存储桶中创建向量索引
注意
适用于 Amazon Simple Storage Service 的 Amazon S3 Vectors 为预览版,可能会发生变化。
注意
请仔细选择向量索引配置参数。创建向量索引后,无法更新向量索引名称、维度、距离指标或不可筛选的元数据键。要更改其中任何值,必须创建新的向量索引。
向量索引是向量存储桶中的一种资源,用于存储和组织向量数据,以实现高效的相似性搜索。创建向量索引时,可以定义该索引中的所有向量必须共享的特征,例如维度、用于计算相似性的距离指标以及(可选)不可筛选的元数据键。有关向量索引命名要求、维度要求、距离指标选项和不可筛选的元数据键的更多信息,请参阅限制和局限性。
向量索引必须在现有的向量存储桶中创建,并且需要特定的配置参数,这些参数在创建后无法修改。
创建向量索引
-
通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/
。 -
在导航窗格中,选择向量存储桶。
-
在向量存储桶列表中,选择想要在其中创建向量索引的存储桶的名称。
-
选择创建向量索引。
-
对于向量索引名称,输入向量索引的名称。
向量索引名称在向量存储桶内必须是唯一的。索引名称长度必须介于 3 到 63 个字符之间。有效字符为小写字母(a-z)、数字(0-9)、连字符(-)和点(.)。有关向量索引命名要求的更多信息,请参阅限制和局限性。
-
对于维度,输入每个向量中的值数量。
注意
-
维度的值决定了每个向量将包含多少个数值。
-
添加到此索引的所有向量都必须正好具有这个数量的值。
-
维度必须介于 1 到 4096 之间。
-
维度越大,需要的存储空间就越多。
-
根据嵌入模型的输出维度进行选择。
有关维度要求的更多信息,请参阅限制和局限性。
-
-
对于距离指标,选择以下选项之一:
-
余弦:测量向量之间角度的余弦值。最适合归一化向量以及方向比幅度更重要时
-
欧几里得:测量向量之间的直线距离。当方向和幅度都很重要时最适合。
-
-
(可选)在不可筛选的元数据下,配置将存储但不用于筛选的元数据键:
要添加不可筛选的元数据键:
-
选择添加密钥。
-
输入键名称(1-63 个字符,在此向量索引中是唯一的)。
-
重复此操作以添加其它键(最多 10 个键)。
注意
在创建向量索引后插入向量数据时,可以将可筛选的元数据作为键值对附加到每个向量。默认情况下,附加到向量的所有元数据键都是可筛选的,并且可以在相似性查询中用作筛选条件。只有在创建向量索引期间指定为不可筛选的元数据键才被排除在筛选之外。有关每个向量的元数据大小限制(包括总元数据约束和可筛选元数据约束)的更多信息,请参阅限制和局限性。
-
-
请仔细检查配置。
注意
这些设置在创建后无法更改。
-
选择创建向量索引。
要在向量存储桶中创建向量索引,请使用以下示例命令并将 user input placeholders
替换为您自己的信息。
示例 1:创建带有不可筛选的元数据键的向量索引
aws s3vectors create-index \ --vector-bucket-name "
amzn-s3-demo-vector-bucket
" \ --index-name "idx
" \ --data-type "float32" \ --dimension1
\ --distance-metric "cosine
" \ --metadata-configuration '{"nonFilterableMetadataKeys":["nonFilterableKey1
"]}'
示例 2:创建不带不可筛选的元数据键的向量索引
aws s3vectors create-index \ --vector-bucket-name "
amzn-s3-demo-vector-bucket
" \ --index-name "idx2
" \ --data-type "float32" \ --dimension4096
\ --distance-metric "euclidean
"
此外,使用 GetVectors
、ListVectors
或 QueryVectors
API 操作以相同的方式检索所有元数据(包括可筛选和不可筛选)。以下 CLI 命令显示如何检索带有元数据(包括不可筛选的元数据)的向量。
请求示例:
aws s3vectors get-vectors \ --vector-bucket-name "
amzn-s3-demo-vector-bucket
" \ --index-name "idx
" \ --keys '["vec1", "vec3"]' \ --return-data \ --return-metadata \
示例响应:
{ "vectors": [ { "key": "vec1", "data": { "float32": [ 0.10000000149011612, 0.20000000298023224, 0.30000001192092896, 0.4000000059604645, 0.5 ] }, "metadata": { "category": "test", "text": "First vector" } }, { "key": "vec3", "data": { "float32": [ 0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421, 1.0 ] }, "metadata": { "text": "Third vector", "category": "test" } } ] }
响应将包括与向量关联的所有元数据,无论在创建索引期间将其指定为可筛选还是不可筛选。