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 模型的区域中提供。如需了解详情,请参阅支持的区域。