FT.CREATE

FT.CREATE 建立可搜尋的索引。使用 Memorystore for Redis Cluster 時,索引是在叢集層級建立。在任何節點上建立索引,都會導致叢集內的所有節點建立索引。

語法

FT.CREATE index
  ON HASH
  [PREFIX count prefix [prefix ...]]
  SCHEMA field_name [AS alias] VECTOR [HNSW|FLAT] attribute_count [attribute_name attribute_value]
  [field_name [AS alias] NUMERIC]
  [field_name [AS alias] TAG [SEPARATOR ...] [CASESENSITIVE]]
  • index (必填):這是您為索引指定的名稱。如果已有同名索引,系統會傳回錯誤。

  • ON HASH (選用):這表示 HASH 資料類型。僅支援 HASH 資料類型。

  • PREFIX [count] [prefix] (選用):指出要建立索引的雜湊鍵。

  • SCHEMA hash_field_name (必要):SCHEMA 後方的 hash_field_name 會識別雜湊中的欄位名稱。[AS alias] 會將名稱 alias 指派為欄位名稱屬性的別名。

欄位類型

  • VECTOR (必要):用於向量搜尋的向量欄位:

    • [HNSW|FLAT] (必要):指定演算法。FLAT (暴力搜尋) 或 HNSW (階層式可導覽小世界)。

    • attribute_count (必要):演算法設定中傳遞的名稱和值屬性總數。

    • attribute_name attribute_value:定義索引設定的鍵/值組合,但僅適用於其中一種可用演算法。

      • HNSW 演算法的必要屬性:

        • DIM (必填):向量維度數量。可接受的值為 1-32768

        • TYPE (必填):向量類型。系統僅支援 FLOAT32

        • DISTANCE_METRIC (必要):必須是下列其中一項 - L2IPCOSINE

      • HNSW 演算法選用屬性:

        • EF_RUNTIME (選用):設定查詢作業期間要檢查的向量數量。預設值為 10,上限為 4096。您可以為執行的每項查詢設定這個參數值。值越大,查詢時間越長,但查詢召回率越高。

        • M (選用):圖中每個節點在各層允許的輸出邊緣數量上限。第 0 層的出邊數上限為 200 萬。預設值為 16。最多 512 個。

        • EF_CONSTRUCTION (選用):設定索引建構期間要檢查的向量數量。預設值為 200,上限為 4096。值越高,建立索引所需的時間就越長,但召回率會提高。

        • INITIAL_CAP (選用):決定索引的起始向量容量。預設值為 1024。這個參數會決定索引記憶體配置。

      • 必要的 FLAT 演算法屬性:

        • DIM (必填):向量維度數量。

        • TYPE (必填):向量類型。系統僅支援 FLOAT32

        • DISTANCE_METRIC (必要):必須是下列其中一項 - L2IPCOSINE

      • FLAT 演算法屬性 (選用):

        • INITIAL_CAP (選用):決定索引的起始向量容量。這個參數會決定索引記憶體配置。
  • NUMERIC (選用) - 數字搜尋的數字欄位。

  • TAG (選用) - 根據標記搜尋的標記欄位。

    • SEPARATOR (選用):用於將代碼字串劃分為個別代碼的字元。預設選項為 ,。指定值必須是單一字元。舉例來說,系統會將標記字串「hello, world」解讀為「hello」和「world」,並據此建立索引。有效值為 ,.<>{}[]"':;!@#$%^&*()-+=~

    • CASESENSITIVE (選用):表示標記欄位是否區分大小寫。標籤預設不區分大小寫。標記字串「HeLLo」會編入索引為「hello」,而查詢「Hello」和「HeLlo」會產生相同結果。

附註

  • 在 FT.CREATE 指令中,VECTOR、NUMERIC 和 TAG 索引可以依任意順序顯示。

  • 一個欄位只能編入索引一次。在提供的範例中,欄位 my_vector_field_key 無法在相同索引中重複。

  • 單一 FT.CREATE 指令最多可建立 10 個欄位的索引。

  • 根據預設,TAG 不區分大小寫。

  • 根據預設,標記會以 , 分隔。

  • 系統不支援對標記和數字查詢進行個別查詢。這些欄位只能與以向量為基礎的搜尋搭配使用。

範例

HNSW 範例:

FT.CREATE my_index_name SCHEMA my_hash_field_key VECTOR HNSW 10 TYPE FLOAT32 DIM 20 DISTANCE_METRIC COSINE M 4 EF_CONSTRUCTION 100

平放示例:

FT.CREATE my_index_name SCHEMA my_hash_field_key VECTOR Flat 8 TYPE FLOAT32 DIM 20 DISTANCE_METRIC COSINE INITIAL_CAP 15000

HNSW 範例 (含數值欄位):

FT.CREATE my_index_name SCHEMA my_vector_field_key VECTOR HNSW 10 TYPE FLOAT32 DIM 20 DISTANCE_METRIC COSINE M 4 EF_CONSTRUCTION 100 my_numeric_field_key NUMERIC

含標記欄位的 HNSW 範例:

FT.CREATE my_index_name SCHEMA my_vector_field_key VECTOR HNSW 10 TYPE FLOAT32 DIM 20 DISTANCE_METRIC COSINE M 4 EF_CONSTRUCTION 100 my_tag_field_key TAG SEPARATOR '@' CASESENSITIVE 

HNSW 範例,包含標記和數值欄位:

FT.CREATE my_index_name SCHEMA my_vector_field_key VECTOR HNSW 10 TYPE FLOAT32 DIM 20 DISTANCE_METRIC COSINE M 4 EF_CONSTRUCTION 100 my_tag_field_key TAG SEPARATOR '@' CASESENSITIVE my_numeric_field_key NUMERIC

HNSW 範例,包含多個標記和數值欄位:

FT.CREATE my_index_name SCHEMA my_vector_field_key VECTOR HNSW 10 TYPE FLOAT32 DIM 20 DISTANCE_METRIC COSINE M 4 EF_CONSTRUCTION 100 my_tag_field_key_1 TAG SEPARATOR '@' CASESENSITIVE my_numeric_field_key_1 NUMERIC my_numeric_field_key_2 NUMERIC my_tag_field_key_2 TAG