使用 AI 函式執行查詢時,您可以透過 AI 函式的智慧批次處理功能提升效能。與以陣列為基礎的函式相比,這個函式可提供相同或更佳的效能,且您不必編寫複雜的查詢。如要進一步瞭解 AI 函式,請參閱 AI 函式總覽。
智慧批次處理支援下列 AI 函式:
ai.if:智慧批次處理僅適用於函式位於WHERE子句中的SELECT查詢。每次掃描支援單一ai.if函式,並可搭配循序、索引和點陣圖堆積掃描使用。如果查詢包含多個資料表掃描 (例如在不同資料表、關係或一般資料表運算式 (CTE) 上),則每個掃描可加速一個ai.if函式。ai.rank:智慧批次處理僅適用於函式位於ORDER BY子句中的SELECT查詢。每次掃描僅支援單一ai.rank函式。如果查詢包含多個資料表掃描 (例如在不同資料表、關係或 CTE 上),則每次掃描可加速一個ai.rank函式。
為 AI 函式啟用智慧批次處理
如要為 AI 函式啟用智慧批次處理功能,請將 google_ml_integration.enable_ai_function_acceleration 旗標設為 on。這項旗標預設為停用,可控管查詢執行者是否可將符合資格的 AI 作業卸載至 AI 函式套用節點,以加快速度。如果未設定或設為 off,所有查詢作業都會由標準 PostgreSQL 執行程式執行。
您可以在工作階段或執行個體層級設定這個旗標。
如要在執行個體層級為 AI 函式啟用智慧批次處理,請使用 gcloud
alloydb instances update 指令:
gcloud alloydb instances update INSTANCE_ID \
--database-flags google_ml_integration.enable_ai_function_acceleration=on \
--region=REGION_ID \
--cluster=CLUSTER_ID \
--project=PROJECT_ID更改下列內容:
INSTANCE_ID:要更新的執行個體 ID。REGION_ID:叢集所在的區域 ID。詳情請參閱「支援的區域」。CLUSTER_ID:叢集 ID。PROJECT_ID:專案 ID。
如要進一步瞭解如何設定執行個體層級的旗標,請參閱「設定資料庫旗標」。
驗證 AI 函式的智慧批次處理
如要確認 AI 函式的智慧批次處理功能是否已啟用,可以使用 EXPLAIN 陳述式分析查詢。
驗證 ai.if 查詢的 AI 函式智慧批次處理
以下範例說明如何為目前的工作階段啟用 AI 函式的智慧批次處理,並使用 ai.if 函式執行查詢:
SET google_ml_integration.enable_ai_function_acceleration = on;
EXPLAIN (COSTS OFF) SELECT r.name
FROM restaurant_reviews r
WHERE ai.if('Is the following a positive review? Review: '||r.review) AND r.city = 'Los Angeles'
GROUP BY r.name
HAVING count(*) > 20
ORDER BY r.name;
使用 EXPLAIN 陳述式分析查詢時,查詢計畫會顯示 AI Function Apply 節點:
QUERY PLAN
----------------------------------------------------------------------------------------
GroupAggregate
Group Key: name
Filter: (count(*) > 20)
-> Sort
Sort Key: name
-> AI Function Apply
Filter: ai.if((('Is the following a positive review? Review: '::text || review)), NULL::character varying)
-> Index Scan using idx_restaurant_reviews_city on restaurant_reviews r
Index Cond: ((city)::text = 'Los Angeles'::text)
驗證 ai.rank 查詢的 AI 函式智慧批次處理
以下範例說明如何為目前的工作階段啟用 AI 函式的智慧批次處理,並使用 ai.rank 函式執行查詢:
SET google_ml_integration.enable_ai_function_acceleration = on;
EXPLAIN (COSTS OFF) SELECT r.name, r.review
FROM restaurant_reviews r
WHERE r.city = 'Los Angeles'
ORDER BY ai.rank('Rank these reviews based on how much they emphasize high-quality ingredients. Review: ' || r.review) DESC
LIMIT 50;
使用 EXPLAIN 陳述式分析查詢時,查詢計畫會顯示 AI Function Apply 節點:
QUERY PLAN
----------------------------------------------------------------------------------------
Limit
-> Sort
Sort Key: (ai.rank(('Rank these reviews based on how much they emphasize high-quality ingredients. Review: ' || r.review'), NULL)) DESC
-> AI Function Apply
-> Bitmap Heap Scan on restaurant_reviews r
Recheck Cond: (city = 'Los Angeles')
-> Bitmap Index Scan on idx_restaurant_reviews_city
Index Cond: (city = 'Los Angeles')
查詢計畫中的 AIFunctionApply 節點表示查詢使用了 AI 函式的智慧批次處理功能。如果沒有這個節點,表示查詢使用標準 PostgreSQL 執行。
限制
- 系統僅支援函式的基本引數。如果是
ai.if和ai.rank,prompt引數必須是資料欄參照,或是與資料欄參照串連的字串常值。其他引數必須是常數。 支援的prompt引數範例如下:ai.if(r.review)ai.if('Is this true? : ' || r.review)ai.rank(r.review)ai.rank('Rate this review: ' || r.review)
- 系統僅支援
SELECT查詢,且WHERE子句中含有ai.if,或ORDER BY子句中含有ai.rank。 - 每次掃描表格只能使用一個 AI 函式。
- 系統僅支援預設的 Gemini 模型。詳情請參閱「Gemini 模型」。如要使用其他模型,請將
google_ml_integration.default_llm_model旗標設為要使用的模型 ID。 - 這項功能僅適用於支援
gemini-2.5-flash-lite模型或您使用google_ml_integration.default_llm_model旗標設定的 LLM 模型區域。詳情請參閱「支援的區域」。