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
(必須): ベクトル ディメンション数。利用できる値は1
~32768
です。TYPE
(必須): ベクトルタイプ。FLOAT32
のみがサポートされています。DISTANCE_METRIC
(必須):L2
、IP
、COSINE
のいずれかにする必要があります。
HNSW アルゴリズム属性(省略可能):
EF_RUNTIME
(省略可): クエリ オペレーションで検査するベクトルの数を設定します。デフォルト値は10
、最大値は4096
です。このパラメータ値は、実行するクエリごとに設定できます。値が大きいほどクエリ実行時間は長くなりますが、クエリの再現率は向上します。M
(省略可)各レイヤのグラフで、ノードごとに許容される送信エッジの最大数。レイヤ 0 の場合、送信エッジの最大数は 2M です。デフォルト値は 16 です。最大値は 512 です。EF_CONSTRUCTION
(省略可): インデックスの構築中に検査するベクトルの数を設定します。デフォルト値は200
、最大値は4096
です。値を大きくすると、インデックスの作成に必要な時間は長くなりますが、再現率は向上します。INITIAL_CAP
(省略可): インデックスの開始ベクトル容量を決定します。デフォルトは1024
です。このパラメータにより、インデックスのメモリ割り当てが決定されます。
必須の FLAT アルゴリズム属性:
DIM
(必須): ベクトル ディメンション数。TYPE
(必須): ベクトルタイプ。FLOAT32
のみがサポートされています。DISTANCE_METRIC
(必須):L2
、IP
、COSINE
のいずれかにする必要があります。
オプションの 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