FT.CREATE 建立可搜尋的索引。
語法
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