AlloyDB for PostgreSQL 的 AI 函式智慧批次處理功能,可讓您在執行叫用 AI 模型的 SQL 查詢時,最佳化效能。這項功能提供與陣列型函式相同或更佳的效能,且不需編寫複雜的批次查詢。如要進一步瞭解 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)
- 僅支援
WHERE子句中含有ai.if,或ORDER BY子句中含有ai.rank的SELECT查詢。 - 每次掃描資料表只能使用一個 AI 函式。
- 僅支援預設 Gemini 模型。詳情請參閱「Google 模型」。如要使用其他模型,請將
google_ml_integration.default_llm_model旗標設為要使用的模型 ID。 - 這項功能僅適用於支援
gemini-3.5-flash-lite模型的區域,或您使用google_ml_integration.default_llm_model旗標設定的 LLM 模型區域。詳情請參閱「支援的區域」。