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
(必要):必須是下列其中一項 -L2
、IP
或COSINE
。
HNSW 演算法選用屬性:
EF_RUNTIME
(選用):設定查詢作業期間要檢查的向量數量。預設值為10
,上限為4096
。您可以為執行的每項查詢設定這個參數值。值越大,查詢時間越長,但查詢召回率越高。M
(選用):圖中每個節點在各層允許的輸出邊緣數量上限。第 0 層的出邊數上限為 200 萬。預設值為 16。最多 512 個。EF_CONSTRUCTION
(選用):設定索引建構期間要檢查的向量數量。預設值為200
,上限為4096
。值越高,建立索引所需的時間就越長,但召回率會提高。INITIAL_CAP
(選用):決定索引的起始向量容量。預設值為1024
。這個參數會決定索引記憶體配置。
必要的 FLAT 演算法屬性:
DIM
(必填):向量維度數量。TYPE
(必填):向量類型。系統僅支援FLOAT32
。DISTANCE_METRIC
(必要):必須是下列其中一項 -L2
、IP
或COSINE
。
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