

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

# FT.CREATE
<a name="vector-search-commands-ft.create"></a>

`FT.CREATE` 命令會建立空索引並啟動回填程序。每個索引都包含多個欄位定義。每個欄位定義都會指定欄位名稱、欄位類型，以及每個索引鍵內的路徑，以找出宣告類型的值。某些欄位類型定義具有其他子類型指標。

對於 HASH 索引鍵上的索引，路徑與雜湊成員名稱相同。如有需要，選用的 `AS` 子句可用來重新命名 欄位。當成員名稱包含特殊字元時，重新命名欄位特別有用。

對於 JSON 索引鍵上的索引，路徑是宣告類型資料的 JSON 路徑。由於 JSON 路徑一律包含特殊字元，因此需要 `AS`子句。

**語法**

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

**<index-name> （必要）：**這是您提供給索引的名稱。如果具有相同名稱的索引已存在，則會傳回錯誤。

**ON HASH \$1 JSON （選用）：**只有符合指定類型的索引鍵才會包含在此索引中。如果省略，則會假設 HASH。

**PREFIX <prefix-count> <prefix> （選用）：**如果指定此子句，則此索引只會包含以一個或多個指定字首相同位元組開頭的索引鍵。如果省略此子句，則會包含正確類型的所有金鑰。零長度字首也會符合正確類型的所有金鑰。

**欄位類型：**
+ TAG：標籤欄位是包含一或多個標籤值的字串。
  + SEPARATOR <sep> （選用）：`,.<>{}[]"':;!@#$%^&*()-+=~`用於分隔個別標籤的其中一個字元。如果省略，預設值為 `,`。
  + CASESENSITIVE （選用）：如果有，標籤比較會區分大小寫。預設值是標籤比較不區分大小寫。
+ NUMERIC：數字欄位包含數字。
+ VECTOR：向量欄位包含向量。目前支援兩種向量索引演算法：HNSW (Hierarchical Navigable Small World) 和 FLAT （暴力破解力）。每個演算法都有一組額外的屬性，有些是必要屬性和其他選用屬性。
  + FLAT：平面演算法提供確切的答案，但具有與索引向量數量成比例的執行時間，因此可能不適用於大型資料集。
    + DIM <number> （必要）：指定向量中的維度數目。
    + TYPE FLOAT32 （必要）：資料類型，目前僅支援 FLOAT32。
    + DISTANCE\$1METRIC 【L2 \$1 IP \$1 COSINE】 （必要）：指定距離演算法。
    + INITIAL\$1CAP <size> （選用）：初始索引大小。
  + HNSW：HNSW 演算法提供近似答案，但運作速度比 FLAT 快得多。
    + DIM <number> （必要）：指定向量中的維度數目。
    + TYPE FLOAT32 （必要）：資料類型，目前僅支援 FLOAT32。
    + DISTANCE\$1METRIC 【L2 \$1 IP \$1 COSINE】 （必要）：指定距離演算法。
    + INITIAL\$1CAP <size> （選用）：初始索引大小。
    + M <number> （選用）：每個圖層圖表中每個節點允許的傳出邊緣上限數量。在圖層零上，傳出邊緣的最大數量將為 2\$1M。 預設值為 16，上限為 512。
    + EF\$1CONSTRUCTION <number> （選用）：控制在索引建構期間檢查的向量數量。此參數的較高值將提高召回率，同時犧牲較長的索引建立時間。預設值為 200。最大值為 4096。
    + EF\$1RUNTIME <number> （選用）：控制查詢操作期間要檢查的向量數量。預設值為 10，最大值為 4096。您可以為每個執行的查詢設定此參數值。較高的值會增加查詢時間，但可改善查詢回收。

**回應：**確定或錯誤。