AlloyDB Omni ScaNN インデックスのリファレンス

ドキュメントのバージョンを選択してください。

このページでは、AlloyDB Omni の Scalable Nearest Neighbors(ScaNN)インデックスで使用できるチューニング パラメータの詳細なリファレンスについて説明します。

ベクトル検索を最初から最後まで実装する方法のステップバイステップ チュートリアルについては、ベクトル検索を実行するをご覧ください。

チューニング パラメータ

次のインデックス パラメータとクエリ パラメータを使用して、再現率と秒間クエリ数(QPS)の適切なバランスを見つけます。

チューニング パラメータ 説明 オプション タイプ
mode ScaNN インデックスを自動チューニング インデックスまたは手動チューニング インデックスとして定義します。使用可能なオプションは次のとおりです。
  • AUTO: 自動チューニング インデックス
  • MANUAL: 手動チューニング インデックス

詳細については、 ScaNN インデックスを作成するをご覧ください。

インデックスの作成

(省略可)

max_num_levels K 平均法クラスタリング ツリーのセントロイド レベルの最大数。この値の設定については、ScaNN インデックスをチューニングするをご覧ください。

使用可能な値は次のとおりです。

  • 1: 2 レベル ScaNN インデックス
  • 2: 3 レベル ScaNN インデックス
  • 3:4 レベル ScaNN インデックス(プレビュー

max_num_levels3 に設定する場合は、 scann.max_allowed_num_levels3 に設定する必要があります。詳細については、ScaNN インデックスのチューニングに関するベスト プラクティスをご覧ください。

インデックスの作成

(省略可)

num_leaves このインデックスに適用するパーティションの数。最大値は 30000000 です。この値の選択の詳細については、 ScaNN インデックスをチューニングするScaNN インデックスのチューニングに関するベスト プラクティスをご覧ください。

インデックスの作成

手動チューニング インデックスの場合は必須)

quantizer K 平均法ツリーに使用する量子化ツールのタイプ。デフォルト値は SQ8 に設定されています。これにより、再現率の損失を最小限に抑えながら(通常は 1~2% 未満)、クエリのパフォーマンスを向上させることができます。

再現率が 99% 以上必要な場合は、FLAT に設定します。
インデックスの作成
(省略可)
scann.enable_pca 主成分分析(PCA)を有効にします。これは、可能な場合はエンベディングのサイズを自動的に縮小するために使用されるディメンションの削減手法です。このオプションはデフォルトで有効になっています。

再現率の低下が観察された場合は、false に設定します。
インデックスの作成
(省略可)
auto_maintenance データセットが大きくなるにつれて、 AlloyDB Omni がセントロイドを分析して更新し、 大きな外れ値のパーティションを分割するように、ScaNN インデックスを自動的に維持します。これにより、QPS と 検索結果が自動的に改善されます。詳細については、 インデックスを自動的に維持するをご覧ください。

インデックスの作成

(省略可)

ベクトル インデックスが検索するパーティションの数を自動的に管理します 。詳細については、 パーティションの検索割合をご覧ください。

検索するパーティションの絶対数。これにより、 クエリの再現率と QPS のバランスを取ることができます。デフォルト値は num_leaves の 1% です。

値を大きくすると、クエリの再現率は向上しますが、QPS は低下します。同様に、 値を小さくすると、クエリの再現率は低下しますが、QPS は向上します。

クエリ実行時刻

(省略可)

scann.pre_reordering_num_neighbors

最初の検索で候補のセットが特定された後の並べ替えステージで検討する近傍候補の数を指定します。このパラメータは、クエリが返す近傍の数よりも大きい値に設定します。値を大きくすると再現率は高くなりますが、QPS は低くなります。

デフォルトは 0 で、並べ替えが無効になります。インデックスの作成時に PCA が 有効になっている場合、デフォルトは 50 x K です。ここで、K はクエリで指定された LIMIT です。

クエリ実行時刻

(省略可)

scann.num_search_threads マルチスレッド検索の検索スレッド数。これにより、レイテンシの影響を受けやすいアプリケーションで ScaNN ANN 検索に複数のスレッドを使用することで、単一クエリのレイテンシを短縮できます。データベースがすでに CPU バウンドになっている場合、この設定では単一クエリのレイテンシは改善されません。デフォルト値は 2 です。 クエリ実行時刻
(省略可)

scann.satisfy_limitプレビュー

relaxed_order に設定すると、データベース フラグで再現率の不足に対処できます。再現率の不足は、クエリの実際の再現率が目標の再現率を下回った場合に発生する可能性があります。これは、フィルタを使用する場合に発生しやすくなります。この設定により、十分な数の結果が見つかるまで、ベクトル スキャンが num_leaves_to_search の上限を超えて検索を続行できるため、目標の再現率を達成できます。 クエリ実行時刻
(省略可)
このデータベース フラグは、scann.satisfy_limit を有効にして実行するクエリでアクセスできる全リーフの割合に上限を設定します。これは、使用可能な唯一の上限 GUC であり、自動検索モードと手動検索モードの両方に適用されます。これにより、検索がオーバーシュートしてパフォーマンスが大幅に低下するのを防ぐことができます。これは、scann.satisfy_limit がオンの場合に適用されます。
このパラメータには、0100 の任意の値を設定できます。デフォルト値は 15% です。このデフォルト値は、検索でリーフの 15% 以上を調べる必要がある場合、フィルタが十分に選択的であるため、近似最近傍(ANN)検索ではメリットがなく、k-最近傍(KNN)の事前フィルタリングがより適切な選択肢になるという考えに基づいています。
クエリ実行時刻
(省略可)

次のステップ