瞭解 AlloyDB AI 的自動調整篩選功能

本頁面提供 AlloyDB AI 中適應性篩選功能的概念總覽,這項功能旨在最佳化篩選後的向量搜尋結果。

什麼是自動調整篩選?

自動調適篩選功能會在查詢執行期間分析查詢模式和資料分配情形,動態選擇最有效率的篩選策略,例如內嵌或預先篩選。

AlloyDB AI 查詢最佳化工具會使用以費用為準的分析,判斷在查詢執行期間的任何時間點,內嵌篩選或預先篩選是否能提供最佳效能。

這類最佳化作業支援 AlloyDB AI 的已篩選向量搜尋,可讓系統自動在向量和中繼資料索引之間切換,產生準確有效率的結果,不需手動介入。

動態切換篩選策略

在查詢執行期間,適應性篩選功能會根據即時查詢模式和資料分配情形,自動且動態地在內嵌篩選和預先篩選策略之間切換。AlloyDB AI 查詢最佳化工具會使用以成本為準的分析,判斷哪種策略在任何時間點都能提供最佳效能。

從內嵌到預先篩除

如果最佳化工具判斷預先篩選的效率較高,自動調適篩選功能會在執行期間,觸發從內嵌篩選切換至預先篩選。查詢計畫會動態變更,以反映這項異動。

舉例來說,如果最佳化工具判斷在查詢中的該時間點進行預先篩選的效率較高,企劃書的「執行策略」欄位就會顯示 Bitmap assisted pre-filtering。系統會在查詢執行期間,根據實際遇到的資料進行調整,因此會發生這種動態變化。

Limit (actual rows=10 loops=1)
  ->  Custom Scan (vector scan) on t1 (actual rows=10 loops=1)
        Execution Strategy: Bitmap assisted pre-filtering
        Order By: (vec_col <=> '[...]'::vector)
        Limit: 10
        ->  Bitmap Index Scan on btree_idx (actual rows=10000 loops=1)
              Index Cond: (int_col <= 100000000)

使用 Execution Strategy: Bitmap assisted pre-filtering 時,Bitmap Index Scan 會先篩選大型資料集,如果預先篩選能有效縮小候選項目範圍,系統就不會使用向量索引進行最終的向量相似度搜尋。

從預先篩選到內嵌篩選

如果 AlloyDB AI 查詢最佳化工具判斷內嵌篩選器更適合目前的查詢特徵,自適應篩選器也會動態從預先篩選切換至內嵌篩選。

在這種情況下,查詢計畫會動態調整,以反映向量資料的直接處理方式,而向量掃描前不會有明確的預先篩選步驟。因此,當資料分配或查詢參數在執行階段發生變化時,這項功能有助於達到最佳效能。

舉例來說,如果最佳化工具判斷內嵌篩選策略對特定查詢的效率較高,查詢計畫的「執行策略」欄位就會顯示 vector scan

Limit (actual rows=10 loops=1)
  ->  Custom Scan (vector scan) on t1 (actual rows=10 loops=1)
        Execution Strategy: Bitmap assisted vector Scan on scann_idx
        Order By: (vec_col <=> '[...]'::vector)
        Limit: 10
        Num Requalifications: 0
        Num filtered: 1000
        ->  Bitmap Index Scan on btree_idx (actual rows=10000 loops=1)
              Index Cond: (int_col <= 100000000)

在這個範例中,Execution Strategy 會顯示 Bitmap assisted vector Scan on scann_idx,並在 btree_idx 上顯示底層的 Bitmap Index Scan。這表示向量搜尋使用點陣圖篩選器,而點陣圖索引掃描會根據 int_col <= 100000000 條件產生篩選器。Custom Scan (vector scan) 接著只會處理這個點陣圖識別的資料列,直接將篩選程序整合到向量掃描程序中。

後續步驟