FT.CREATE

FT.CREATE は、検索可能なインデックスを作成します。 Memorystore for Valkey では、インデックスはクラスタレベルで作成されます。任意のノードでインデックスを作成すると、クラスタ内のすべてのノードでインデックスが作成されます。

構文

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(Hierarchical Navigable Small World)のいずれかです。

    • attribute_count(必須): アルゴリズム構成で渡される名前と値の属性の合計数。

    • attribute_name attribute_value: インデックス構成を定義する Key-Value ペア。ただし、使用可能な 2 つのアルゴリズムのいずれか 1 つに対して固有です。

      • 必須の HNSW アルゴリズム属性:

        • DIM(必須): ベクトル ディメンション数。利用できる値は 132768 です。

        • TYPE(必須): ベクトルタイプ。FLOAT32 のみがサポートされています。

        • DISTANCE_METRIC(必須): L2IPCOSINE のいずれかにする必要があります。

      • HNSW アルゴリズム属性(省略可能):

        • EF_RUNTIME(省略可): クエリ オペレーションで検査するベクトルの数を設定します。デフォルト値は 10、最大値は 4096 です。このパラメータ値は、実行するクエリごとに設定できます。値が大きいほどクエリ実行時間は長くなりますが、クエリの再現率は向上します。

        • M(省略可)各レイヤのグラフで、ノードごとに許容される送信エッジの最大数。レイヤ 0 の場合、送信エッジの最大数は 2M です。デフォルト値は 16 です。最大値は 512 です。

        • EF_CONSTRUCTION(省略可): インデックスの構築中に検査するベクトルの数を設定します。デフォルト値は 200、最大値は 4096 です。値を大きくすると、インデックスの作成に必要な時間は長くなりますが、再現率は向上します。

        • INITIAL_CAP(省略可): インデックスの開始ベクトル容量を決定します。デフォルトは 1024 です。このパラメータにより、インデックスのメモリ割り当てが決定されます。

      • 必須の FLAT アルゴリズム属性:

        • DIM(必須): ベクトル ディメンション数。

        • TYPE(必須): ベクトルタイプ。FLOAT32 のみがサポートされています。

        • DISTANCE_METRIC(必須): L2IPCOSINE のいずれかにする必要があります。

      • オプションの FLAT アルゴリズム属性:

        • INITIAL_CAP(省略可): インデックスの開始ベクトル容量を決定します。このパラメータにより、インデックスのメモリ割り当てが決定されます。
  • NUMERIC(省略可)- 数値検索用の数値フィールド。

  • TAG(省略可)- TAG ベースの検索用のタグフィールド。

    • SEPARATOR(省略可): タグ文字列を個々のタグに分割するために使用される文字。デフォルトのオプションは , です。指定する値は 1 文字にする必要があります。たとえば、タグ文字列「hello, world」は「hello」と「world」として解釈され、それに応じてインデックスに登録されます。指定できる値は ,.<>{}[]"':;!@#$%^&*()-+=~ です。

    • CASESENSITIVE(省略可): タグフィールドの大文字と小文字の区別を指定します。デフォルトでは、タグは大文字と小文字を区別しません。タグ文字列「HeLLo」は「hello」としてインデックスに登録され、「Hello」と「HeLlo」のクエリは同じ結果になります。

  • FT.CREATE コマンド内で、ベクトル、数値、タグの各インデックスは任意の順序で指定できます。

  • フィールドのインデックス登録は 1 回のみ可能です。この例では、同じインデックス内でフィールド my_vector_field_key を繰り返すことはできません。

  • 1 つの FT.CREATE コマンドでインデックスに登録できるフィールドは最大 10 個です。

  • デフォルトでは、タグは大文字と小文字が区別されません。

  • デフォルトでは、タグは , で区切られます。

  • タグと数値に対する個別のクエリはサポートされていません。これらのフィールドは、ベクトルベースの検索とともに使用できます。

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

FLAT の例:

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