すべてのプロダクト
Search
ドキュメントセンター

Tair (Redis® OSS-Compatible):ベクトル

最終更新日:Mar 20, 2026

TairVector は、Tair チームによって開発された拡張データ構造であり、ストレージと検索を統合した、高性能でリアルタイムなベクトルデータベースサービスを提供します。

TairVector について

TairVector は、次の図に示すように、多層ハッシュ構造を使用します。TairVector数据结构TairVector は、階層的ナビゲーブルスモールワールド (HNSW) とフラット検索という 2 つのインデックスアルゴリズムを提供します。

  • HNSW:グラフベースのベクトルインデックスを構築し、非同期のメモリ空間解放をサポートします。リアルタイムのインデックス更新を可能にしながら、高いクエリ精度を維持します。

  • 総当たり検索:100% のクエリ精度と高速な挿入速度を提供し、小規模なデータセットに適しています。

TairVector は、ユークリッド距離、内積、コサイン距離、ジャカード距離など、複数の距離メトリックもサポートしています。従来のベクトル検索サービスと比較して、TairVector には次の利点があります。

  • すべてのデータをメモリに格納し、リアルタイムのインデックス更新をサポートして、読み取りおよび書き込みレイテンシを最小限に抑えます。

  • 最適化されたインメモリデータ構造を使用して、メモリ使用量を削減します。

  • すぐに使えるサービスとして機能します。Alibaba Cloud サービスとしてプロビジョニングした後、すぐに使用できます。そのアーキテクチャはシンプルで効率的であり、複雑なコンポーネントの依存関係はありません。

  • ベクトル検索と全文検索を組み合わせたハイブリッド検索をサポートします。

  • タグ属性などのスカラーデータの転置インデックスを作成し、k-最近傍 (KNN) 検索を実行できます。検索中、TairVector は最初にスカラー属性に基づいてデータセットをフィルタリングし、次にフィルタリングされた結果に対して KNN 検索を実行します。

リリースノート

  1. TairVector は 2022 年 10 月 13 日に、Redis 6.0 と互換性のある Tair DRAM ベースのインスタンスとともにリリースされました。

  2. Tair 6.2.2.0 は 2022 年 11 月 22 日にリリースされました。このリリースでは、ジャカード距離メトリックのサポートが追加され、TVS.GETINDEX コマンドが強化されて、index_data_size および attribute_data_size パラメーターを使用してインデックスごとのメモリ使用量をレポートできるようになりました。

  3. Tair 6.2.3.0 は 2022 年 12 月 26 日にリリースされました。このリリースでは、クラスタープロキシモードのサポートが追加され、FLOAT16 ベクトルデータ型が導入され、TVS.MINDEXKNNSEARCH および TVS.MINDEXMKNNSEARCH コマンドが追加されました。

  4. Tair 6.2.8.2 は 2023 年 7 月 4 日にリリースされました。このリリースでは、コサイン距離と HNSW インデックスの自動ガベージコレクションのサポートが追加されました。

  5. Tair 23.8.0.0 は 2023 年 8 月 3 日にリリースされました。このリリースでは、TVS.HEXPIREATTVS.HPEXPIREAT などのコマンドが追加され、インデックス内のキーレベルで有効期間 (TTL) を設定できるようになりました。また、指定したキーに対してベクトル最近傍クエリを実行するための TVS.GETDISTANCE コマンドも追加されました。TVS.CREATEINDEXTVS.KNNSEARCH などのコマンドを更新することで全文検索機能が強化され、ベクトル検索と全文検索を組み合わせたハイブリッド検索が可能になりました。

  6. Tair 24.5.1.0 は 2024 年 6 月 6 日にリリースされました。このリリースでは、最近傍クエリ中にタグ属性情報を返すための TVS.KNNSEARCHFIELD および TVS.MINDEXKNNSEARCHFIELD コマンドが追加されました。

  7. 2024 年 7 月 22 日にリリースされたバージョン 24.7.0.0 では、疎ベクトルにおける HNSW インデックスのサポートが追加されました。

ベストプラクティス

前提条件

インスタンスは、Redis 6.0 以降と互換性のあるメモリ最適化ストレージメディアを使用します。

説明

Redis 5.0 を実行している DRAM ベースのインスタンスは、Redis 6.0 を実行しているインスタンスにアップグレードできません。Redis 6.0 と互換性のある DRAM ベースのインスタンスを使用するには、新しいインスタンスを作成してください。

注意事項

  • TairVector データは Tair インスタンスで管理します。

  • TairVector は、インデックス内のキー分散またはスロット割り当てを制御するための Redis ハッシュタグをサポートしていません。

  • TairVector は、MOVE などの機能をサポートしていません。

  • ビジネスで高いデータの永続性が必要な場合は、準同期モードを有効にしてください。

サポートされるコマンド

表 1. TairVector コマンド

タイプ

コマンド

構文

説明

インデックスメタデータ操作

TVS.CREATEINDEX

TVS.CREATEINDEX index_name dims algorithm distance_method [algo_param_key alog_param_value] ...

ベクトルインデックスを作成し、インデックス作成およびクリアルゴリズムと距離計算式を指定します。このオブジェクトは TVS.DELINDEX コマンドでのみ削除できます。

TVS.GETINDEX

TVS.GETINDEX index_name

特定のベクトルインデックスをクエリし、そのメタデータを取得します。

TVS.DELINDEX

TVS.DELINDEX index_name

指定されたベクトルインデックスとその中のすべてのデータを削除します。

TVS.SCANINDEX

TVS.SCANINDEX cursor [MATCH pattern] [COUNT count]

Tair インスタンス内の特定の基準を満たすベクトルインデックスをスキャンします。

ベクトルデータ操作

TVS.HSET

TVS.HSET index_name key attribute_key attribute_value [attribute_key attribute_value] ...

データレコード (key) をベクトルインデックスに挿入します。レコードが既に存在する場合、既存のレコードを更新して上書きします。

TVS.HGETALL

TVS.HGETALL index_name key

指定されたベクトルインデックス内の key に関連付けられたすべてのデータレコードをクエリします。

TVS.HMGET

TVS.HMGET index_name key attribute_key [attribute_key ...]

指定されたベクトルインデックスの attribute_key 内の key に関連付けられた値をクエリします。

TVS.DEL

TVS.DEL index_name key [key ...]

指定されたベクトルインデックスから指定されたデータレコード (key) を削除します。

TVS.HDEL

TVS.HDEL index_name key attribute_key [attribute_key ...]

ベクトルインデックス内のデータレコード (key) から指定された attribute_key とその値を削除します。

TVS.SCAN

TVS.SCAN index_name cursor [MATCH pattern] [COUNT count] [FILTER filter_string] [VECTOR vector] [MAX_DIST max_distance]

指定されたベクトルインデックス内の特定の基準を満たすデータレコード (key) をスキャンします。

TVS.HINCRBY

TVS.HINCRBY index_name key attribute_key num

指定されたベクトルインデックス内で、指定された key の値を整数 num だけ増やします。

TVS.HINCRBYFLOAT

TVS.HINCRBYFLOAT index_name key attribute_key num

指定されたベクトルインデックス内で、指定された key の値を浮動小数点数 num だけ増やします。

TVS.HPEXPIREAT

TVS.HPEXPIREAT index_name key milliseconds-timestamp

指定されたベクトルインデックス内で、指定された key の絶対有効期限をミリ秒単位で設定します。

TVS.HPEXPIRE

TVS.HPEXPIRE index_name key milliseconds-timestamp

指定されたベクトルインデックス内で、指定された key の相対有効期限をミリ秒単位で設定します。

TVS.HEXPIREAT

TVS.HEXPIREAT index_name key timestamp

指定されたベクトルインデックス内で、指定された key の絶対有効期限を秒単位で設定します。

TVS.HEXPIRE

TVS.HEXPIRE index_name key timestamp

指定されたベクトルインデックス内で、指定された key の相対有効期限を秒単位で設定します。

TVS.HPTTL

TVS.HPTTL index_name key

指定されたベクトルインデックス内で、指定された key の残りの有効期間 (TTL) をミリ秒単位で確認します。

TVS.HTTL

TVS.HTTL index_name key

指定されたベクトルインデックス内で、指定された key の残りの TTL を秒単位で確認します。

TVS.HPEXPIRETIME

TVS.HPEXPIRETIME index_name key

指定されたベクトルインデックス内で、指定された key の絶対有効期限をミリ秒単位で確認します。

TVS.HEXPIRETIME

TVS.HEXPIRETIME index_name key

指定されたベクトルインデックス内で、指定された key の絶対有効期限を秒単位で確認します。

ベクトル最近傍クエリ

TVS.KNNSEARCH

TVS.KNNSEARCH index_name topN vector [filter_string] [param_key param_value]

指定されたベクトルインデックス内の指定されたベクトル (VECTOR) に対して最近傍クエリを実行します。クエリは最大 topN 件の結果を返します。

TVS.KNNSEARCHFIELD

TVS.KNNSEARCHFIELD index_name topN vector field_count field_name [field_name ...] [filter_string] [param_key param_value]

指定されたベクトルインデックス内の指定されたベクトル (VECTOR) に対して最近傍クエリを実行します。検索ロジックは TVS.KNNSEARCH と同じです。さらに、このコマンドは結果とともにタグ属性を返します。

TVS.GETDISTANCE

TVS.GETDISTANCE index_name vector key_count key [key, ...] [TOPN topN] [FILTER filter_string] [MAX_DIST max_distance]

指定されたベクトルインデックス内の指定されたキーのリストに対してベクトル最近傍クエリを実行します。

TVS.MKNNSEARCH

TVS.MKNNSEARCH index_name topN vector_count vector [vector ...] [filter_string] [param_key param_value]

指定されたベクトルインデックス内の複数のベクトル (VECTOR) に対して最近傍クエリを実行します。

TVS.MINDEXKNNSEARCH

TVS.MINDEXKNNSEARCH index_count index_name [index_name ...] topN vector [filter_string] [param_key param_value]

複数のベクトルインデックスにまたがって、指定されたベクトル (VECTOR) に対して最近傍クエリを実行します。

TVS.MINDEXKNNSEARCHFIELD

TVS.MINDEXKNNSEARCHFIELD index_count index_name [index_name ...] topN vector field_count field_name [field_name ...] [filter_string] [param_key param_value]

複数のベクトルインデックスにまたがって、指定されたベクトル (VECTOR) に対して最近傍クエリを実行します。結果とともにタグ属性が返されます。

TVS.MINDEXMKNNSEARCH

TVS.MINDEXMKNNSEARCH index_count index_name [index_name ...] topN vector_count vector [vector ...] [filter_string] [param_key param_value]

複数のベクトルインデックスにまたがって、複数のベクトル (VECTOR) に対して最近傍クエリを実行します。

一般

DEL

DEL key [key ...]

ネイティブの Redis DEL コマンドを使用して、1 つ以上の TairVector データエントリを削除します。

説明

次のリストは、このトピックで使用されるコマンド構文の規則を説明しています。

  • 大文字のキーワード:コマンドのキーワードを示します。

  • イタリック体のテキスト:変数を示します。

  • [options]:囲まれたパラメーターがオプションであることを示します。角括弧で囲まれていないパラメーターは指定する必要があります。

  • A|B:縦棒 (|) で区切られたパラメーターが相互に排他的であることを示します。パラメーターのいずれか 1 つのみを指定できます。

  • ...:この記号の前のパラメーターを繰り返し指定できることを示します。

TVS.CREATEINDEX

カテゴリ

説明

構文

TVS.CREATEINDEX index_name dims algorithm distance_method [algo_param_key alog_param_value] ...

時間計算量

O(1)

コマンドの説明

ベクトルインデックスを作成し、インデックス作成およびクリアルゴリズムと距離計算式を指定します。このオブジェクトは TVS.DELINDEX コマンドでのみ削除できます。

オプション

  • index_name:ベクトルインデックスの名前。

  • dims:ベクトルの次元。インデックスに挿入されるベクトルは同じ次元でなければなりません。有効な値:1~32768。

  • algorithm:インデックスの作成とクエリに使用されるアルゴリズム。有効な値:

    • FLAT:インデックスを作成せずにベクトルを検索するためにフラット検索アルゴリズムを使用します。このアルゴリズムは、10,000 レコード未満のデータセットに適しています。

    • HNSW:HNSW グラフを使用してインデックスを作成し、HNSW アルゴリズムを使用してベクトルを検索します。このアルゴリズムは大規模なデータセットに適しています。

  • distance_method:2 つのベクトル間の距離を計算するために使用されるメソッド。有効な値:

    • L2:ユークリッド距離の二乗。

    • IP:内積。次の式を使用して 2 つのベクトル間の距離を計算します:1 - 2 つのベクトルの内積

    • COSINE:コサイン距離。次の式を使用して 2 つのベクトル間の距離を計算します:1 - 2 つのベクトル間の角度のコサイン。このメソッドは、書き込まれたベクトルを単位ベクトル (L2 正規化) に変換します。そのため、ベクトルの結果は元のベクトルの値と異なる場合があります。

    • JACCARD:ジャカード距離。次の式を使用して 2 つのベクトル間のジャカード距離を計算します:1 - ジャカード係数。このパラメーターを JACCARD に設定する場合、data_type パラメーターを BINARY に設定する必要があります。

  • algo_param_key および alog_param_value

    • data_type:(密) ベクトルのデータ型。有効な値:

      • FLOAT32 (デフォルト):4 バイトの単精度浮動小数点数。

      • FLOAT16:2 バイトの半精度浮動小数点数 (IEEE 754-2008 規格)。このデータ型はベクトルストレージスペースを節約しますが、一部の精度が失われます。FLOAT16 の値の範囲は [-65519, 65519] です。

      • BINARY:0 と 1 のみを含むバイナリベクトルで、ジャカード距離計算式のみをサポートします。

    • HNSW インデックス固有のパラメーター:

      • ef_constructHNSW アルゴリズムを使用してベクトルインデックスを作成する場合の動的配列の長さ。デフォルト値:100。有効な値:1~1000。値が大きいほど、近似最近傍 (ANN) 検索の精度が高くなります。これにより、パフォーマンスのオーバーヘッドが増加します。

      • M:グラフインデックス構造の各レイヤーにおける最大出次数。デフォルト値:16。有効な値:1~100。値が大きいほど、ANN 検索の精度が高くなります。これにより、パフォーマンスのオーバーヘッドが増加します。

      • auto_gc:インデックスの自動メモリ空間解放を有効にするかどうかを指定します。有効な値:false (デフォルト、自動 GC を無効化) および true (自動 GC を有効化)。この機能には、マイナーバージョン 6.2.8.2 以降が必要です。HNSW インデックスは、マーク削除を使用してベクトルを削除します。この機能を有効にすると、インデックスは自動的にメモリ空間を解放し、メモリ使用量の削減に役立ちます。ただし、この機能は最近傍クエリのインデックスパフォーマンスに影響します。この機能は、メモリ使用量が重要で、最近傍クエリのパフォーマンス低下が許容できるシナリオでのみ有効にすることを推奨します。

    • HybridIndex (ハイブリッドインデックス) 固有のパラメーター:

      • 特定のタグフィールドの転置インデックスを作成するには、事前にフィールド名とその対応するデータ型を指定します。

        構文 inverted_index_<field_name> int|long|float|double|string を使用して、field_name フィールドの転置インデックスを作成します。サポートされているデータ型は INT、LONG、FLOAT、DOUBLE、STRING です。field_name とデータ型キーワードは小文字でなければなりません。

        たとえば、STRING 型の productname という名前のフィールドに転置インデックスを作成するには、inverted_index_productname string を使用します。

      • lexical_algorithm:全文検索インデックスアルゴリズムを指定します。

        • bm25:Okapi BM25 アルゴリズム。全文検索に適しています。

          • 後で TVS.HSET コマンドを使用してデータを挿入する場合、attribute_key を TEXT キーワード (大文字と小文字を区別) に設定します。attribute_value は自動的に全文検索用にインデックス付けされます。

          • 生のテキストを Tair ベクトルサービスに渡してインデックスを構築できます。

        • vector:ベクトルアルゴリズム。疎ベクトルに適しています。

          生のテキストを疎ベクトルにエンコードし、ベクトルアルゴリズムへの入力として提供する必要があります。入力を "[[2,0.221],[42,09688],...]" 形式で指定します。キーフィールドはインデックスを指定し、uint32_t 型でなければなりません。値フィールドは字句頻度プロファイルを指定し、FLOAT 型でなければなりません。

      • lexical_algorithm パラメーターを bm25 に設定した場合、次の追加パラメーターを設定できます。

        • analyzer:テキスト分割に使用されるアナライザー。有効な値:jieba (デフォルト) および ik_smart

        • k1:BM25 アルゴリズムにおける単語頻度の飽和度。値は 0 より大きくなければなりません。デフォルト値:1.2。

        • b:BM25 アルゴリズムにおけるドキュメント長が関連性スコアに与える影響。有効な値:0~1。デフォルト値:0.75。

      • lexical_algorithm パラメーターを vector に設定した場合、次の追加パラメーターを設定できます。

        • lexical_use_hnsw:疎ベクトルに HNSW インデックスを使用するかどうかを指定します。有効な値:1 (HNSW インデックスを使用) および 0 (デフォルト、転置インデックスを使用)。

        • lexical_hnsw_mlexical_use_hnsw が 1 に設定されている場合、このパラメーターは HNSW インデックス固有の M パラメーターを表します。詳細については、「HNSW インデックス固有のパラメーター」をご参照ください。

        • lexical_hnsw_ef_constructlexical_use_hnsw が 1 に設定されている場合、このパラメーターは HNSW インデックス固有の ef_construct パラメーターを表します。詳細については、「HNSW インデックス固有のパラメーター」をご参照ください。

      • hybrid_ratio:クエリ中にベクトル検索に割り当てられるデフォルトの重み。有効な値:0~1。デフォルト値:0.5。値は FLOAT 型でなければなりません。全文検索に割り当てられる重みは、1 - hybrid_ratio の値 に等しくなります。

出力

  • 操作が成功した場合、OK が返されます。

  • それ以外の場合は、エラーメッセージが返されます。

コマンド例:

# HNSW アルゴリズムとジャカード距離計算式を使用して、次元が 2 でデータ型が BINARY のベクトルのベクトルインデックスを作成します。
TVS.CREATEINDEX index_name0 2 HNSW JACCARD data_type BINARY

# HNSW アルゴリズムとユークリッド距離計算式を使用して、次元が 2 でデータ型が FLOAT32 のベクトルのベクトルインデックスを作成します。
TVS.CREATEINDEX index_name1 2 HNSW L2 

# フラット検索アルゴリズムと内積計算式を使用して、次元が 2 でデータ型が FLOAT32 のベクトルのベクトルインデックスを作成します。
TVS.CREATEINDEX index_name2 2 FLAT IP 

# フラット検索アルゴリズムとジャカード距離計算式を使用して、次元が 2 でデータ型が BINARY のベクトルのベクトルインデックスを作成します。
TVS.CREATEINDEX index_name3 2 FLAT JACCARD data_type BINARY

# HNSW アルゴリズム、BM25 全文検索アルゴリズム、および内積計算式を使用して、次元が 2 でデータ型が FLOAT32 のベクトルのベクトルインデックスを作成します。STRING 型の productname フィールドを転置インデックスとして指定します。
TVS.CREATEINDEX index_name4 2 HNSW IP lexical_algorithm bm25 inverted_index_productname string

# HNSW アルゴリズムと内積計算式を使用して、次元が 2 のベクトルの疎ベクトルを作成します。
TVS.CREATEINDEX index_name5 2 HNSW IP lexical_algorithm vector lexical_use_hnsw 1 lexical_hnsw_m 8 lexical_hnsw_ef_construct 100

出力例:

OK

TVS.GETINDEX

カテゴリ

説明

構文

TVS.GETINDEX index_name

時間計算量

O(1)

コマンドの説明

特定のベクトルインデックスをクエリし、そのメタデータを取得します。

オプション

  • index_name:ベクトルインデックスの名前。

戻り値

  • 操作が成功した場合、ベクトルインデックスのメタデータが返されます。

  • 指定されたベクトルインデックスが存在しない場合、(empty array) が返されます。

  • それ以外の場合は、エラーメッセージが返されます。

事前に次のコマンドを実行します。

TVS.CREATEINDEX my_index 2 HNSW L2 auto_gc true lexical_algorithm bm25
TVS.HSET my_index key0 VECTOR [1,2] creation_time 1730
TVS.HSET my_index key1 VECTOR [3,4] creation_time 1740
TVS.HSET my_index key2 VECTOR [5,6] creation_time 1750

コマンド例 (algorithm パラメーターを HNSW に設定):

TVS.GETINDEX my_index

出力例:

 1) "lexical_term_count"   // 全文検索インデックス内のトークン数。データ型:INT。
 2) "0"
 3) "lexical_record_count" // 全文検索インデックス内のドキュメント数。データ型:INT。
 4) "0"
 5) "lexical_algorithm"    // 全文検索インデックスアルゴリズム。
 6) "bm25"
 7) "auto_gc"              // インデックスの自動メモリ空間解放が有効かどうかを示します。このパラメーターは HNSW アルゴリズムを使用する場合にのみ表示されます。
 8) "1"
 9) "dimension"            // ベクトルの次元。
10) "2"
11) "attribute_data_size"  // 属性情報が使用するメモリ。単位:バイト。
12) "3720"
13) "distance_method"      // 2 つのベクトル間の距離を計算するために使用されるメソッド。
14) "L2"
15) "data_type"            // ベクトルのデータ型。
16) "FLOAT32"
17) "algorithm"            // インデックスアルゴリズム。
18) "HNSW"
19) "index_data_size"      // ベクトルが使用するメモリ。単位:バイト。
20) "105128040"
21) "M"                    // グラフインデックス構造の各レイヤーにおける最大出次数。このパラメーターは HNSW アルゴリズムを使用する場合にのみ表示されます。
22) "16"
23) "data_count"           // ユーザーレコード数。
24) "3"
25) "current_record_count" // ベクトルの総数。
26) "3"
27) "ef_construct"         // HNSW アルゴリズムを使用する場合の動的配列の長さ。
28) "100"
29) "inverted_index_productname" // 転置インデックス情報:フィールド名、データ型、サイズ。
30) "field: productname, type: string, size: 1"
31) "delete_record_count"  // 削除予定のベクトル数。
32) "0"

TVS.DELINDEX

カテゴリ

説明

構文

TVS.DELINDEX index_name

時間計算量

O(N)。N はベクトルインデックス内のキーの数です。

コマンドの説明

指定されたベクトルインデックスとその中のすべてのデータを削除します。

オプション

  • index_name:ベクトルインデックスの名前。

戻り値

  • 操作が成功した場合、ベクトルインデックスが削除され、値 1 が返されます。

  • 指定されたベクトルインデックスが存在しない場合、値 0 が返されます。

  • それ以外の場合は、エラーメッセージが返されます。

コマンド例:

TVS.DELINDEX index_name0

出力例:

 (integer) 1

TVS.SCANINDEX

カテゴリ

説明

構文

TVS.SCANINDEX cursor [MATCH pattern] [COUNT count]

時間計算量

O(N)。N は Tair インスタンス内のベクトルインデックスの数です。

コマンドの説明

Tair インスタンス内の特定の基準を満たすベクトルインデックスをスキャンします。

オプション

  • cursor:このスキャンで使用されるカーソル。カーソル位置は 0 から始まります。

  • pattern:パターンマッチングに使用される式。

  • count:スキャンするキーの数。デフォルト値:10。システムは、各反復で count パラメーターで指定された正確なキー数を常に返すとは限りません。

出力

  • 操作が成功した場合、配列が返されます。

    • 配列の要素 1:次のスキャンに使用されるカーソル。スキャンが完了した場合、値 0 が返されます。

    • 2 番目の要素:現在のクエリのベクトルインデックス名 (index_name)。

  • それ以外の場合は、エラーメッセージが返されます。

コマンド例:

TVS.SCANINDEX 0

出力例:

1) "0"
2) 1) "index_name1"
   2) "index_name0"
   3) "index_name2"
   4) "index_name3"

コマンド例 (pattern パラメーターを含む):

TVS.SCANINDEX 0 MATCH **name[0|1]

出力例:

1) "0"
2) 1) "index_name1"
   2) "index_name0"

TVS.HSET

カテゴリ

説明

構文

TVS.HSET index_name key attribute_key attribute_value [attribute_key attribute_value] ...

時間計算量

データの挿入または更新にベクトル値の作成または更新が含まれない場合、時間計算量は O(1) です。それ以外の場合、時間計算量は O(log(N)) です。N はベクトルインデックス内のキーの数です。

コマンドの説明

データレコード (key) をベクトルインデックスに挿入します。レコードが既に存在する場合、既存のレコードを更新して上書きします。

オプション

  • index_name:ベクトルインデックスの名前。

  • key:レコードのプライマリキー識別子。TVS.DEL コマンドを使用してオブジェクトを削除できます。

  • attribute_key および attribute_value:キーと値のペアの形式で指定されるレコードの値。

    • ベクトルを挿入するには、attribute_keyVECTOR (大文字と小文字を区別) に設定し、attribute_valuedims パラメーターで指定されたベクトルインデックスの次元と同じ次元を持つベクトル文字列に設定します。例:VECTOR [1,2]。キーには 1 つのベクトルしか書き込めません。ベクトルを複数回書き込むと、既存のデータは上書きされます。

    • 必要なパラメーターが指定された HybridIndex にテキストデータを挿入するには、attribute_keyTEXT (大文字と小文字を区別) に設定し、attribute_value"TairVector is an in-house vector database service of Tair" のようなテキストデータ、または "[[2,0.221],[42,09688],...]" のようなベクトル化されたデータに設定します。

    • 他の属性を挿入するには、これらの属性に関連するカスタムパラメーターを指定します。例:create_time 1663637425 および location Hangzhou

出力

  • 操作が成功した場合、挿入されたキーの数が返されます。既存のフィールドが更新された場合、値 0 が返されます。

  • それ以外の場合は、エラーメッセージが返されます。

コマンド例:

TVS.HSET my_index key5 VECTOR [7,8] TEXT "TairVector is an in-house vector database service of Tair" create_time 1800

サンプル出力:

(整数) 3

TVS.HGETALL

カテゴリ

説明

構文

TVS.HGETALL index_name key

時間計算量

O(1)

コマンドの説明

指定されたベクトルインデックス内の key に関連付けられたすべてのデータレコードをクエリします。

オプション

  • index_name:ベクトルインデックスの名前。

  • key:レコードのプライマリキー識別子。

出力

  • 操作が成功した場合、key のすべてのデータレコードが返されます。

  • 指定されたベクトルインデックスまたは key が存在しない場合、(empty array) が返されます。

  • それ以外の場合は、エラーメッセージが返されます。

コマンド例:

TVS.HGETALL index_name0 key0

出力例:

1) "VECTOR"
2) "[1,2]"
3) "location"
4) "Hangzhou"
5) "create_time"
6) "1663637425"

TVS.HMGET

カテゴリ

説明

構文

TVS.HMGET index_name key attribute_key [attribute_key ...]

時間計算量

O(1)

コマンドの説明

指定されたベクトルインデックスの attribute_key 内の key に関連付けられた値をクエリします。

オプション

  • index_name:ベクトルインデックスの名前。

  • key:このレコードのプライマリキー識別子。

  • attribute_key:管理する属性キー。複数のキーを指定できます。特定のベクトルをクエリするには、attribute_key を VECTOR (大文字と小文字を区別) に設定します。全文検索インデックス内の生のテキストデータをクエリするには、attribute_key を TEXT (大文字と小文字を区別) に設定します。

戻り値

  • 操作が成功した場合、attribute_key の値が返されます。

  • それ以外の場合は、エラーメッセージが返されます。

コマンド例:

TVS.HMGET index_name0 key0 create_time location VECTOR TEXT

出力例:

1) "1800"
2) "[7,8]"
3) "TairVector is an in-house vector database service of Tair"

TVS.DEL

カテゴリ

説明

構文

TVS.DEL index_name key [key ...]

時間計算量

O(1)

コマンドの説明

指定されたベクトルインデックスから指定されたデータレコード (key) を削除します。

オプション

  • index_name:ベクトルインデックスの名前。

  • key:このレコードのプライマリキー識別子。複数の値を指定できます。

戻り値

  • 操作が成功した場合、指定された key が削除され、削除された key の数が返されます。

  • 指定されたベクトルインデックスが存在しない場合、値 0 が返されます。

  • それ以外の場合は、エラーメッセージが返されます。

コマンド例:

TVS.DEL index_name0 keyV

出力例:

 (integer) 1

TVS.HDEL

カテゴリ

説明

構文

TVS.HDEL index_name key attribute_key [attribute_key ...]

時間計算量

O(1)

コマンドの説明

ベクトルインデックス内のデータレコード (key) から指定された attribute_key とその値を削除します。

オプション

  • index_name:ベクトルインデックスの名前。

  • key:レコードのプライマリキー識別子。複数の値を指定できます。

  • attribute_key:管理する属性キー。複数のキーを指定できます。ベクトルデータを削除するには、attribute_key を VECTOR (大文字と小文字を区別) に設定します。全文検索インデックスデータを削除するには、attribute_key を TEXT (大文字と小文字を区別) に設定します。

(戻り値)

  • 操作が成功した場合、指定された属性が削除され、削除された attribute_key の数が返されます。

  • 指定されたベクトルインデックスが存在しない場合、値 0 が返されます。

  • それ以外の場合は、エラーメッセージが返されます。

コマンド例:

TVS.HDEL index_name0 keyc VECTOR

出力例:

 (integer) 1

TVS.SCAN

カテゴリ

説明

構文

TVS.SCAN index_name cursor [MATCH pattern] [COUNT count] [FILTER filter_string] [VECTOR vector] [MAX_DIST max_distance]

時間計算量

O(N)。N はベクトルインデックス内のキーの数です。

コマンドの説明

指定されたベクトルインデックス内の特定の基準を満たすデータレコード (key) をスキャンします。

オプション

  • index_name:ベクトルインデックスの名前。

  • cursor:このスキャンで使用されるカーソル。カーソル位置は 0 から始まります。

  • pattern パラメーターはパターンマッチングを指定します。

  • count:スキャンするキーの数。デフォルト値:10。システムは、各反復で count パラメーターで指定された正確なキー数を常に返すとは限りません。

  • filter_string:フィルター条件。

    • + - * / < > ! = ( ) && || などの演算子がサポートされています。文字列のサイズを比較することはできません。文字列を入力する場合は、エスケープ文字 (\) を追加する必要があります。例:create_time > 1663637425 && location == \"Hangzhou\"。

    • 演算子の両側にスペースを追加する必要があります。例:"creation_time > 1735"。

    • BOOLEAN データ型を使用する flag == true 形式はサポートされていません。flag == \"true\" 形式を使用できます。これは、ブール値を文字列として渡します。

  • vector:クエリベクトル。このパラメーターは max_distance パラメーターと一緒に使用する必要があります。

  • max_distance:許容される最大距離。このパラメーターは vector パラメーターと一緒に使用する必要があります。これら 2 つのパラメーターを指定すると、返される配列には、クエリ vector から max_distance パラメーターで指定された距離内にあるすべてのベクトルが含まれます。

出力

  • 操作が成功した場合、配列が返されます。

    • 配列の要素 1:次のスキャンに使用されるカーソル。スキャンが完了した場合、値 0 が返されます。

    • 配列の要素 2:スキャンされた key の名前。

  • それ以外の場合は、エラーメッセージが返されます。

コマンド例:

TVS.SCAN index_name0 0

出力例:

1) "0"
2) 1) "key0"
   2) "keyV"

TVS.HINCRBY

カテゴリ

説明

構文

TVS.HINCRBY index_name key attribute_key num

時間計算量

O(1)

コマンドの説明

指定されたベクトルインデックス内で、指定された key の値を整数 num だけ増やします。

指定された attribute_key が存在しない場合、自動的に作成され、指定された値が割り当てられます。attribute_key が既に存在する場合、対応するレコードが更新され、初期値が上書きされます。

オプション

  • index_name:ベクトルインデックスの名前。

  • key:レコードのプライマリキー識別子。

  • attribute_key:管理する属性キー。

  • num:attribute_key の値を増やす整数値。

出力

  • 操作は成功しました。num を加算した後の値が返されます。

  • それ以外の場合は、エラーメッセージが返されます。

コマンド例:

TVS.HINCRBY index_name0 key0 tv01 20 

出力例:

(integer) 20

TVS.HINCRBYFLOAT

カテゴリ

説明

構文

TVS.HINCRBYFLOAT index_name key attribute_key num

時間計算量

O(1)

コマンドの説明

指定されたベクトルインデックス内で、指定された key の値を浮動小数点数 num だけ増やします。

指定された `attribute_key` が存在しない場合、システムは自動的にそれを作成し、値を割り当てます。レコードが既に存在する場合、システムはそれを更新し、初期値を上書きします。

オプション

  • index_name:ベクトルインデックスの名前。

  • key:このレコードのプライマリキー識別子。

  • attribute_key:管理する属性キー。

  • num:attribute_key の値を増やす浮動小数点数。

出力

  • 操作は成功しました。値は num を加算した結果です。

  • それ以外の場合は、エラーメッセージが返されます。

コマンド例:

TVS.HINCRBYFLOAT index_name0 key0 tv02 9.34

出力例:

"9.34"

TVS.HPEXPIREAT

カテゴリ

説明

構文

TVS.HPEXPIREAT index_name key milliseconds-timestamp

時間計算量

O(1)

コマンドの説明

指定されたベクトルインデックス内で、指定された key の絶対有効期限をミリ秒単位で設定します。

オプション

  • index_name:ベクトルインデックスの名前。

  • key:レコードのプライマリキー識別子。

  • milliseconds-timestamp:ミリ秒単位の UNIX タイムスタンプ。指定されたタイムスタンプが現在の時刻より前の場合、key はすぐに有効期限切れになります。

戻り値

  • 1:key が存在し、正常に設定されました。

  • key が存在しない場合、値 0 が返されます。

  • それ以外の場合は、エラーメッセージが返されます。

コマンド例:

TVS.HPEXPIREAT index_name0 key1 16914619090000

出力例:

(integer) 1

TVS.HPEXPIRE

カテゴリ

説明

構文

TVS.HPEXPIRE index_name key milliseconds-timestamp

時間計算量

O(1)

コマンドの説明

指定されたベクトルインデックス内で、指定された key の相対有効期限をミリ秒単位で設定します。

オプション

  • index_name:ベクトルインデックスの名前。

  • key:レコードのプライマリキー識別子。

  • milliseconds-timestamp:相対有効期限。単位:ミリ秒。

(戻り値)

  • key が存在し、正常に設定された場合、値 1 が返されます。

  • key が存在しない場合、値 0 が返されます。

  • それ以外の場合は、エラーメッセージが返されます。

コマンド例:

TVS.HPEXPIRE index_name0 key1 1000

出力例:

(integer) 1

TVS.HEXPIREAT

カテゴリ

説明

構文

TVS.HEXPIREAT index_name key timestamp

時間計算量

O(1)

コマンドの説明

指定されたベクトルインデックス内で、指定された key の絶対有効期限を秒単位で設定します。

オプション

  • index_name:ベクトルインデックスの名前。

  • key:レコードのプライマリキー識別子。

  • timestamp:秒単位の UNIX タイムスタンプ。指定されたタイムスタンプが現在の時刻より前の場合、key はすぐに有効期限切れになります。

戻り値

  • key が存在し、正常に設定された場合、値 1 が返されます。

  • key が存在しない場合、値 0 が返されます。

  • それ以外の場合は、エラーメッセージが返されます。

コマンド例:

TVS.HPEXPIREAT index_name0 key2 1691466981

出力例:

(integer) 1

TVS.HEXPIRE

カテゴリ

説明

構文

TVS.HEXPIRE index_name key timestamp

時間計算量

O(1)

コマンドの説明

指定されたベクトルインデックス内で、指定された key の相対有効期限を秒単位で設定します。

オプション

  • index_name:ベクトルインデックスの名前。

  • key:レコードのプライマリキー識別子。

  • timestamp:相対有効期限。単位:秒。

戻り値

  • key が存在し、正常に設定された場合、値 1 が返されます。

  • key が存在しない場合、値 0 が返されます。

  • それ以外の場合は、エラーメッセージが返されます。

コマンド例:

TVS.HPEXPIREAT index_name0 key2 100

出力例:

(integer) 1

TVS.HPTTL

カテゴリ

説明

構文

TVS.HPTTL index_name key

時間計算量

O(1)

コマンドの説明

指定されたベクトルインデックス内で、指定された key の残りの有効期間 (TTL) をミリ秒単位で確認します。

オプション

  • index_name:ベクトルインデックスの名前。

  • key:このレコードのプライマリキー識別子。

出力

  • key が存在し、TTL が設定されている場合、残りの TTL が返されます。単位:ミリ秒。

  • key が存在するが TTL が設定されていない場合、値 -1 が返されます。

  • key または index_name が存在しない場合、値 -2 が返されます。

  • それ以外の場合は、エラーメッセージが返されます。

コマンド例:

TVS.HPTTL index_name0 key2

出力例:

(integer) 65417

TVS.HTTL

カテゴリ

説明

構文

TVS.HTTL index_name key

時間計算量

O(1)

コマンドの説明

指定されたベクトルインデックス内で、指定された key の残りの TTL を秒単位で確認します。

オプション

  • index_name:ベクトルインデックスの名前。

  • key:レコードのプライマリキー識別子。

戻り値

  • key が存在し、TTL が設定されている場合、残りの TTL が返されます。単位:秒。

  • key が存在するが TTL が設定されていない場合、値 -1 が返されます。

  • key または index_name が存在しない場合、値 -2 が返されます。

  • それ以外の場合は、エラーメッセージが返されます。

コマンド例:

TVS.HTTL index_name0 key2

出力例:

(integer) 58

TVS.HPEXPIRETIME

カテゴリ

説明

構文

TVS.HPEXPIRETIME index_name key

時間計算量

O(1)

コマンドの説明

指定されたベクトルインデックス内で、指定された key の絶対有効期限をミリ秒単位で確認します。

オプション

  • index_name:ベクトルインデックスの名前。

  • key:レコードのプライマリキー識別子。

出力

  • key が存在し、有効期間 (TTL) が絶対有効期限に設定されている場合、ミリ秒単位の Unix タイムスタンプとして指定されます。

  • key が存在するが絶対有効期限が設定されていない場合、値 -1 が返されます。

  • key または index_name が存在しない場合、値 -2 が返されます。

  • それ以外の場合は、エラーメッセージが返されます。

コマンド例:

TVS.HPEXPIRETIME index_name0 key2

出力例:

(integer) 1691473985764

TVS.HEXPIRETIME

カテゴリ

説明

構文

TVS.HEXPIRETIME index_name key

時間計算量

O(1)

コマンドの説明

指定されたベクトルインデックス内で、指定された key の絶対有効期限を秒単位で確認します。

オプション

  • index_name:ベクトルインデックスの名前。

  • key:レコードのプライマリキー識別子。

戻り値

  • key が存在し、有効期間 (TTL) が設定されている場合、有効期限は秒単位の絶対 Unix タイムスタンプです。

  • key が存在するが絶対有効期限が設定されていない場合、値 -1 が返されます。

  • key または index_name が存在しない場合、値 -2 が返されます。

  • それ以外の場合は、エラーメッセージが返されます。

コマンド例:

TVS.HEXPIRETIME index_name0 key2

出力例:

(integer) 1691473985

TVS.KNNSEARCH

カテゴリ

説明

構文

TVS.KNNSEARCH index_name topN vector [filter_string] [param_key param_value]

時間計算量

  • HNSW アルゴリズム:O(log(N))

  • FLAT アルゴリズム:O(N)

N はベクトルインデックス内のキーの数です。

コマンドの説明

指定されたベクトルインデックス内の指定されたベクトル (VECTOR) に対して最近傍クエリを実行します。クエリは最大 topN 件の結果を返します。

オプション

  • index_name:ベクトルインデックスの名前。

  • topN:返すベクトルの数。有効な値:1~10000。

  • vector:最近傍クエリに使用されるベクトル。ハイブリッドインデックスを使用して全文検索のみを実行する場合は、このフィールドを "" に設定します。

  • filter_string:フィルター条件。

    • +-*/<>!=()&&|| などの演算子がサポートされています。文字列のサイズを比較することはできません。文字列を入力する場合は、エスケープ文字 (\) を追加する必要があります。例:"create_time > 1663637425 && location == \"Hangzhou\""

    • 演算子の両側にスペースを追加する必要があります。例:"creation_time > 1735"

    • flag == true 形式の BOOLEAN データ型はサポートされていません。flag == "true" 形式を使用できます。これは、ブール値を文字列として渡します。

  • param_key および param_value:クエリの操作パラメーター。有効な値:

    • ef_search:インデックスをクエリする際の動的配列の長さ。デフォルト値:100。有効な値:1~1000。値が大きいほど、検索精度が高くなります。これにより、パフォーマンスのオーバーヘッドが増加します。このパラメーターは HNSW アルゴリズム固有です。

      sparse_ef_search:ハイブリッドインデックスを作成する際に疎ベクトルに HNSW インデックスを使用する場合、HNSW インデックスの ef_search パラメーターには sparse_ef_search パラメーターを使用します。

    • MAX_DIST:許容される最大距離。このパラメーターは FLOAT 型でなければなりません。指定されたベクトルと近傍ベクトル間の距離がこの値を超える場合、近傍ベクトルのキーはフィルタリングされ、検索結果から除外されます。

    • TEXT:ハイブリッド検索に使用されるテキスト。このフィールドにはテキストまたはベクトルデータを渡すことができます。このフィールドを指定しない場合、または空の文字列 ("") を渡した場合、ベクトル検索のみが実行されます。

    • hybrid_ratio:クエリ中のベクトル検索に割り当てられる重み。デフォルトでは、このフィールドは TVS.CREATEINDEX コマンドの hybrid_ratio パラメーターで指定された値を取ります。有効な値:0~1。値は FLOAT 型でなければなりません。クエリ結果における全文検索に割り当てられる重みは、1 - hybrid_ratio の値 に等しくなります。

    • デフォルトでは、システムは k-最近傍 (KNN) ベクトル検索の後にスカラーフィルタリングを実行します。これは PostFilter ポリシーとして知られています。

      • vector_filter_count:ベクトル検索中にフィルタリングできるレコードの最大数。デフォルト値:10000。

        PostFilter ポリシーでは、ベクトル検索結果からフィルタリングされたレコード数が vector_filter_count の値を超えても、操作が十分なデータを収集して返すことができない場合、システムはベクトル検索を終了します。

      • fulltext_filter_count:全文検索中にフィルタリングできるレコードの最大数。デフォルト値:10000。

        PostFilter ポリシーでは、全文検索結果からフィルタリングされたレコード数が fulltext_filter_count の値を超えても、操作が十分なデータを収集して返すことができない場合、システムは全文検索を終了します。

      • システムが KNN ベクトル検索を実行する前に転置インデックスに基づいてスカラーフィルタリングを実行させたい場合は、クエリに search_policy scala パラメーターを追加して PreFilter ポリシーを使用します。

        ivf_filter_count パラメーターも利用可能で、転置インデックスに基づいてフィルタリングできるレコードの最大数を指定します。デフォルト値は 10000 です。PreFilter ポリシーでは、この初期スカラーフィルタリング段階で処理されるレコード数が ivf_filter_count の値を超えると、システムは自動的に PostFilter ポリシーにデグレードします。

      説明

      ほとんどの場合、これらのパラメーターのデフォルト設定は、精度を維持しつつ許容可能なレイテンシを保証します。ユースケースに合わせてリクエストごとに調整できます。ただし、値を増やすとクエリのレイテンシが増加する可能性があります。

出力

  • 操作が成功した場合、指定されたベクトルからの距離が昇順で近傍ベクトルの keys が返されます。

  • 指定されたベクトルインデックスが存在しない場合、(empty array) が返されます。

  • それ以外の場合は、エラーメッセージが返されます。

事前に次のコマンドを実行します。

TVS.CREATEINDEX my_index_k 2 HNSW L2 inverted_index_productname string
TVS.HSET my_index_k key0 VECTOR [1,2] creation_time 1730 productname "Aliyun"
TVS.HSET my_index_k key1 VECTOR [3,4] creation_time 1740 productname "other"
TVS.HSET my_index_k key2 VECTOR [5,6] creation_time 1750 productname "Aliyun"

コマンド例 1:

TVS.KNNSEARCH my_index_k 2 [3,3.1] "creation_time > 1735"

出力例 1:

1) "key1"
2) "0.81000018119812012"
3) "key2"
4) "12.410000801086426"

コマンド例 2:

TVS.KNNSEARCH my_index_k 2 [3,3.1]  "creation_time > 1735 && productname ==  \"Aliyun\"" search_policy scala ivf_filter_count 15000

出力例 2:

1) "key2"
2) "12.410000801086426"

TVS.KNNSEARCHFIELD

カテゴリ

説明

構文

TVS.KNNSEARCHFIELD index_name topN vector field_count field_name [field_name ...] [filter_string] [param_key param_value]

時間計算量

  • HNSW アルゴリズム:O(log(N))

  • FLAT アルゴリズム:O(N)

N はベクトルインデックス内のキーの数です。

コマンドの説明

指定されたベクトルインデックス内の指定されたベクトル (VECTOR) に対して最近傍クエリを実行します。検索ロジックは TVS.KNNSEARCH と同じです。さらに、このコマンドは結果とともにタグ属性を返します。

オプション

  • index_name:ベクトルインデックスの名前。

  • topN:返すベクトルの数。有効な値:1~10000。

  • vector:最近傍クエリに使用されるベクトル。ハイブリッドインデックスを使用して全文検索のみを実行する場合は、このフィールドを "" に設定します。

  • field_count:返すタグ属性の数。すべてのタグを返すには、field_count を 0 に設定します。

  • field_name:タグ名。タグの数は field_count の値と一致する必要があります。

  • filter_string:フィルター条件。詳細については、TVS.KNNSEARCH の説明をご参照ください。

  • param_key および param_value:クエリの操作パラメーター。詳細については、TVS.KNNSEARCH の説明をご参照ください。

出力

  • 操作が成功した場合、最近傍の key とターゲットベクトルからの距離が距離の昇順で返され、対応するタグ属性のキーと値のペアも返されます。

  • 指定されたベクトルインデックスが存在しない場合、(empty array) が返されます。

  • それ以外の場合は、エラーメッセージが返されます。

事前に次のコマンドを実行します。

TVS.CREATEINDEX my_index_k 2 HNSW L2
TVS.HSET my_index_k key0 VECTOR [1,2] creation_time 1730
TVS.HSET my_index_k key1 VECTOR [3,4] creation_time 1740
TVS.HSET my_index_k key2 VECTOR [5,6] creation_time 1750

コマンド例:

TVS.KNNSEARCHFIELD my_index_k 2 [3,3.1] 0 "creation_time > 1735"

出力例:

1) 1) "key1"
   2) "0.81000018119812012"
   3) "VECTOR"
   4) "[3,4]"
   5) "creation_time"
   6) "1740"
2) 1) "key2"
   2) "12.410000801086426"
   3) "VECTOR"
   4) "[5,6]"
   5) "creation_time"
   6) "1750"

TVS.GETDISTANCE

カテゴリ

説明

構文

TVS.GETDISTANCE index_name vector key_count key [key, ...] [TOPN topN] [FILTER filter_string] [MAX_DIST max_distance]

時間計算量

  • HNSW アルゴリズム:O(log(N))

  • FLAT アルゴリズム:O(N)

N はベクトルインデックス内のキーの数です。

コマンドの説明

指定されたベクトルインデックス内の指定されたキーのリストに対してベクトル最近傍クエリを実行します。

オプション

  • index_name:ベクトルインデックスの名前。

  • vector:最近傍クエリに使用されるベクトル。

  • key_count:候補キーの数。

  • key:キーの名前。キーの数は key_count の値と一致する必要があります。

  • TOPN:返すキーの数。デフォルト値:key_count。有効な値:1~key_count

  • FILTER:フィルター条件。

    • +-*/<>!=()&&|| などの演算子がサポートされています。文字列のサイズを比較することはできません。文字列を入力する場合は、エスケープ文字 (\) を追加する必要があります。例:create_time > 1663637425 && location == "Hangzhou"

    • 演算子の両側にスペースを追加する必要があります。例:"creation_time > 1735"

    • flag == true 形式の BOOLEAN データ型はサポートされていません。flag == "true" 形式を使用できます。これは、ブール値を文字列として渡します。

  • MAX_DIST:許容される最大距離。指定されたベクトルと近傍ベクトル間の距離がこの値を超える場合、近傍ベクトルのキーはフィルタリングされ、検索結果から除外されます。

戻り値

  • 操作が成功した場合、各指定ベクトルに対する近傍ベクトルの距離がキーの順序で返されます。TOPN パラメーターを指定した場合、近傍ベクトルのキーは各指定ベクトルからの距離の昇順で返されます。

  • 指定されたベクトルインデックスが存在しない場合、(empty array) が返されます。

  • それ以外の場合は、エラーメッセージが返されます。

事前に次のコマンドを実行します。

TVS.CREATEINDEX my_index_k 2 HNSW L2
TVS.HSET my_index_k key0 VECTOR [1,2] creation_time 1730
TVS.HSET my_index_k key1 VECTOR [3,4] creation_time 1740
TVS.HSET my_index_k key2 VECTOR [5,6] creation_time 1750

コマンド例:

TVS.GETDISTANCE my_index_k [1,1] 2 key1 key2

出力例:

1) "key1"
2) "13"
3) "key2"
4) "41"

TVS.MKNNSEARCH

カテゴリ

説明

構文

TVS.MKNNSEARCH index_name topN vector_count vector [vector ...] [filter_string] [param_key param_value]

時間計算量

  • HNSW アルゴリズム:vector_count × O(log(N))

  • FLAT アルゴリズム:vector_count × O(N)

N はベクトルインデックス内のキーの数です。

コマンドの説明

指定されたベクトルインデックス内の複数のベクトル (VECTOR) に対して最近傍クエリを実行します。

オプション

  • index_name:ベクトルインデックスの名前。

  • topN:各ベクトルに対して返す近傍ベクトルの数。有効な値:1~10000。

  • vector_count:クエリするベクトルの数。

  • vector:最近傍クエリに使用されるベクトル。ハイブリッドインデックスを使用して全文検索のみを実行する場合は、このフィールドを "" に設定します。

  • filter_string:フィルター条件。詳細については、TVS.KNNSEARCH の説明をご参照ください。

  • param_key および param_value:クエリの操作パラメーター。詳細については、TVS.KNNSEARCH の説明をご参照ください。

戻り値

  • 操作が成功した場合、ベクトルクエリの順序で複数のクエリ結果配列が返されます。各配列には、指定された各ベクトルからの距離の昇順で近傍ベクトルの keys が含まれます。

  • 指定されたベクトルインデックスが存在しない場合、(empty array) が返されます。

  • それ以外の場合は、エラーメッセージが返されます。

事前に次のコマンドを実行します。

TVS.CREATEINDEX my_index_m 2 HNSW L2
TVS.HSET my_index_m key0 VECTOR [1,2] creation_time 1730
TVS.HSET my_index_m key1 VECTOR [3,4] creation_time 1740
TVS.HSET my_index_m key2 VECTOR [5,6] creation_time 1750

コマンド例:

TVS.MKNNSEARCH my_index_m 2 2 [3,4] [5,6] "creation_time > 1735"

出力例:

1) 1) "key1"
   2) "0"
   3) "key2"
   4) "8"
2) 1) "key2"
   2) "0"
   3) "key1"
   4) "8"

TVS.MINDEXKNNSEARCH

カテゴリ

説明

構文

TVS.MINDEXKNNSEARCH index_count index_name [index_name ...] topN vector [filter_string] [param_key param_value]

時間計算量

  • HNSW アルゴリズム:index_count × O(log(N))

  • FLAT アルゴリズム:index_count × O(N)

N はベクトルインデックス内のキーの数です。

コマンドの説明

複数のベクトルインデックスにまたがって、指定されたベクトル (VECTOR) に対して最近傍クエリを実行します。

オプション

  • index_count:ベクトルインデックスの数。

  • index_name:ベクトルインデックスの名前。

  • topN:返す近傍ベクトルの数。デフォルトでは、システムは各ベクトルインデックスで指定されたベクトルの topN 個の近傍ベクトルをクエリし、取得したベクトルを集約して、指定されたベクトルに最も近い topN 個の近傍ベクトルを返します。有効な値:1~10000。

  • vector:最近傍クエリに使用されるベクトル。

  • filter_string:フィルター条件。詳細については、TVS.KNNSEARCH の説明をご参照ください。

  • param_key および param_value:クエリの操作パラメーター。詳細については、TVS.KNNSEARCH の説明をご参照ください。

戻り値

  • 操作が成功した場合、近傍ベクトルの keys とターゲットベクトルへの距離が距離の昇順で返されます。

  • 指定されたベクトルインデックスが存在しない場合、(empty array) が返されます。

  • それ以外の場合は、エラーメッセージが返されます。

事前に次のコマンドを実行します。

TVS.CREATEINDEX my_index_mk 2 HNSW L2
TVS.HSET my_index_mk key0 VECTOR [1,2] creation_time 1730
TVS.HSET my_index_mk key1 VECTOR [3,4] creation_time 1740
TVS.HSET my_index_mk key2 VECTOR [5,6] creation_time 1750
TVS.CREATEINDEX my_index_mx 2 HNSW L2
TVS.HSET my_index_mx key5 VECTOR [8,7] creation_time 1730
TVS.HSET my_index_mx key6 VECTOR [6,5] creation_time 1740
TVS.HSET my_index_mx key7 VECTOR [4,3] creation_time 1750

コマンド例:

TVS.MINDEXKNNSEARCH 2 my_index_mk my_index_mx 2 [0,0]

出力例:

1) "key0"
2) "5"
3) "key7"
4) "25"

TVS.MINDEXKNNSEARCHFIELD

カテゴリ

説明

構文

TVS.MINDEXKNNSEARCHFIELD index_count index_name [index_name ...] topN vector field_count field_name [field_name ...] [filter_string] [param_key param_value]

時間計算量

  • HNSW アルゴリズム:index_count × O(log(N))

  • FLAT アルゴリズム:index_count × O(N)

N はベクトルインデックス内のキーの数です。

コマンドの説明

複数のベクトルインデックスにまたがって、指定されたベクトル (VECTOR) に対して最近傍クエリを実行します。結果とともにタグ属性が返されます。

オプション

  • index_count:ベクトルインデックスの数。

  • index_name:ベクトルインデックスの名前。

  • topN:返す結果の数。デフォルトでは、システムは各ベクトルインデックスから topN 件の結果をクエリし、すべてのクエリ結果を集約して、最も近い topN 件の結果を返します。有効な値:1~10000。

  • vector:最近傍クエリに使用されるベクトル。

  • field_count:返すタグ属性の数。すべてのタグを返すには、field_count を 0 に設定します。

  • field_name:タグ名。タグの数は field_count の値と一致する必要があります。

  • filter_string:フィルター条件。詳細については、TVS.KNNSEARCH の説明をご参照ください。

  • param_key および param_value:クエリの操作パラメーター。詳細については、TVS.KNNSEARCH の説明をご参照ください。

戻り値

  • 操作が成功した場合、指定されたベクトルからの距離の昇順で近傍ベクトルの keys が返されます。ベクトルのタグ属性もキーと値のペアの形式で返されます。

  • 指定されたベクトルインデックスが存在しない場合、(empty array) が返されます。

  • それ以外の場合は、エラーメッセージが返されます。

事前に次のコマンドを実行します。

TVS.CREATEINDEX my_index_mk 2 HNSW L2
TVS.HSET my_index_mk key0 VECTOR [1,2] creation_time 1730
TVS.HSET my_index_mk key1 VECTOR [3,4] creation_time 1740
TVS.HSET my_index_mk key2 VECTOR [5,6] creation_time 1750
TVS.CREATEINDEX my_index_mx 2 HNSW L2
TVS.HSET my_index_mx key5 VECTOR [8,7] creation_time 1730
TVS.HSET my_index_mx key6 VECTOR [6,5] creation_time 1740
TVS.HSET my_index_mx key7 VECTOR [4,3] creation_time 1750

コマンド例:

TVS.MINDEXKNNSEARCHFIELD 2 my_index_mk my_index_mx 2 [0,0] 0

出力例:

1) 1) "key0"
   2) "5"
   3) "my_index_mk"
   4) "VECTOR"
   5) "[1,2]"
   6) "creation_time"
   7) "1730"
2) 1) "key1"
   2) "25"
   3) "my_index_mk"
   4) "VECTOR"
   5) "[3,4]"
   6) "creation_time"
   7) "1740"

TVS.MINDEXMKNNSEARCH

カテゴリ

説明

構文

TVS.MINDEXMKNNSEARCH index_count index_name [index_name ...] topN vector_count vector [vector ...] [filter_string] [param_key param_value]

時間計算量

  • HNSW アルゴリズム:index_count × vector_count × O(log(N))

  • FLAT アルゴリズム:index_count × vector_count × O(N)

N はベクトルインデックス内のキーの数です。

コマンドの説明

複数のベクトルインデックスにまたがって、複数のベクトル (VECTOR) に対して最近傍クエリを実行します。

オプション

  • index_count:ベクトルインデックスの数。

  • index_name:ベクトルインデックスの名前。

  • topN:各ベクトルクエリに対して返される結果の数。デフォルトでは、システムは各ベクトルインデックスから topN 件の結果をクエリし、すべてのクエリ結果を集約して、最も近い topN 件の結果を返します。有効な値:1~10000。

  • vector_count:クエリするベクトルの数。

  • vector:最近傍クエリに使用されるベクトル。

  • filter_string:フィルター条件。詳細については、TVS.KNNSEARCH の説明をご参照ください。

  • param_key および param_value:クエリの操作パラメーター。詳細については、TVS.KNNSEARCH の説明をご参照ください。

出力

  • 操作が成功した場合、クエリが送信された順序で各クエリの結果配列が返されます。各配列には、各最近傍の key とターゲットベクトルへの距離が、距離の昇順でソートされて含まれます。

  • 指定されたベクトルインデックスが存在しない場合、(empty array) が返されます。

  • それ以外の場合は、エラーメッセージが返されます。

事前に次のコマンドを実行します。

TVS.CREATEINDEX my_index_mk 2 HNSW L2
TVS.HSET my_index_mk key0 VECTOR [1,2] creation_time 1730
TVS.HSET my_index_mk key1 VECTOR [3,4] creation_time 1740
TVS.HSET my_index_mk key2 VECTOR [5,6] creation_time 1750
TVS.CREATEINDEX my_index_mx 2 HNSW L2
TVS.HSET my_index_mx key5 VECTOR [8,7] creation_time 1730
TVS.HSET my_index_mx key6 VECTOR [6,5] creation_time 1740
TVS.HSET my_index_mx key7 VECTOR [4,3] creation_time 1750

コマンド例:

TVS.MINDEXMKNNSEARCH 2 my_index_mk my_index_mx 2 2 [0,0] [3,3]

出力例:

1) 1) "key0"
   2) "5"
   3) "key7"
   4) "25"
2) 1) "key1"
   2) "1"
   3) "key7"
   4) "1"