QGraph (Quantized Graph) は、オプションで量子化が可能な Hierarchical Navigable Small World (HNSW) グラフ構造を使用します。以下のビルドパラメーターと検索パラメーターを設定して、ワークロードのパフォーマンス、取得率、インデックスサイズのバランスを調整します。
インデックスビルドパラメーター
ビルドパラメーターはインデックス作成時に設定されます。これらのパラメーターを変更するには、インデックスを再構築する必要があります。
| パラメーター | 型 | デフォルト | 説明 |
|---|---|---|---|
proxima.hnsw.builder.max_neighbor_count | uint32 | 100 | グラフノードあたりの最大近傍数。値を大きくするとグラフの接続性は向上しますが、構築時間とインデックスサイズが増加します。 |
proxima.hnsw.builder.efconstruction | uint32 | 500 | グラフ構築時の近傍スキャン領域のサイズ。値を大きくすると高品質なグラフが生成されますが、インデックスの構築が遅くなります。400 から始めることを推奨します。 |
proxima.hnsw.builder.thread_count | uint32 | 0 | 構築時に使用されるスレッド数。0 を指定すると、利用可能な CPU コア数が使用されます。 |
proxima.qgraph.builder.quantizer_class | 文字列 | None | インデックスに適用される量子化器。オプション:Int4QuantizerConverter、Int8QuantizerConverter、HalfFloatConverter。詳細については、「量子化器の選択」をご参照ください。 |
インデックス検索パラメーター
検索パラメーターは、インデックスを再構築することなく調整できます。
| パラメーター | 型 | デフォルト | 説明 |
|---|---|---|---|
proxima.hnsw.searcher.ef | uint32 | 500 | オンライン検索中にスキャンされる最近傍候補の数。値を大きくすると取得率は向上しますが、検索パフォーマンスは低下します。有効値は [100, 1000] です。 |
proxima.hnsw.searcher.max_scan_ratio | 浮動 | None | オンライン検索中にスキャンされるポイントの割合。値を大きくすると取得率は向上しますが、検索パフォーマンスは低下します。 |
proxima.hnsw.searcher.brute_force_threshold | uint32 | None | オンライン検索中にスキャンされるポイントの最小数。この値がシャード内のドキュメント数を超えると、検索はブルートフォースに切り替わります。 |
量子化器の選択
量子化は、取得率を犠牲にしてインデックスサイズを削減し、検索パフォーマンスを向上させます。メモリ予算と精度の要件に基づいて選択してください。
| 量子化器クラス | インデックスサイズ | 検索パフォーマンス | 再現率 |
|---|---|---|---|
Int4QuantizerConverter | 最小 | 最高 | 最低 |
Int8QuantizerConverter | 中 | 中 | 中 |
HalfFloatConverter | 非量子化に近い | 非量子化に近い | 非量子化に近い |
注:CPU 命令セットの制約により、HalfFloatConverterは、非量子化とほぼ同等のパフォーマンスと取得率を提供します。意味のあるサイズ削減のためにはInt8QuantizerConverterを、インデックスを最小にするためにはInt4QuantizerConverterを使用してください。
チューニングガイド
適切な設定は、クエリスループット、書き込み頻度、および目標取得率によって異なります。この表を開始点として使用してください。
| クエリスループット | 書き込み頻度 | ターゲット再現率 | 推奨設定 |
|---|---|---|---|
| 低 | 低 | 低 | efconstruction と ef を低く保ちます。比較的小さなマシンで十分です。 |
| 低 | 低 | 高 | 取得率が目標に達するまで efconstruction と ef を増やします。 |
| 低 | 高 | 低 | efconstruction を低く保ちます。目的の取得率に達するように ef を上方に調整します。 |
| 低 | 高 | 高 | efconstruction を低く保ちます。ef を大幅に増やします。 |
| 高 | 低 | 低 | 高いクエリスループットには低い ef が必要です。低い取得率であれば、低い efconstruction が許容されます。 |
| 高 | 任意 | 高 | 最も要求の厳しいシナリオです。目標取得率を満たしながら、efconstruction と ef を可能な限り低く保ちます。 |
一般的な原則:
efは、検索時の主要なチューニングノブです。取得率を向上させるにはこの値を増やし、検索パフォーマンスを向上させるにはこの値を減らします。max_scan_ratioとbrute_force_thresholdは、高度なユースケース向けに追加のスキャンコントロールを提供します。