Acelerar o desempenho das consultas com funções de IA

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 consultas SELECT em que a função está na cláusula WHERE. Ele aceita uma única função ai.if por 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ção ai.if por verificação.
  • ai.rank: o lote inteligente se aplica apenas a consultas SELECT em que a função está na cláusula ORDER BY. Ele aceita uma única função ai.rank por 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ção ai.rank por 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_ID

Substitua:

  • 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.if e ai.rank, o argumento prompt precisa 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 argumentos prompt compatí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 SELECT com ai.if em cláusulas WHERE ou ai.rank em cláusulas ORDER 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_model como 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-lite ou às regiões do modelo de LLM que você definiu usando a flag google_ml_integration.default_llm_model. Para mais informações, consulte Regiões compatíveis.

A seguir