Migliorare le prestazioni delle query con le funzioni AI

L'accelerazione della funzione AI ti consente di ottimizzare le prestazioni quando esegui query che utilizzano le funzioni AI. Fornisce prestazioni uguali o migliori rispetto alle funzioni basate su array , senza richiedere la scrittura di query complesse. Per ulteriori informazioni sulle funzioni AI, consulta la panoramica delle funzioni AI.

L'accelerazione della funzione AI supporta le seguenti funzioni AI:

  • ai.if: l'accelerazione si applica solo alle query SELECT in cui la funzione si trova nella clausola WHERE. Supporta una singola funzione ai.if per scansione e funziona con la scansione sequenziale, dell'indice e dell'heap bitmap. Se una query contiene più scansioni di tabelle, ad esempio su tabelle, relazioni o espressioni di tabelle comuni (CTE) diverse, puoi accelerare una funzione ai.if per scansione.
  • ai.rank: l'accelerazione si applica solo alle query SELECT in cui la funzione si trova nella clausola ORDER BY. Supporta una singola funzione ai.rank per scansione. Se una query contiene più scansioni di tabelle, ad esempio su tabelle, relazioni o CTE diverse, puoi accelerare una funzione ai.rank per scansione.

Abilitare l'accelerazione della funzione AI

Per abilitare l'accelerazione della funzione AI, imposta il google_ml_integration.enable_ai_function_acceleration flag su on. Questo flag è disattivato per impostazione predefinita e controlla se l'esecutore di query è autorizzato a scaricare le operazioni AI idonee nel nodo di applicazione della funzione AI per l'accelerazione. Se non è impostato o è impostato su off, tutte le operazioni di query vengono eseguite dall'esecutore PostgreSQL standard.

Puoi configurare questo flag a livello di sessione o di istanza.

Per abilitare l'accelerazione della funzione AI a livello di istanza, utilizza il 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

Sostituisci quanto segue:

  • INSTANCE_ID: l'ID dell'istanza che vuoi aggiornare.
  • REGION_ID: l'ID della regione in cui si trova il cluster. Per ulteriori informazioni, consulta Regioni supportate.
  • CLUSTER_ID: l'ID del cluster.
  • PROJECT_ID: l'ID del progetto.

Per ulteriori informazioni su come impostare un flag a livello di istanza, consulta Configurare i flag di database.

Verificare l'accelerazione della funzione AI

Per verificare che l'accelerazione della funzione AI sia abilitata, puoi utilizzare l'istruzione EXPLAIN per analizzare la query.

Verificare l'accelerazione della funzione AI per le query ai.if

L'esempio seguente mostra come abilitare l'accelerazione della funzione AI per la sessione corrente ed eseguire una query utilizzando la funzione 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 utilizzi l'istruzione EXPLAIN per analizzare la query, il piano di query mostra un nodo 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)

Verificare l'accelerazione della funzione AI per le query ai.rank

L'esempio seguente mostra come abilitare l'accelerazione della funzione AI per la sessione corrente ed eseguire una query utilizzando la funzione 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 utilizzi l'istruzione EXPLAIN per analizzare la query, il piano di query mostra un nodo 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')

Il nodo AIFunctionApply nel piano di query indica che la query ha utilizzato l'accelerazione della funzione AI. Se questo nodo non è presente, la query ha utilizzato l'esecuzione PostgreSQL standard.

Limitazioni

  • Sono supportati solo gli argomenti di base delle funzioni. Per ai.if e ai.rank, l'argomento prompt deve essere un riferimento a una colonna o un valore letterale stringa concatenato con un riferimento a una colonna. Tutti gli altri argomenti devono essere costanti semplici. Di seguito sono riportati alcuni esempi di argomenti prompt supportati:
    • ai.if(r.review)
    • ai.if('Is this true? : ' || r.review)
    • ai.rank(r.review)
    • ai.rank('Rate this review: ' || r.review)
  • Sono supportate solo le query SELECT con ai.if nelle clausole WHERE o ai.rank nelle clausole ORDER BY.
  • È supportata una sola funzione AI per scansione di tabella.
  • Sono supportati solo i modelli Gemini predefiniti. Per ulteriori informazioni, consulta Modelli Gemini. Per utilizzare un modello diverso, puoi impostare il flag google_ml_integration.default_llm_model sull'ID del modello che vuoi utilizzare.
  • La funzionalità è disponibile solo nelle regioni che supportano il modello gemini-2.5-flash-lite o le regioni per il modello LLM che hai impostato utilizzando il flag google_ml_integration.default_llm_model. Per ulteriori informazioni, consulta Regioni supportate.

Passaggi successivi