FT.SEARCH
は、指定されたクエリでインデックスを検索し、指定された値を返します。
クエリ構文の詳細については、クエリ構文をご覧ください。
構文
FT.SEARCH index query [NOCONTENT] [TIMEOUT timeout] [PARAMS nargs name value [ name value ...]] [LIMIT offset num] DIALECT 2
index
(必須): クエリを実行するインデックス。query
(必須): これはクエリです。クエリ構文の詳細については、クエリ構文をご覧ください。NOCONTENT
(省略可): ドキュメント ID のみを返し、コンテンツを除外します。TIMEOUT
(省略可): 検索コマンドのタイムアウト値を設定できます。PARAMS
(省略可): Key-Value ペアの数 x 2。[LIMIT offset num]
(省略可): オフセットと数値カウントを使用してページ分けを選択できます。このパラメータを使用しない場合、デフォルトはLIMIT 0 10
で、最大 10 個のキーを返します。DIALECT 2
(省略可): 言語を指定します。サポートされている唯一の言語は言語 2 です。
コマンドの戻り値
このコマンドは、配列またはエラー メッセージを返します。返される配列の要素は、クエリの最も一致した結果を表します。各配列要素には次の内容が含まれています。
エントリ ハッシュキー
以下の配列。
- キー値: [$score_as ] score_value
- 距離値
- 属性名
- ベクトル値
NOCONTENT
を使用すると、配列要素はドキュメント ID のみで構成されます。
例
この例では、ハッシュ フィールド Vec
に HNSW インデックスを作成したと仮定します。次のフィールド名を含むハッシュ エントリをすでに追加しており、特定の入力ベクトルに最も一致するベクトルを見つけるとします。
ハッシュ フィールド名:
Vec
- フィールド値には実際のベクトルが含まれます。some_hash_key
- 関連付けられたベクトル メタデータ。
検索を実行するには、FT.SEARCH
コマンドを使用します。
FT.SEARCH idx "*=>[KNN 3 @vec $BLOB EF_RUNTIME 40 AS score]" PARAMS 2 BLOB "\x12\xa9\xf5\x6c" DIALECT 2
戻り値の配列:
[3, b'key_192', [b'__embedding_score', b'0.061539709568', b'embedding', b'd\xdeA?\xb7\\xbb>!\xb3\xd8>0\x94n?\xbd\xbco=WX\xe4>kN\x9e>\x1aV0>Z\x92*?\rD\x04>', b'some_hash_key', b'some_hash_key_value_192'], b'key_209', [b'__embedding_score', b'0.0803312063217', b'embedding', b's\xe1W?\xa4\x1d\xad>\xb8\x99Q?\xa9u ?6\xc8\xb2>=j5?!\x13\x96>~\x13\xb9=\xebcX?\x92\x86\xb8>', b'some_hash_key', b'some_hash_key_value_209'], b'key_821', [b'__embedding_score', b'0.0615693926811', b'embedding', b')\x1e\x03?\xa6\x10\xe0>^-\xa1\x00\x87>\x18u\xa2=\x06\xa2;>,\xeb=?\x0e%\xa4>', b'some_hash_key', b'some_hash_key_value_821']]