フィードバックを送信
ScaNN インデックス リファレンス
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
このページでは、ScaNN インデックスのリファレンス マテリアルについて説明します。
調整パラメータ
次のインデックス パラメータとデータベース フラグを組み合わせて使用することで、再現率と QPS の適切なバランスを見つけることができます。
オプションの種類
インデックスの作成
クエリ ランタイム
チューニング パラメータ
説明
オプションの種類
max_num_levels
K 平均法クラスタリング ツリーの重心レベルの最大数。2 レベルのツリー インデックス : 2 レベルのツリー(1 つの中心点レベルと下位リーフレベル)の場合は、デフォルトで 1
に設定されます。3 レベルのツリー インデックス : 3 レベルのツリー(2 つの重心レベルと下位リーフレベル)の場合は、デフォルトで 2
に設定されます。ベクトルの行数が 1 億行を超える場合は、値を 2
に設定します。 ベクトル行数が 1,000 万行未満の場合は、値を 1
に設定します。 ベクトル行数が 1,000 万~ 1 億行の場合は、1
または 2
に設定して、インデックスの構築時間を最適化(2 に設定)するか、検索レコールを最適化(1 に設定)します。
インデックスの作成 (省略可)
num_leaves
このインデックスに適用するパーティションの数。インデックスの作成時に適用するパーティションの数は、インデックスのパフォーマンスに影響します。設定された数のベクトルのパーティションを増やすと、よりきめ細かいインデックスが作成され、再現率とクエリのパフォーマンスが向上します。ただし、インデックスの作成時間が長くなるというデメリットがあります。 3 レベルのツリーは 2 レベルのツリーよりも構築が速いため、3 レベルのツリー インデックスを作成するときに num_leaves_value
を増やすと、パフォーマンスを向上させることができます。2 レベル インデックス : この値は、1
~1048576
の範囲で任意の値に設定します。 インデックスの高速ビルドと優れた検索パフォーマンスのバランスを取るインデックスの場合は、sqrt(ROWS)
を開始点として使用します。ここで、ROWS
はベクトル行の数です。各パーティションが保持するベクトルの数は、ROWS/sqrt(ROWS) = sqrt(ROWS)
で計算されます。 2 レベルのツリー インデックスは、ベクトル行数が 1,000 万未満のデータセットに作成できるため、各パーティションは sqrt(10M)
未満のベクトル(3200
ベクトル)を保持します。ベクトル検索の品質を最適化するには、各パーティション内のベクトルの数を最小限に抑えることをおすすめします。推奨されるパーティション サイズはパーティションあたり約 100 個のベクトルであるため、num_leaves
を ROWS/100
に設定します。ベクトルが 1,000 万個ある場合は、num_leaves
を 100,000 に設定します。3 レベル インデックス : この値は、1
~1048576
の範囲内の任意の値に設定します。 正確な値を選択できない場合は、power(ROWS, 2/3)
を開始点として使用します。ここで、ROWS
はベクトル行の数です。各パーティションが保持するベクトル数は ROWS/power(ROWS, 2/3) = power(ROWS, 1/3)
で計算されます。 3 レベルのツリー インデックスは、ベクトル行数が 1 億を超えるデータセットに作成できるため、各パーティションは (power(100M, 1/3)
)を超えるベクトル(465
ベクトル)を保持します。ベクトル検索の品質を最適化するには、各パーティション内のベクトルの数を最小限に抑えることをおすすめします。推奨されるパーティション サイズはパーティションあたり約 100 個のベクトルであるため、num_leaves
を ROWS/100
に設定します。1 億個のベクトルがある場合は、num_leaves
を 100 万に設定します。
インデックスの作成 (必須)
quantizer
K 平均法ツリーに使用する量子化ツールのタイプ。デフォルト値は SQ8
に設定されています。これにより、再現率の損失を最小限に抑えながら(通常は 1 ~ 2% 未満)、クエリのパフォーマンスを向上させることができます。 再現率が 99% 以上必要な場合は、FLAT
に設定します。
インデックスの作成 (省略可)
scann.enable_pca
主成分分析(PCA)を有効にします。これは、可能な場合はエンベディングのサイズを自動的に縮小するために使用される次元削減手法です。このオプションはデフォルトで有効になっています。 再現率の低下が観測された場合は、false
に設定します。
インデックスの作成 (省略可)
scann.num_leaves_to_search
このデータベース フラグは、検索するリーフまたはパーティションの絶対数を制御します。これにより、レジュールと QPS をトレードオフできます。デフォルト値は、num_leaves
で設定された値の 1% です。 値を大きくすると再現率は高くなりますが、QPS は低くなります。同様に、値を小さくすると、再現率は低下しますが QPS は高くなります。
クエリ ランタイム (省略可)
scann.pre_reordering_num_neighbors
データベース フラグを設定すると、最初の検索で候補のセットが特定された後の並べ替えステージで検討する近傍候補の数を指定できます。このパラメータは、クエリで返される近傍の数よりも大きい値に設定します。 値を大きくすると再現率は高くなりますが、QPS は低くなります。並べ替えを無効にするには、この値を 0
に設定します。インデックスの作成時に PCA が有効になっていない場合、デフォルトは 0
です。それ以外の場合、デフォルトは 50 x K
です。ここで、K
はクエリで指定された LIMIT です。
クエリ ランタイム (省略可)
scann.num_search_threads
マルチスレッド検索の検索スレッド数。これにより、レイテンシに敏感なアプリケーションで ScaNN ANN 検索に複数のスレッドを使用することで、単一クエリのレイテンシを短縮できます。データベースがすでに CPU バウンドになっている場合、この設定では単一クエリのレイテンシは改善されません。デフォルト値は 2
です。
クエリ ランタイム (省略可)
次のステップ
フィードバックを送信
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンス により使用許諾されます。コードサンプルは Apache 2.0 ライセンス により使用許諾されます。詳しくは、Google Developers サイトのポリシー をご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2025-01-23 UTC。
ご意見をお聞かせください
[[["わかりやすい","easyToUnderstand","thumb-up"],["問題の解決に役立った","solvedMyProblem","thumb-up"],["その他","otherUp","thumb-up"]],[["わかりにくい","hardToUnderstand","thumb-down"],["情報またはサンプルコードが不正確","incorrectInformationOrSampleCode","thumb-down"],["必要な情報 / サンプルがない","missingTheInformationSamplesINeed","thumb-down"],["翻訳に関する問題","translationIssue","thumb-down"],["その他","otherDown","thumb-down"]],["最終更新日 2025-01-23 UTC。"],[],[]]