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

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

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

ベクトル検索を最初から最後まで実装する手順については、ベクトル検索を実行する方法に関するガイドをご覧ください。

調整パラメータ

次のインデックス パラメータとクエリ パラメータを使用して、再現率と 1 秒あたりのクエリ数(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)の事前フィルタリングがより適切な選択肢になるという考え方に基づいています。
クエリ ランタイム
(省略可)

次のステップ