FT.SEARCH

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']]