FT。CREATE - Amazon MemoryDB

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

FT。CREATE

建立索引並啟動該索引的回填。如需詳細資訊,請參閱向量搜尋概觀以取得索引建構的詳細資訊。

語法

FT.CREATE <index-name> ON HASH | JSON [PREFIX <count> <prefix1> [<prefix2>...]] SCHEMA (<field-identifier> [AS <alias>] NUMERIC | TAG [SEPARATOR <sep>] [CASESENSITIVE] | TEXT | VECTOR [HNSW|FLAT] <attr_count> [<attribute_name> <attribute_value>]) )+

結構描述

  • 欄位識別碼:

    • 對於雜湊金鑰,欄位識別碼是欄位名稱。

    • 對於JSON金鑰,欄位識別符是 A JSON 路徑。

    如需詳細資訊,請參閱索引欄位類型

  • 欄位類型:

    • TAG:如需詳細資訊,請參閱標籤

    • NUMERIC:欄位包含數字。

    • TEXT:欄位包含任何資料 Blob。

    • VECTOR:支援向量搜尋的向量欄位。

      • 演算法 – 可以是 HNSW(階層式可導覽小型世界) 或 FLAT(暴力)。

      • attr_count – 將作為演算法組態傳遞的屬性數目,這包括名稱和值。

      • {attribute_name} {attribute_value} – 定義索引組態的演算法特定索引鍵/值對。

        對於FLAT演算法,屬性為:

        必要:

        • DIM – 向量中的維度。

        • DISTANCE_METRIC – 可以是 【L2 | IP | COSINE】 之一。

        • TYPE – 向量類型。唯一支援的類型是 FLOAT32

        選用:

        • INITIAL_CAP – 索引中的初始向量容量會影響索引的記憶體配置大小。

        對於HNSW演算法,屬性為:

        必要:

        • TYPE – 向量類型。唯一支援的類型是 FLOAT32

        • DIM – 向量維度,指定為正整數。最大值:32768

        • DISTANCE_METRIC – 可以是 【L2 | IP | COSINE】 之一。

        選用:

        • INITIAL_CAP – 索引中的初始向量容量會影響索引的記憶體配置大小。預設為 1024。

        • M – 圖中每個層中每個節點允許的最大傳出邊緣數量。在圖零上,傳出邊緣的最大數量將為 2M。預設為 16,上限為 512。

        • EF_CONSTRUCTION – 控制索引建構期間檢查的向量數量。此參數的較高值將提高召回率,而代價是較長的索引建立時間。預設值為 200。最大值為 4096。

        • EF_RUNTIME – 控制查詢操作期間檢查的向量數量。此參數的較高值可以提高回收率,而花費較長的查詢時間。此參數的值可以根據每個查詢覆寫。預設值為 10。最大值為 4096。

傳回

傳回簡單的字串 OK 訊息或錯誤回應。

範例

注意

下列範例使用 valkey-cli 原生的引數,例如資料取消引號和消除逸出,然後再將其傳送至 Valkey 或 Redis OSS。若要使用其他程式設計語言用戶端 (Python、Ruby、C# 等),請遵循這些環境的處理規則來處理字串和二進位資料。如需支援用戶端的詳細資訊,請參閱要在 上建置的工具 AWS

範例 1:建立一些索引

為大小為 2 的向量建立索引

FT.CREATE hash_idx1 ON HASH PREFIX 1 hash: SCHEMA vec AS VEC VECTOR HNSW 6 DIM 2 TYPE FLOAT32 DISTANCE_METRIC L2 OK

使用HNSW演算法建立 6 維JSON索引:

FT.CREATE json_idx1 ON JSON PREFIX 1 json: SCHEMA $.vec AS VEC VECTOR HNSW 6 DIM 6 TYPE FLOAT32 DISTANCE_METRIC L2 OK
範例 2:填入一些資料

下列命令已格式化,因此可以做為 redis-cli 終端機程式的引數來執行。使用程式設計語言用戶端 (例如 Python、Ruby、C# 等) 的開發人員需要遵循其環境的處理規則來處理字串和二進位資料。

建立一些雜湊和 json 資料:

HSET hash:0 vec "\x00\x00\x00\x00\x00\x00\x00\x00" HSET hash:1 vec "\x00\x00\x00\x00\x00\x00\x80\xbf" JSON.SET json:0 . '{"vec":[1,2,3,4,5,6]}' JSON.SET json:1 . '{"vec":[10,20,30,40,50,60]}' JSON.SET json:2 . '{"vec":[1.1,1.2,1.3,1.4,1.5,1.6]}'

注意下列事項:

  • 雜湊和JSON資料的索引鍵具有索引定義的字首。

  • 向量位於索引定義的適當路徑。

  • 雜湊向量會輸入為十六進位資料,而JSON資料會輸入為數字。

  • 向量是適當的長度,二維雜湊向量項目有兩個值為十六進位資料的浮點數,六維 json 向量項目有六個數字。

範例 3:刪除並重新建立索引
FT.DROPINDEX json_idx1 OK FT.CREATE json_idx1 ON JSON PREFIX 1 json: SCHEMA $.vec AS VEC VECTOR FLAT 6 DIM 6 TYPE FLOAT32 DISTANCE_METRIC L2 OK

請注意,新JSON索引使用FLAT演算法而非HNSW演算法。另請注意,它將重新索引現有JSON資料:

FT.SEARCH json_idx1 "*=>[KNN 100 @VEC $query_vec]" PARAMS 2 query_vec "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" DIALECT 2 1) (integer) 3 2) "json:2" 3) 1) "__VEC_score" 2) "11.11" 3) "$" 4) "[{\"vec\":[1.1, 1.2, 1.3, 1.4, 1.5, 1.6]}]" 4) "json:0" 5) 1) "__VEC_score" 2) "91" 3) "$" 4) "[{\"vec\":[1.0, 2.0, 3.0, 4.0, 5.0, 6.0]}]" 6) "json:1" 7) 1) "__VEC_score" 2) "9100" 3) "$" 4) "[{\"vec\":[10.0, 20.0, 30.0, 40.0, 50.0, 60.0]}]"