

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

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

 インデックスを作成し、そのインデックスのバックフィルを開始します。詳細については、「[ベクトル検索の概要](https://docs.aws.amazon.com/memorydb/latest/devguide/vector-search-overview.html)」でインデックス構築の詳細をご覧ください。

**[Syntax]** (構文)

```
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>])

)+
```

**Schema**
+ フィールド識別子:
  + ハッシュキーの場合、フィールド識別子はフィールド名です。
  + JSON キーの場合、フィールド識別子は JSON パスです。

  詳細については、「[インデックスフィールドの型](vector-search-overview.md#vector-search-index-field-types)」を参照してください。
+ フィールドの型:
  + タグ: 詳細については、「[タグ](https://redis.io/docs/interact/search-and-query/advanced-concepts/tags/)」を参照してください。
  + NUMERIC: フィールドには数値が含まれます。
  + TEXT: フィールドにはデータの BLOB が含まれます。
  + VECTOR: ベクトル検索をサポートするベクトルフィールド。
    + アルゴリズム – HNSW (Hierarchical Navigable Small World) または FLAT (総当たり) を使用できます。
    + `attr_count` – アルゴリズム設定として渡される属性の数。これには名前と値の両方が含まれます。
    + `{attribute_name} {attribute_value}` – インデックス設定を定義するアルゴリズム固有の key/value ペア。

      FLAT アルゴリズムの場合、属性は次のとおりです:

      必須:
      + DIM – ベクトルの次元の数。
      + DISTANCE\$1METRIC – [L2 \$1 IP \$1 COSINE] のいずれかを使用できます。
      + TYPE – ベクトルの型。サポートされている唯一の型は `FLOAT32` です。

      オプション:
      + INITIAL\$1CAP – インデックスのメモリ割り当てサイズに影響するインデックスの初期ベクトル容量。

      HNSW アルゴリズムの場合、属性は次のとおりです:

      必須:
      + TYPE – ベクトルの型。サポートされている唯一の型は `FLOAT32` です。
      + DIM – ベクトルの次元。正の整数として指定します。最大: 32,768
      + DISTANCE\$1METRIC – [L2 \$1 IP \$1 COSINE] のいずれかを使用できます。

      オプション:
      + INITIAL\$1CAP – インデックスのメモリ割り当てサイズに影響するインデックスの初期ベクトル容量。デフォルトは 1024 です。
      + M – 各レイヤーのグラフ内の各ノードに許可される発信エッジの最大数。レイヤー 0 では、発信エッジの最大数は 2M です。デフォルトは 16、最大値は 512 です。
      + EF\$1CONSTRUCTION – インデックスの構築中に検査されるベクトルの数を制御します。このパラメータの値を大きくすると、インデックスの作成時間が長くなりますが、再現率が向上します。デフォルト値は 200 です。最大値は 4096 です。
      + EF\$1RUNTIME – クエリオペレーション中に検査されるベクトルの数を制御します。このパラメータの値を大きくすると、クエリ時間が長くなりますが、再現が改善されます。このパラメータの値はクエリごとに上書きできます。デフォルト値は 10 です。最大値は 4096 です。

**戻る**

シンプルな文字列の OK メッセージまたはエラー応答を返します。

**例**

**注記**  
次の例では、データを Valkey または Redis OSS に送信する前に、そのデータの引用符の削除やエスケープの削除など、[valkey-cli](https://valkey.io/topics/cli/) にネイティブな引数を使用します。他のプログラミング言語クライアント (Python、Ruby、C\$1 など) を使用するには、それらの環境の文字列およびバイナリデータの処理規則に従います。サポートされているクライアントの詳細については、[「 で構築するツール AWS](https://aws.amazon.com/developer/tools/)」を参照してください。

**Example 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
```

**Example 例 2: 一部のデータを入力する**  
次のコマンドは、redis-cli ターミナルプログラムの引数として実行できるようにフォーマットされています。プログラミング言語クライアント (Python、Ruby、C\$1 など) を使用するデベロッパーは、文字列とバイナリデータを処理するための環境の処理ルールに従う必要があります。  
ハッシュデータと 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 データのキーには、インデックス定義のプレフィックスが含まれています。
+ ベクトルはインデックス定義の適切なパスにあります。
+ ハッシュベクトルは 16 進データとして入力され、JSON データは数値として入力されます。
+ ベクトルは適切な長さであり、2 次元のハッシュベクトルエントリには 2 つの浮動小数点相当の 16 進データが含まれており、6 次元の JSON ベクトルエントリには 6 つの数値が含まれています。

**Example 例 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 インデックスでは、`HNSW` アルゴリズムの代わりに `FLAT` アルゴリズムが使用されることに留意してください。また、既存の 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]}]"
```