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