

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

# ベクトル検索コマンド
<a name="vector-search-commands"></a>

ベクトル検索でサポートされているコマンドのリストを次に示します。

**Topics**
+ [FT.CREATE](vector-search-commands-ft.create.md)
+ [FT.SEARCH](vector-search-commands-ft.search.md)
+ [FT.AGGREGATE](vector-search-commands-ft.aggregate.md)
+ [FT.DROPINDEX](vector-search-commands-ft.dropindex.md)
+ [FT.INFO](vector-search-commands-ft.info.md)
+ [FT.\$1LIST](vector-search-commands-ft.list.md)
+ [FT.ALIASADD](vector-search-commands-ft.aliasadd.md)
+ [FT.ALIASDEL](vector-search-commands-ft.aliasdel.md)
+ [FT.ALIASUPDATE](vector-search-commands-ft.aliasupdate.md)
+ [FT.\$1ALIASLIST](vector-search-commands-ft.aliaslist.md)
+ [FT.PROFILE](vector-search-commands-ft.profile.md)
+ [FT.EXPLAIN](vector-search-commands-ft.explain.md)
+ [FT.EXPLAINCLI](vector-search-commands-ft.explain-cli.md)

# 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]}]"
```

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

インデックス内のキーを検索するために、指定されたクエリ式を使用します。見つかると、それらのキー内のインデックス付きフィールドのカウントおよび/または内容を返すことができます。詳細については、「[ベクトル検索クエリ式](https://docs.aws.amazon.com/memorydb/latest/devguide/vector-search-overview.html#vector-search-query-expression)」を参照してください。

これらの例で使用するデータを作成するには、[FT.CREATE](https://docs.aws.amazon.com/memorydb/latest/devguide/vector-search-commands-ft.create.html) コマンドを参照してください。

**[Syntax]** (構文)

```
FT.SEARCH <index-name> <query>
[RETURN <token_count> (<field-identifier> [AS <alias>])+]
[TIMEOUT timeout] 
[PARAMS <count> <name> <value> [<name> <value>]]
[LIMIT <offset> <count>]
[COUNT]
```
+ RETURN: この句は、キーのどのフィールドが返されるかを指定します。各フィールドのオプションの AS 句は、結果内のフィールドの名前を上書きします。このインデックスのために宣言されているフィールドのみを指定できます。
+ LIMIT: <offset> <count>: この句は、オフセットおよびカウントの値を満たすキーのみが返されるというページネーション機能を提供します。この句を省略すると、デフォルトで「LIMIT 0 10」になります。すなわち、最大 10 個のキーのみが返されます。
+ PARAMS: key-value ペアの数の 2 倍。Param の key/value ペアはクエリ式内から参照できます。詳細については、「[ベクトル検索クエリ式](https://docs.aws.amazon.com/memorydb/latest/devguide/vector-search-overview.html#vector-search-query-expression)」を参照してください。
+ COUNT: この句はキーの内容を返すことを抑制し、キーの数のみが返されます。これは「LIMIT 0 0」のエイリアスです。

**戻る**

配列またはエラー応答を返します。
+ オペレーションが正常に完了すると、配列が返されます。最初の要素は、クエリに一致するキーの総数です。残りの要素は、キー名とフィールドリストのペアです。フィールドリストは、フィールド名と値のペアで構成される別の配列です。
+ インデックスのバックフィルが進行中の場合、コマンドは直ちにエラー応答を返します。
+ タイムアウトに達すると、コマンドはエラー応答を返します。

**例: 検索を実行する**

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

**ハッシュ検索**

```
FT.SEARCH hash_idx1 "*=>[KNN 2 @VEC $query_vec]" PARAMS 2 query_vec "\x00\x00\x00\x00\x00\x00\x00\x00" DIALECT 2
1) (integer) 2
2) "hash:0"
3) 1) "__VEC_score"
   2) "0"
   3) "vec"
   4) "\x00\x00\x00\x00\x00\x00\x00\x00"
4) "hash:1"
5) 1) "__VEC_score"
   2) "1"
   3) "vec"
   4) "\x00\x00\x00\x00\x00\x00\x80\xbf"
```

これにより、クエリベクトル (16 進数で入力) からの距離であるスコアによってソートされた 2 つの結果が生成されます。

**JSON 検索**

```
FT.SEARCH json_idx1 "*=>[KNN 2 @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) 2
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]}]"
```

これにより、スコア順に並べ替えられた最も近い 2 つの結果が生成されます。JSON ベクトル値は浮動小数点数に変換され、クエリベクトルは依然としてベクトルデータであることに留意してください。`KNN` パラメータが 2 であるため、結果は 2 つだけであることにも留意してください。値が大きいほど、より多くの結果が返されます:

```
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]}]"
```

# FT.AGGREGATE
<a name="vector-search-commands-ft.aggregate"></a>

FT.SEARCH コマンドのスーパーセット。クエリ式によって選択されたキーの実質的な追加処理を許可します。

**[Syntax]** (構文)

```
FT.AGGREGATE index query
  [LOAD * | [count field [field ...]]]
  [TIMEOUT timeout]
  [PARAMS count name value [name value ...]]
  [FILTER expression]
  [LIMIT offset num]  
  [GROUPBY count property [property ...] [REDUCE function count arg [arg ...] [AS name] [REDUCE function count arg [arg ...] [AS name] ...]] ...]] 
  [SORTBY count [ property ASC | DESC [property ASC | DESC ...]] [MAX num]] 
  [APPLY expression AS name]
```
+ FILTER、LIMIT、GROUPBY、SORTBY、および APPLY 句は、任意の順序で複数回繰り返すことができ、自由に組み合わせることができます。これらは指定された順序で適用され、1 つの句の出力を次の句の入力に供給します。
+ 上記の構文では、「プロパティ」は、このインデックスの [FT.CREATE](https://docs.aws.amazon.com/memorydb/latest/devguide/vector-search-commands-ft.create.html) コマンドで宣言されたフィールド、または前の APPLY 句もしくは REDUCE 関数の出力のいずれかです。
+ LOAD 句は、インデックスで宣言されたフィールドのロードに制限されます。「LOAD \$1」は、インデックスで宣言されたすべてのフィールドをロードします。
+ 次のリデューサー関数がサポートされています: COUNT、COUNT\$1DISTINCTISH、SUM、MIN、MAX、AVG、STDDEV、QUANTILE、TOLIST、FIRST\$1VALUE、および RANDOM\$1SAMPLE。詳細については、「[集計](https://redis.io/docs/interact/search-and-query/search/aggregations/)」を参照してください。
+ LIMIT <offset> <count>: <offset> で始まり <count> まで続くレコードを保持し、他のすべてのレコードは破棄されます。
+ PARAMS: key-value ペアの数の 2 倍。Param の key/value ペアはクエリ式内から参照できます。

**戻る**

配列またはエラー応答を返します。
+ オペレーションが正常に完了すると、配列が返されます。最初の要素は特定の意味を持たない整数です (無視する必要があります)。残りの要素は、最後のステージによって出力された結果です。各要素はフィールド名と値のペアの配列です。
+ インデックスのバックフィルが進行中の場合、コマンドは直ちにエラー応答を返します。
+ タイムアウトに達すると、コマンドはエラー応答を返します。

# FT.DROPINDEX
<a name="vector-search-commands-ft.dropindex"></a>

インデックスをドロップします。インデックス定義と関連付けられたコンテンツが削除されます。キーは影響を受けません。

**[Syntax]** (構文)

```
FT.DROPINDEX <index-name>
```

**戻る**

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

# FT.INFO
<a name="vector-search-commands-ft.info"></a>

**[Syntax]** (構文)

```
FT.INFO <index-name>
```

FT.INFO ページからの出力は、次の表に示す key-value ペアの配列です:


| Key | 値のタイプ | 説明 | 
| --- | --- | --- | 
| index\$1name | string | インデックスの名前 | 
| creation\$1timestamp | integer | 作成時の Unix スタイルのタイムスタンプ | 
| key\$1type | string | HASH または JSON | 
| key\$1prefixes | 文字列の配列 | このインデックスのキープレフィックス | 
| fields | フィールド情報の配列 | このインデックスのフィールド | 
| space\$1usage | integer | このインデックスによって使用されるメモリバイト | 
| fullext\$1space\$1usage | integer | 非ベクトルフィールドによって使用されるメモリバイト | 
| vector\$1space\$1usage | integer | ベクトルフィールドによって使用されるメモリバイト | 
| num\$1docs | integer | 現在インデックスに含まれているキーの数 | 
| num\$1indexed\$1vectors | integer | 現在インデックスに含まれているベクトルの数 | 
| current\$1lag | integer | 最近の取り込み遅延 (ミリ秒) | 
| backfill\$1status | string | 次のいずれか: Completed、InProgres、Paused、または Failed  | 

次の表では、各フィールドの情報について説明します:


| Key | 値のタイプ | 説明 | 
| --- | --- | --- | 
| 識別子 | string | フィールドの名前 | 
| field\$1name | string | ハッシュメンバー名または JSON パス | 
| 型 | string | 次のいずれか: Numeric、Tag、Text、または Vector | 
| option | string | ignore | 

フィールドの型が Vector である場合、アルゴリズムに応じて追加情報が存在します。

HNSW アルゴリズムの場合:


| Key | 値のタイプ | 説明 | 
| --- | --- | --- | 
| アルゴリズム | string | HNSW | 
| data\$1type | string | FLOAT32 | 
| distance\$1metric | string | 次のいずれか: L2、IP、または Cosine | 
| initial\$1capacity | integer | ベクトルフィールドインデックスの初期サイズ | 
| current\$1capacity | integer | ベクトルフィールドインデックスの現在のサイズ | 
| maximum\$1edges | integer | 作成時の M パラメータ | 
| ef\$1construction | integer | 作成時の EF\$1CONSTRUCTION パラメータ | 
| ef\$1runtime | integer | 作成時の EF\$1RUNTIME パラメータ | 

FLAT アルゴリズムの場合:


| Key | 値のタイプ | 説明 | 
| --- | --- | --- | 
| アルゴリズム | string | FLAT | 
| data\$1type | string | FLOAT32 | 
| distance\$1metric | string | 次のいずれか: L2、IP、または Cosine | 
| initial\$1capacity | integer | ベクトルフィールドインデックスの初期サイズ | 
| current\$1capacity | integer | ベクトルフィールドインデックスの現在のサイズ | 

# FT.\$1LIST
<a name="vector-search-commands-ft.list"></a>

すべてのインデックスを一覧表示します。

**[Syntax]** (構文)

```
FT._LIST 
```

**戻る**

インデックス名の配列を返します

# FT.ALIASADD
<a name="vector-search-commands-ft.aliasadd"></a>

インデックスのエイリアスを追加します。新しいエイリアスは、インデックス名が必要なあらゆる場所で使用できます。

**[Syntax]** (構文)

```
FT.ALIASADD <alias> <index-name> 
```

**戻る**

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

# FT.ALIASDEL
<a name="vector-search-commands-ft.aliasdel"></a>

インデックスの既存のエイリアスを削除します。

**[Syntax]** (構文)

```
FT.ALIASDEL <alias>
```

**戻る**

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

# FT.ALIASUPDATE
<a name="vector-search-commands-ft.aliasupdate"></a>

別の物理インデックスをポイントするように既存のエイリアスを更新します。このコマンドは、エイリアスへの今後の参照にのみ影響します。現在進行中のオペレーション (FT.SEARCH、FT.AGGREGATE) は、このコマンドの影響を受けません。

**[Syntax]** (構文)

```
FT.ALIASUPDATE <alias> <index>
```

**戻る**

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

# FT.\$1ALIASLIST
<a name="vector-search-commands-ft.aliaslist"></a>

インデックスのエイリアスを一覧表示します。

**[Syntax]** (構文)

```
FT._ALIASLIST
```

**戻る**

現在のエイリアスの数のサイズの配列を返します。配列の各要素は、エイリアスとインデックスのペアです。

# FT.PROFILE
<a name="vector-search-commands-ft.profile"></a>

クエリを実行し、そのクエリに関するプロファイル情報を返します。

**[Syntax]** (構文)

```
FT.PROFILE 

<index>
SEARCH | AGGREGATE 
[LIMITED]
QUERY <query ....>
```

**戻る**

2 つの要素の配列。1 つ目の要素は、プロファイリングされた `FT.SEARCH` または `FT.AGGREGATE` コマンドの結果です。2 つ目の要素は、パフォーマンスおよびプロファイリング情報の配列です。

# FT.EXPLAIN
<a name="vector-search-commands-ft.explain"></a>

クエリを解析し、そのクエリがどのように解析されたかに関する情報を返します。

**[Syntax]** (構文)

```
FT.EXPLAIN <index> <query>
```

**戻る**

解析結果を含む文字列。

# FT.EXPLAINCLI
<a name="vector-search-commands-ft.explain-cli"></a>

結果が、redis-cli でより便利な別の形式で表示されることを除いて、FT.EXPLAIN コマンドと同じです。

**[Syntax]** (構文)

```
FT.EXPLAINCLI <index> <query>
```

**戻る**

解析結果を含む文字列。