翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
FT。CREATE
インデックスを作成し、そのインデックスのバックフィルを開始します。詳細については、「ベクトル検索の概要」でインデックス構築の詳細をご覧ください。
[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 キーの場合、フィールド識別子は A JSONパスです。
詳細については、「インデックスフィールドの型」を参照してください。
フィールドの型:
TAG: 詳細については、「タグ
」を参照してください。 NUMERIC: フィールドには数字が含まれています。
TEXT: フィールドにはデータの BLOB が含まれます。
VECTOR: ベクトル検索をサポートするベクトルフィールド。
アルゴリズム – HNSW (階層ナビゲーション可能なスモールワールド) または FLAT (ブルートフォース) です。
attr_count
– アルゴリズム設定として渡される属性の数。これには名前と値の両方が含まれます。{attribute_name} {attribute_value}
– インデックス設定を定義するアルゴリズム固有の key/value ペア。FLAT アルゴリズムの場合、属性は次のとおりです。
必須:
DIM – ベクトル内のディメンションの数。
DISTANCE_METRIC – [L2 | IP | ] のいずれかになりますCOSINE。
TYPE – ベクトルタイプ。サポートされている唯一の型は
FLOAT32
です。
オプション:
INITIAL_CAP – インデックスのメモリ割り当てサイズに影響するインデックスの初期ベクトル容量。
HNSW アルゴリズムの場合、属性は次のとおりです。
必須:
TYPE – ベクトルタイプ。サポートされている唯一の型は
FLOAT32
です。DIM - ベクトルディメンション。正の整数として指定します。最大: 32,768
DISTANCE_METRIC – [L2 | IP | ] のいずれかになりますCOSINE。
オプション:
INITIAL_CAP – インデックスのメモリ割り当てサイズに影響するインデックスの初期ベクトル容量。デフォルトは 1024 です。
M – 各レイヤーのグラフ内の各ノードに許可される発信エッジの最大数。レイヤー 0 では、発信エッジの最大数は 2M です。デフォルトは 16、最大値は 512 です。
EF_CONSTRUCTION – インデックスの作成中に検査されるベクトルの数を制御します。このパラメータの値を大きくすると、インデックスの作成時間が長くなりますが、再現率が向上します。デフォルト値は 200 です。最大値は 4096 です。
EF_RUNTIME – クエリオペレーション中に検査されるベクトルの数を制御します。このパラメータの値を大きくすると、クエリ時間が長くなりますが、再現が改善されます。このパラメータの値はクエリごとに上書きできます。デフォルト値は 10 です。最大値は 4096 です。
戻る
シンプルな文字列の OK メッセージまたはエラー応答を返します。
例
注記
次の例では、Valkey または Redis に送信する前に、データの引用符解除やエスケープ解除など、valkey-cli
例 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
例 2: 一部のデータを入力する
次のコマンドは、redis-cli ターミナルプログラムの引数として実行できるようにフォーマットされています。プログラミング言語クライアント (Python、Ruby、C# など) を使用するデベロッパーは、文字列とバイナリデータを処理するための環境の処理ルールに従う必要があります。
ハッシュデータと 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 つの数値が含まれています。
例 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インデックスは、FLAT
アルゴリズムの代わりに HNSW
アルゴリズムを使用することに注意してください。また、既存の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]}]"