Leistung von Abfragen mit KI-Funktionen steigern

Mit Smart Batching für KI-Funktionen in AlloyDB for PostgreSQL können Sie die Leistung optimieren, wenn Sie SQL-Abfragen ausführen, die KI-Modelle aufrufen. Sie bietet dieselbe oder eine bessere Leistung als Array-basierte Funktionen, ohne dass Sie komplexe Batchabfragen schreiben müssen. Weitere Informationen zu KI-Funktionen finden Sie unter KI-Funktionen – Übersicht.

Das intelligente Batching unterstützt die folgenden KI-Funktionen:

  • ai.if: Smart Batching gilt nur für SELECT-Abfragen, bei denen sich die Funktion in der WHERE-Klausel befindet. Es wird eine einzelne ai.if-Funktion pro Scan unterstützt und funktioniert mit sequenziellen, Index- und Bitmap-Heap-Scans. Wenn eine Abfrage mehrere Tabellenscans enthält, z. B. für verschiedene Tabellen, Beziehungen oder allgemeine Tabellenausdrücke (CTEs), können Sie eine ai.if-Funktion pro Scan beschleunigen.
  • ai.rank: Smart Batching gilt nur für SELECT-Abfragen, bei denen sich die Funktion in der ORDER BY-Klausel befindet. Es wird eine einzelne ai.rank-Funktion pro Scan unterstützt. Wenn eine Abfrage mehrere Tabellenscans enthält, z. B. für verschiedene Tabellen, Beziehungen oder CTEs, können Sie eine ai.rank-Funktion pro Scan beschleunigen.

Intelligentes Batching für KI-Funktionen aktivieren

Wenn Sie Smart Batching für KI-Funktionen aktivieren möchten, setzen Sie das Flag google_ml_integration.enable_ai_function_acceleration auf on. Dieses Flag ist standardmäßig deaktiviert und steuert, ob der Query Executor berechtigte KI-Vorgänge zur Beschleunigung an den Knoten für die Anwendung von KI-Funktionen auslagern darf. Wenn die Option nicht festgelegt oder auf off gesetzt ist, werden alle Abfragevorgänge vom Standard-PostgreSQL-Executor ausgeführt.

Sie können dieses Flag entweder auf Sitzungs- oder Instanzebene konfigurieren.

Verwenden Sie den Befehl gcloud alloydb instances update, um das Smart Batching für KI-Funktionen auf Instanzebene zu aktivieren:

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

Ersetzen Sie Folgendes:

  • INSTANCE_ID: die ID der Instanz, die Sie aktualisieren möchten.
  • REGION_ID: die ID der Region, in der sich der Cluster befindet. Weitere Informationen finden Sie unter Unterstützte Regionen.
  • CLUSTER_ID: die ID des Clusters.
  • PROJECT_ID: die ID des Projekts.

Weitere Informationen zum Festlegen eines Flags auf Instanzebene finden Sie unter Datenbank-Flags konfigurieren.

Smart Batching für KI-Funktionen überprüfen

Wenn Sie prüfen möchten, ob Smart Batching für KI-Funktionen aktiviert ist, können Sie die Anweisung EXPLAIN verwenden, um Ihre Abfrage zu analysieren.

Smart Batching für KI-Funktionen für ai.if-Abfragen prüfen

Im folgenden Beispiel wird gezeigt, wie Sie Smart Batching für KI-Funktionen für die aktuelle Sitzung aktivieren und eine Abfrage mit der Funktion ai.if ausführen:

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;

Wenn Sie die Anweisung EXPLAIN verwenden, um Ihre Abfrage zu analysieren, wird im Abfrageplan ein AI Function Apply-Knoten angezeigt:

                                       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)

Smart Batching für KI-Funktionen für ai.rank-Abfragen prüfen

Im folgenden Beispiel wird gezeigt, wie Sie Smart Batching für KI-Funktionen für die aktuelle Sitzung aktivieren und eine Abfrage mit der Funktion ai.rank ausführen:

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;

Wenn Sie die Anweisung EXPLAIN verwenden, um Ihre Abfrage zu analysieren, wird im Abfrageplan ein AI Function Apply-Knoten angezeigt:

                                       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')

Der Knoten AIFunctionApply im Abfrageplan gibt an, dass die Abfrage Smart Batching für KI-Funktionen verwendet hat. Wenn dieser Knoten nicht vorhanden ist, wurde die Abfrage mit der standardmäßigen PostgreSQL-Ausführung ausgeführt.

Beschränkungen

  • Es werden nur grundlegende Argumente für die Funktionen unterstützt. Bei ai.if und ai.rank muss das Argument prompt entweder ein Spaltenverweis oder ein Stringliteral sein, das mit einem Spaltenverweis verkettet ist. Alle anderen Argumente müssen Konstanten sein. Beispiele für unterstützte prompt-Argumente:
    • ai.if(r.review)
    • ai.if('Is this true? : ' || r.review)
    • ai.rank(r.review)
    • ai.rank('Rate this review: ' || r.review)
  • Es werden nur SELECT-Abfragen mit ai.if in WHERE-Klauseln oder ai.rank in ORDER BY-Klauseln unterstützt.
  • Pro Tabellenscan wird nur eine KI-Funktion unterstützt.
  • Es werden nur die Standard-Gemini-Modelle unterstützt. Weitere Informationen finden Sie unter Google-Modelle. Wenn Sie ein anderes Modell verwenden möchten, können Sie das Flag google_ml_integration.default_llm_model auf die gewünschte Modell-ID setzen.
  • Die Funktion ist nur in Regionen verfügbar, die das Modell gemini-2.5-flash-lite unterstützen, oder in den Regionen für das LLM-Modell, das Sie mit dem Flag google_ml_integration.default_llm_model festlegen. Weitere Informationen finden Sie unter Unterstützte Regionen.

Nächste Schritte