Migliorare le prestazioni delle query con le funzioni AI

Il batching smart per le funzioni AI in AlloyDB per PostgreSQL ti consente di ottimizzare le prestazioni quando esegui query SQL che richiamano modelli di AI. Offre prestazioni uguali o migliori rispetto alle funzioni basate su array senza richiedere la scrittura di query di batching complesse. Per saperne di più sulle funzioni AI, consulta Panoramica delle funzioni AI.

Il raggruppamento intelligente supporta le seguenti funzioni AI:

  • ai.if: il batching intelligente 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 scansioni sequenziali, di indici e di heap bitmap. Se una query contiene più scansioni di tabelle, ad esempio su tabelle, relazioni o espressioni di tabella comuni (CTE) diverse, puoi accelerare una funzione ai.if per scansione.
  • ai.rank: il batching smart 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.

Attiva il raggruppamento intelligente per le funzioni AI

Per attivare il batching intelligente per le funzioni AI, imposta il flag google_ml_integration.enable_ai_function_acceleration su on. Questo flag è disattivato per impostazione predefinita e controlla se l'esecutore delle query è autorizzato a eseguire l'offload delle operazioni AI idonee al nodo di applicazione della funzione AI per l'accelerazione. Se non viene impostato o se viene 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 attivare il batching smart per le funzioni 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 saperne di più, consulta Regioni supportate.
  • CLUSTER_ID: l'ID del cluster.
  • PROJECT_ID: l'ID del progetto

Per saperne di più su come impostare un flag a livello di istanza, consulta Configura i flag di database.

Verifica lo smart batching per le funzioni AI

Per verificare che il batching smart per le funzioni AI sia abilitato, puoi utilizzare l'istruzione EXPLAIN per analizzare la query.

Verifica lo smart batching per le funzioni AI per le query ai.if

L'esempio seguente mostra come attivare lo smart batching per le funzioni 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)

Verifica il raggruppamento intelligente per le funzioni AI per le query ai.rank

L'esempio seguente mostra come attivare lo smart batching per le funzioni 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 il batching smart per le funzioni 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. Ecco 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 della tabella.
  • Sono supportati solo i modelli Gemini predefiniti. Per saperne di più, consulta Modelli Google. 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 nelle regioni per il modello LLM che imposti utilizzando il flag google_ml_integration.default_llm_model. Per saperne di più, consulta Regioni supportate.

Passaggi successivi