在向量儲存貯體中建立向量索引 - Amazon Simple Storage Service

在向量儲存貯體中建立向量索引

注意

Amazon S3 Vectors 目前為 Amazon Simple Storage Service 的預覽版,可能會有所變更。

注意

請仔細選擇向量索引組態參數。建立向量索引後,便無法更新向量索引名稱、維度、距離指標,或無法篩選的中繼資料索引鍵。若要變更這些值,則必須建立新的向量索引。

向量索引是向量儲存貯體內的資源,可儲存和組織向量資料以進行有效的相似度搜尋。建立向量索引時,您可以定義該索引中所有向量必須共用的特性,例如維度、用於相似度計算的距離指標,以及選用之不可篩選的中繼資料索引鍵。如需有關向量索引命名要求、維度要求、距離指標選項和不可篩選中繼資料索引鍵的詳細資訊,請參閱 限制

向量索引必須在現有的向量儲存貯體內建立,而且需要在建立後便無法修改的特定組態參數。

建立向量索引

  1. 開啟位於 https://console.aws.amazon.com/s3/ 的 Amazon S3 主控台。

  2. 在導覽窗格中,選擇向量儲存貯體

  3. 在向量儲存貯體清單中,選擇您要建立向量索引的儲存貯體名稱。

  4. 選擇建立向量索引

  5. 針對向量索引名稱,輸入向量索引的名稱。

    向量索引名稱在向量儲存貯體中必須是唯一的。索引名稱長度必須介於 3 到 63 個字元之間。有效字元為小寫字母 (a-z)、數字 (0-9)、連字號 (-) 和點 (.)。如需向量索引命名要求的詳細資訊,請參閱 限制

  6. 針對維度,輸入每個向量中的值數目。

    注意
    • 維度的值決定了每個向量將包含的數值。

    • 新增至此索引的所有向量,必須具有此數目的值。

    • 維度必須介於 1 到 4096 之間。

    • 較大的維度需要更多的儲存空間。

    • 根據您的嵌入模型輸出維度做選擇。

    如需有關維度要求的詳細資訊,請參閱 限制

  7. 針對距離指標,選擇以下其中一個選項:

    • 餘弦 - 測量向量之間角度的餘弦。標準化向量以及當方向比大小重要時的最佳選擇

    • 歐氏幾何 - 測量向量之間的直線距離。當方向和大小都很重要時的最佳選擇。

  8. (選用) 在不可篩選的中繼資料下,設定要儲存但不用於篩選的中繼資料索引鍵:

    新增不可篩選的中繼資料索引鍵:

    1. 選擇 Add key (新增金鑰)

    2. 輸入索引鍵名稱 (1-63 個字元,是此向量索引中的唯一)。

    3. 重複以新增其他索引鍵 (最多 10 個索引鍵)。

    注意

    當您在建立向量索引後插入向量資料,可以將可篩選的中繼資料以鍵值對形式連接至每個向量。根據預設,連接至向量的所有中繼資料索引鍵都是可篩選的,並且可以當作相似度查詢中的篩選條件。只有在向量索引建立期間指定為不可篩選的中繼資料索引鍵,才會排除在篩選範圍外。如需每個向量中繼資料大小限制 (包括總中繼資料限制和可篩選中繼資料限制) 的詳細資訊,請參閱 限制

  9. 仔細檢閱您的組態。

    注意

    這些設定在建立後便無法變更。

  10. 選擇建立向量索引

若要在向量儲存貯體中建立向量索引,請使用下列範例命令,並以您自己的資訊取代 user input placeholders

範例 1:使用不可篩選的中繼資料索引鍵建立向量索引

aws s3vectors create-index \ --vector-bucket-name "amzn-s3-demo-vector-bucket" \ --index-name "idx" \ --data-type "float32" \ --dimension 1 \ --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" \ --dimension 4096 \ --distance-metric "euclidean"

此外,使用 GetVectorsListVectorsQueryVectors 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" } } ] }

回應內容包含與向量相關聯的所有中繼資料,無論其在建立索引期間是否指定為可篩選或不可篩選。