O lote inteligente para funções de IA no AlloyDB para PostgreSQL permite otimizar o desempenho ao executar consultas SQL que invocam modelos de IA. Ele oferece o mesmo desempenho ou um desempenho melhor do que as funções baseadas em matriz, sem exigir que você escreva consultas de lote complexas. Para mais informações sobre as funções de IA, consulte Visão geral das funções de IA.
O lote inteligente é compatível com as seguintes funções de IA:
ai.if: o lote inteligente se aplica apenas a consultasSELECTem que a função está na cláusulaWHERE. Ele aceita uma única funçãoai.ifpor verificação e funciona com verificação sequencial, de índice e de heap de bitmap. Se uma consulta contiver várias verificações de tabela, por exemplo, em tabelas, relações ou expressões de tabela comuns (CTEs, na sigla em inglês) diferentes, será possível acelerar uma funçãoai.ifpor verificação.ai.rank: o lote inteligente se aplica apenas a consultasSELECTem que a função está na cláusulaORDER BY. Ele aceita uma única funçãoai.rankpor verificação. Se uma consulta tiver várias verificações de tabela, por exemplo, em tabelas, relações ou CTEs diferentes, será possível acelerar uma funçãoai.rankpor verificação.
Ativar o lote inteligente para funções de IA
Para ativar o lote inteligente para funções de IA, defina a
flag google_ml_integration.enable_ai_function_acceleration como on. Essa flag
é desativada por padrão e controla se o executor de consultas pode
transferir operações de IA qualificadas para o nó de aplicação da função de IA para aceleração.
Quando não definida ou definida como off, todas as operações de consulta são executadas pelo executor padrão do PostgreSQL.
É possível configurar essa flag no nível da sessão ou da instância.
Para ativar o lote inteligente para funções de IA no nível da instância, use o comando 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_IDSubstitua:
INSTANCE_ID: o ID da instância que você quer atualizar.REGION_ID: o ID da região em que o cluster está localizado. Confira mais informações nas regiões com suporte.CLUSTER_ID: o ID do cluster.PROJECT_ID: o ID do projeto.
Para mais informações sobre como definir uma flag no nível da instância, consulte Configurar flags de banco de dados.
Verificar o lote inteligente para funções de IA
Para verificar se o lote inteligente para funções de IA está ativado, use a
instrução EXPLAIN para analisar sua consulta.
Verificar o lote inteligente para funções de IA em consultas do ai.if
O exemplo a seguir mostra como ativar o lote inteligente para funções de IA na
sessão atual e executar uma consulta usando a função 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;
Quando você usa a instrução EXPLAIN para analisar sua consulta, o plano de consulta mostra
um nó 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)
Verificar o lote inteligente para funções de IA em consultas do ai.rank
O exemplo a seguir mostra como ativar o lote inteligente para funções de IA na
sessão atual e executar uma consulta usando a função 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;
Quando você usa a instrução EXPLAIN para analisar sua consulta, o plano de consulta mostra
um nó 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')
O nó AIFunctionApply no plano de consulta indica que a consulta usou o lote inteligente para funções de IA. Se esse nó não estiver presente, a consulta usará a execução padrão do PostgreSQL.
Limitações
- Somente argumentos básicos para as funções são aceitos. Para
ai.ifeai.rank, o argumentopromptprecisa ser uma referência de coluna ou um literal de string concatenado com uma referência de coluna. Todos os outros argumentos precisam ser constantes. Exemplos de argumentospromptcompatíveis:ai.if(r.review)ai.if('Is this true? : ' || r.review)ai.rank(r.review)ai.rank('Rate this review: ' || r.review)
- Há suporte apenas para consultas
SELECTcomai.ifem cláusulasWHEREouai.rankem cláusulasORDER BY. - Só é possível usar uma função de IA por verificação de tabela.
- Somente os modelos padrão do Gemini são compatíveis. Para mais informações, consulte Modelos do Google. Para usar um modelo diferente, defina a flag
google_ml_integration.default_llm_modelcomo o ID do modelo que você quer usar. - O recurso está disponível apenas em regiões que oferecem suporte ao modelo
gemini-3.5-flash-liteou às regiões do modelo de LLM que você definiu usando a flaggoogle_ml_integration.default_llm_model. Para mais informações, consulte Regiões compatíveis.
A seguir
- Realizar consultas SQL inteligentes usando funções de IA.
- Acelere as consultas de IA usando funções otimizadas.
- Filtrar usando funções baseadas em matriz