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 querySELECTin cui la funzione si trova nella clausolaWHERE. Supporta una singola funzioneai.ifper 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 funzioneai.ifper scansione.ai.rank: il batching smart si applica solo alle querySELECTin cui la funzione si trova nella clausolaORDER BY. Supporta una singola funzioneai.rankper scansione. Se una query contiene più scansioni di tabelle, ad esempio su tabelle, relazioni o CTE diverse, puoi accelerare una funzioneai.rankper 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_IDSostituisci 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.ifeai.rank, l'argomentopromptdeve 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 argomentipromptsupportati: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
SELECTconai.ifnelle clausoleWHEREoai.ranknelle clausoleORDER 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_modelsull'ID del modello che vuoi utilizzare. - La funzionalità è disponibile solo nelle regioni che supportano il modello
gemini-2.5-flash-liteo nelle regioni per il modello LLM che imposti utilizzando il flaggoogle_ml_integration.default_llm_model. Per saperne di più, consulta Regioni supportate.
Passaggi successivi
- Esegui query SQL intelligenti utilizzando le funzioni AI.
- Accelera le query AI utilizzando funzioni ottimizzate.
- Esegui il filtro utilizzando funzioni basate su array