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