FT.CREATE は、検索可能なインデックスを作成します。
構文
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