このページでは、ベクトル検索の機能と制限事項について説明します。
ご利用について
ベクトル検索は、すべての階層とサポートされているすべてのリージョンのすべての Memorystore for Valkey バージョンで使用できます。
ベクトル検索が有効になっているのは、2024 年 9 月 13 日のリリース日以降に作成されたインスタンスのみです。
インデックスの制限
インデックスの制限事項は次のとおりです。
- インデックス内の属性の最大数は 10 個です。
- ベクトルの次元は 32,768 以下にする必要があります。
- HNSW の M 値は 2M を超えてはいけません。
- HNSW の EF 構造の値は 4,096 を超えないようにする必要があります。
- HNSW の EF ランタイム値も 4,096 を超えないようにする必要があります。
パフォーマンスへの影響
ベクトル検索のパフォーマンスを考える場合、考慮すべき重要な変数がいくつかあります。
ノードタイプ
ベクトル検索では、ベクトル検索オペレーション専用のスレッドプールを統合することで、垂直方向のスケーリングが容易になります。つまり、パフォーマンスはクラスタ内の各ノードの vCPU 数に関連付けられます。各ノードタイプで使用可能な vCPU の数の詳細については、クラスタとノードの仕様をご覧ください。
シャードの数
Memorystore for Valkey は、すべてのベクトルに対してローカル インデックス処理手法を実装しています。つまり、各シャードに保存されているインデックスには、そのシャードに含まれているドキュメントのみが含まれます。そのため、インデックス作成の速度と合計ベクトル数は、クラスタ内のシャード数に比例してスケーリングされます。
各ローカル インデックスには単一シャードのコンテンツのみが含まれるため、クラスタを検索するには、クラスタ内の各シャードを検索して結果を集約する必要があります。ベクトルの量が一定の場合、シャードの数を増やすと、各ローカル インデックスに含まれるベクトルが減るため、HNSW インデックスでは検索パフォーマンスが対数的に向上し、FLAT インデックスでは線形的に向上します。
すべてのシャードを検索するために必要な作業量が増えるため、シャードの追加に伴い、特定の検索リクエストを完了するまでのレイテンシが増加する可能性があります。ですが、どんなに大きなクラスタであっても 10 ミリ秒未満のレイテンシをサポートしています。
レプリカの数
レプリカを追加すると、検索リクエストをリードレプリカにロードバランスできるため、検索スループットが直線的に増加します。
スケーリング イベント
Memorystore for Valkey インスタンスのサイズを変更すると、インデックス内のドキュメントが移動され、新しいシャード数にわたってデータが均等に分散されます。この場合、ノード間で移動されたドキュメントはバックグラウンドでインデックスに登録されます。スケーリング オペレーションが完了したら、FT.INFO の出力で mutation_queue_size
の値をモニタリングして、クラスタのサイズ変更によるインデックス再作成の進行状況を確認できます。
メモリ消費
ベクトルは複製され、Redis キースペースとベクトル検索アルゴリズムの両方に格納されます。
トランザクション
スレッドプールによるタスクの実行は非同期であるため、ベクトル検索オペレーションはトランザクション セマンティクスに準拠していません。