再現率は、特定のクエリに関連するすべてのアイテムを検索がどれだけ効果的に取得したかを測定します。たとえば、100 個のエンベディングがあり、それぞれがデータベース内のエンティティを表しているとします。ターゲット ベクトルを使用してエンベディングをクエリし、結果を 10 件に制限します。KNN ベクトル検索は、ブルート フォース計算方法を使用して最も近い 10 個のベクトルを検索し、100% の再現率を実現します。ベクトル検索インデックスが作成または選択されていない場合、AlloyDB AI はデフォルトでこの方法を使用します。AlloyDB Omni でベクトル インデックスを作成する場合は、通常 ANN が使用されます。ANN は、高速な取得を容易にするために類似性に基づいてベクトルをパーティショニングする場合があります。その結果、ANN を使用すると、前述の例で返された 10 個のベクトルが、距離が最も近い 10 個のベクトルと完全に一致しない場合があります。取得された 10 個のベクトルのうち、クエリベクトルに最も近いベクトルが 9 個の場合、再現率は 90% になります。詳細については、ベクトルクエリの再現率を測定するをご覧ください。
クエリ レイテンシは、検索結果が生成される速さを定義します。たとえば、レイテンシは、クエリの送信後にベクトルを返す検索に要した時間に基づいて計算されます。
検索方法を選択する
AlloyDB Omni でベクトル検索を実行する場合は、次のいずれかの検索方法を選択します。
| 検索方法 | 説明 | ユースケース |
| K 最近傍法(KNN) |
指定されたクエリ データポイントの k 最近傍データポイントを見つけるアルゴリズム。インデックスを作成せずにベクトル検索を実行すると、デフォルトで KNN 検索が実行されます。 KNN 検索のパフォーマンスをさらに向上させるには、エンベディング列とクエリに関連するほかの列をカラム型エンジンの列ストアに追加します。列を手動で追加するか、自動カラムナ化を使用して列を追加できます。 |
|
| 近似最近傍探索(ANN) | 最も近いデータポイントを近似的に見つけ出すアルゴリズム。ANN は、既存の顧客データポイントを類似性に基づいて小さなグループに分割します。 |
|
AlloyDB Omni で一般的な ANN ベースのベクトル インデックス タイプは、ScaNN と HNSW の 2 つです。次のガイドラインを使用して、ユースケースに最適なインデックス タイプを決定します。
| インデックスのタイプ | 使用する状況 | 利点 | カラム型エンジンの高速化 |
| ScaNN |
通常、低次元データやメモリを超える大規模なデータセットに適しています。 100 億ベクトルまで適切にスケーリング。 |
標準の PostgreSQL の HNSW と比較して、次のような利点があります。
|
ScaNN インデックスを使用したベクトル検索は、AlloyDB Omni カラム型エンジンによって高速化できます。詳細については、カラム型エンジンを使用してベクトル検索を高速化するをご覧ください。 |
| HNSW |
通常、メモリ キャッシュにほぼ収まる高次元データに適しています。 1,000 万~ 2,000 万のベクトルに適切にスケーリングされます。 |
AlloyDB Omni の pgvector カラム型エンジンで高速化された HNSW インデックスは、標準の PostgreSQL と比較して最大 5 倍高速なベクトルクエリを実現します。 | HNSW インデックスを使用したベクトル検索は、AlloyDB Omni カラム型エンジンによって高速化できます。詳細については、カラム型エンジンを使用してベクトル検索を高速化するをご覧ください。 |
ベクトル検索クエリのパフォーマンスを最適化するには、ベクトル インデックスを作成することをおすすめします。ANN インデックスが類似性検索に使用される方法の詳細については、ScaNN を使用してインデックスを作成するをご覧ください。
フィルタされた KNN 検索を高速化するには、カラム型エンジンを使用します。