このページでは、AlloyDB AI ベクトル検索の方法と、各方法を使用するタイミングについて説明します。デフォルトでは、AlloyDB は k 最近傍探索(KNN)を使用して、クエリに類似したベクトルを検索します。ベクトル インデックスは、近似最近傍探索(ANN)と呼ばれる検索方法を実装します。ベクトル インデックスを作成するときに、AlloyDB AI は ANN を使用します。これにより、KNN よりも優れたパフォーマンスが得られます。ベクトル インデックスを選択する場合は、クエリ レイテンシと再現率のバランスを取る必要があります。
再現率は、特定のクエリに関連するすべてのアイテムを検索がどれだけ効果的に取得したかを測定します。たとえば、100 個のエンベディングがあり、それぞれがデータベース内のエンティティを表しているとします。ターゲット ベクトルを使用してエンベディングをクエリし、結果を 10 件に制限します。KNN ベクトル検索は、ブルート フォース計算方法を使用して最も近い 10 個のベクトルを検索し、100% の再現率を実現します。ベクトル検索インデックスが作成または選択されていない場合、AlloyDB AI はデフォルトでこの方法を使用します。AlloyDB for PostgreSQL でベクトル インデックスを作成する場合は、通常 ANN が使用されます。ANN は、高速な取得を容易にするために類似性に基づいてベクトルをパーティショニングする場合があります。その結果、ANN を使用すると、前述の例で返された 10 個のベクトルが、距離が最も近い 10 個のベクトルと完全に一致しない場合があります。取得された 10 個のベクトルのうち、クエリベクトルに最も近いベクトルが 8 個の場合、再現率は 80% になります。
クエリ レイテンシは、検索結果が生成される速さを定義します。たとえば、レイテンシは、クエリの送信後にベクトルを返す検索に要した時間に基づいて計算されます。
検索方法を選択する
AlloyDB でベクトル検索を実行する場合は、次のいずれかの検索方法を選択します。
検索方法 | 説明 | ユースケース |
K 最近傍法(KNN) |
指定されたクエリ データポイントの k 最近傍データポイントを見つけるアルゴリズム。インデックスを作成せずにベクトル検索を実行すると、デフォルトで KNN 検索が実行されます。 KNN 検索のパフォーマンスをさらに向上させるには、エンベディング列とクエリに関連するほかの列をカラム型エンジンの列ストアに追加します。列を手動で追加するか、自動的なカラム化を使用して列を追加できます。 |
|
近似最近傍探索(ANN) | 最も近いデータポイントを近似的に見つけ出すアルゴリズム。ANN は、既存の顧客データポイントを類似性に基づいて小さなグループに分割します。 |
|
ベクトル検索クエリのパフォーマンスを最適化するには、ベクトル インデックスを作成することをおすすめします。ANN インデックスが類似性検索に使用される方法の詳細については、ScaNN を使用してインデックスを作成するをご覧ください。
フィルタされた KNN 検索を高速化するには、カラム型エンジンを使用します。