Die Funktion ai.classify ist ein integriertes AlloyDB KI-Tool, das Texteingaben in eine Reihe von Klassen oder Labels kategorisiert, die Sie definieren. Durch die direkte Einbettung dieser Funktion in die Datenbank können Sie mit AlloyDB for PostgreSQL unstrukturierte Daten verarbeiten, ohne komplexe ETL-Pipelines (Extrahieren, Transformieren und Laden) oder externe Dienstintegrationen erstellen zu müssen.
Die Textklassifizierungsfunktion bietet folgende Vorteile:
- Echtzeitklassifizierung: Bringt das Weltwissen von Gemini mithilfe von SQL in Unternehmensdaten ein.
- Skalierbarkeit: Unterstützt Smart Batching für KI-Funktionen, auch als KI-Funktionsbeschleunigung bezeichnet. Dies ist eine Funktion zur automatischen Optimierung der Abfrageausführung in AlloyDB AI, die einzelne, zeilenweise skalare KI-Funktionsaufrufe während der Abfrageausführung im Hintergrund transparent in Batch-Modellanfragen gruppiert. Außerdem wird die array- und cursorbasierte Verarbeitung unterstützt, um Tausende von Zeilen effizient zu verarbeiten.
- Einfachheit: Bietet eine allgemeine Abstraktion, die Modellaufrufe und Datenvorbereitung automatisch verwaltet.
Die Textklassifizierungsfunktion von AlloyDB AI unterstützt mehrere Anwendungsfälle, darunter:
- Themenklassifizierung: Dokumenten oder Artikeln vordefinierte Themen (z. B. Sport, Technologie oder Finanzen) zuweisen.
- Spamerkennung: Eingehende E‑Mails, Kommentare oder Nachrichten werden als Spam identifiziert.
- Absichtserkennung: Bestimmen des Ziels des Nutzers hinter einer Anfrage, z. B. einen Flug buchen, das Wetter prüfen oder Essen bestellen.
Hinweis
Prüfen Sie, ob die folgenden Anforderungen erfüllt sind, bevor Sie die Funktion ai.classify verwenden:
- PostgreSQL-Version: Die Funktion
ai.classifywird in PostgreSQL-Version 18 und höher unterstützt. Auf Ihrem AlloyDB-Cluster muss PostgreSQL 18 oder höher ausgeführt werden. Weitere Informationen finden Sie unter Unterstützte Datenbankversionen. - Erweiterungsversion: Prüfen Sie, ob Sie die aktuelle Version der
google_ml_integration-Erweiterung (Version1.6.1oder höher) installiert haben und die Vorschaufunktion aktiviert ist.
Erweiterung aktivieren
Achten Sie darauf, dass Sie die aktuelle Version der google_ml_integration-Erweiterung (Version 1.6.1 oder höher) mit aktivierter Vorschaufunktion installiert haben.
Verwenden Sie den Befehl SET, um die Flags google_ml_integration.enable_ai_query_engine und google_ml_integration.enable_preview_ai_functions in AlloyDB zu aktivieren. Diese Flags steuern den Zugriff auf die KI-Abfrage-Engine und die Vorabversion von KI-Funktionen wie ai.classify.
Prüfen Sie, ob die Version der
google_ml_integration-Erweiterung1.6.1oder höher ist. Führen Sie den folgenden Befehl aus, um die Version zu prüfen:SELECT extversion FROM pg_extension WHERE extname = 'google_ml_integration';Aktivieren Sie die Flags für die aktuelle Sitzung oder für die gesamte Datenbank. Führen Sie den folgenden Befehl aus, um die Flags für Ihre aktuelle Sitzung zu aktivieren:
SET google_ml_integration.enable_ai_query_engine = 'on'; SET google_ml_integration.enable_preview_ai_functions = 'on';Für diese Änderung ist kein Neustart der Datenbank erforderlich. Der Standardwert dieser Flags ist
off.
Beispieltabelle erstellen
Wenn Sie die Beispiele für die Funktion „classify“ in diesem Dokument nachvollziehen möchten, erstellen Sie eine Tabelle und füllen Sie sie mit den folgenden Beispielrezensionen.
CREATE TABLE IF NOT EXISTS product_reviews (
id INT PRIMARY KEY,
review TEXT
);
INSERT INTO product_reviews (id, review) VALUES
(1, 'Fantastic, would buy again!'),
(2, 'Broken on arrival.'),
(3, 'Mediocre, not worth the price.');
Einzelnen String klassifizieren
Wenn Sie eine einzelne Texteingabe kategorisieren möchten, verwenden Sie die skalare Version von ai.classify. Eine ausführliche API-Dokumentation finden Sie in der Referenz zu ai.classify.
SELECT ai.classify(
input => 'TEXT_CONTENT',
categories => ARRAY['CATEGORY1', 'CATEGORY2', 'CATEGORY3'],
examples => 'EXAMPLES', -- Optional
output_mode => 'OUTPUT_MODE', -- Optional. Can be 'single' or 'multi'.
model_id => 'MODEL_ID' -- Optional. The default value is gemini-3.5-flash-lite.
);
Text in sich gegenseitig ausschließende Kategorien einordnen
Das folgende Beispiel zeigt einen grundlegenden Anwendungsfall, bei dem ein einzelner Text in eine von mehreren sich gegenseitig ausschließenden Kategorien klassifiziert wird:
SELECT ai.classify(
input => 'This is a sales report for Q1.',
categories => ARRAY['Report', 'Invoice', 'Memo']
);
Hier sehen Sie die Beispielausgabe:
Report
Thema mit mehreren Labels klassifizieren
Im folgenden Beispiel wird eine Schlagzeile in mehrere Themen klassifiziert. Dazu wird output_mode auf 'multi' gesetzt und es werden Kategoriebeschreibungen angegeben:
SELECT ai.classify(
input => 'The government announced new regulations on AI development, citing both economic opportunities and potential security risks.',
categories => ARRAY[
ARRAY['politics', 'Questions about politics'],
ARRAY['technology', 'Questions about technology'],
ARRAY['security', 'Questions about security']
],
output_mode => 'multi'
);
Hier sehen Sie die Beispielausgabe:
politics,technology,security
Kategorien mit Beschreibungen verwenden
Das folgende Beispiel zeigt die bevorzugte Methode zum Bereitstellen von Kategorien im 2D-Array-Format mit Labels und Beschreibungen, um die Übersichtlichkeit zu verbessern:
SELECT ai.classify(
input => 'The patient reported mild fever and headache.',
categories => ARRAY[
ARRAY['urgent', 'Requires immediate medical attention'],
ARRAY['non-urgent', 'Routine check-up or minor symptoms'],
ARRAY['query', 'A question about services or appointments']
]
);
Hier sehen Sie die Beispielausgabe:
non-urgent
Few-Shot-Beispiele bereitstellen
Im folgenden Beispiel wird gezeigt, wie Sie die Klassifizierung des Modells steuern können, indem Sie Beispiele für Eingaben und die erwarteten Ausgaben angeben:
SELECT ai.classify(
input => 'Is this item returnable after 90 days?',
categories => ARRAY[
ARRAY['policy', 'Questions about return, warranty, or other policies'],
ARRAY['shipping', 'Questions about order shipment and delivery'],
ARRAY['payment', 'Questions about payment methods or issues'],
ARRAY['other', 'Any other type of question']
],
examples => '[
{"input": "When will my order arrive?", "output": "shipping"},
{"input": "What is the warranty on this?", "output": "policy"},
{"input": "My discount code isn''t working.", "output": "payment"}
]'
);
Hier sehen Sie die Beispielausgabe:
policy
Bestimmte Modell-ID verwenden
Im folgenden Beispiel wird gezeigt, wie Sie eine bestimmte Modellversion oder einen bestimmten Modelltyp verwenden, indem Sie auf die ID verweisen:
SELECT ai.classify(
input => 'This new song is a banger!',
categories => ARRAY[
ARRAY['positive', 'Expresses approval or enjoyment'],
ARRAY['negative', 'Expresses disapproval or dislike']
],
model_id => 'MODEL_ID'
);
Hier sehen Sie die Beispielausgabe:
positive
Ersetzen Sie MODEL_ID durch die ID eines unterstützten vorregistrierten Modells oder eines benutzerdefinierten Modells, das Sie registriert haben. Eine Liste der unterstützten vorregistrierten Modelle finden Sie unter Unterstützte KI-Modelle. Eine Anleitung zum Registrieren anderer Modellendpunkte finden Sie unter Remote-KI-Modelle mit der Modellendpunktverwaltung registrieren und aufrufen.
In Batches klassifizieren
Wenn Sie große Datasets über mehrere Zeilen hinweg klassifizieren, können Sie die Leistung mit Smart Batching für KI-Funktionen oder mit der Array-basierten Version von ai.classify optimieren.
Intelligentes Batching
Wenn Sie Abfragen beschleunigen möchten, die skalare ai.classify-Funktionen über mehrere Zeilen hinweg ausführen, ohne komplexe Array-Aggregationsabfragen schreiben zu müssen, aktivieren Sie das intelligente Batching für KI-Funktionen. Setzen Sie dazu das Datenbank-Flag google_ml_integration.enable_ai_function_acceleration auf on:
SET google_ml_integration.enable_ai_function_acceleration = 'on';
Wenn dieses Flag aktiviert ist, gruppiert AlloyDB einzelne skalare ai.classify-Aufrufe im Hintergrund automatisch in intelligente Batches.
SELECT
id,
ai.classify(
input => review,
categories => ARRAY['positive', 'neutral', 'negative']
) AS sentiment
FROM product_reviews
ORDER BY id;
Array-basiertes Batching
Wenn Sie die Batchverarbeitung für größere Datasets explizit steuern möchten, verwenden Sie die Array-basierte Version von ai.classify, um mehrere Eingaben gleichzeitig zu verarbeiten, indem Sie ein SQL-Array von Eingaben übergeben. Eine detaillierte API-Dokumentation finden Sie in der Referenz zu ai.classify.
SELECT ai.classify(
inputs => TEXT[],
categories => TEXT[][],
examples => TEXT, -- Optional.
output_mode => VARCHAR, -- Optional. The default value is single.
batch_size => INT, -- Optional. The default value is 10.
model_id => VARCHAR(100) -- Optional. The default value is gemini-3.5-flash-lite.
);
Im folgenden Beispiel werden mehrere Rezensionen gleichzeitig klassifiziert:
SELECT unnest(
ai.classify(
inputs => ARRAY(SELECT review FROM product_reviews ORDER BY id),
categories => ARRAY[
ARRAY['positive', 'Good sentiment'],
ARRAY['neutral', 'Neither good nor bad sentiment'],
ARRAY['negative', 'Bad sentiment']
],
batch_size => 5
)
) AS sentiment;
Hier sehen Sie die Beispielausgabe:
sentiment
-----------
positive
negative
negative
Mit Cursors klassifizieren
Die cursorbasierte Funktion verarbeitet große Datasets effizient, indem das System Daten in überschaubaren Batches durch das KI-Modell streamen kann, ohne dass alle Daten auf einmal in den Arbeitsspeicher geladen werden müssen. Weitere Informationen finden Sie in der Referenz zu ai.classify.
Die Funktionssignatur für die cursorbasierte Version von ai.classify sieht so aus:
CREATE OR REPLACE FUNCTION ai.classify(
input_cursor REFCURSOR,
categories TEXT[][],
examples TEXT DEFAULT NULL,
output_mode VARCHAR DEFAULT NULL,
batch_size INT DEFAULT NULL,
model_id VARCHAR(100) DEFAULT NULL)
RETURNS REFCURSOR
Im folgenden Beispiel wird gezeigt, wie Sie einen Cursor verwenden, um Eingaben an ai.classify zu übergeben:
DO $$
DECLARE
cur REFCURSOR;
result_cur REFCURSOR;
input_val TEXT;
sentiment TEXT;
BEGIN
OPEN cur FOR SELECT review FROM product_reviews ORDER BY id;
result_cur := ai.classify(
input_cursor => cur,
categories => ARRAY[
ARRAY['positive', 'Good sentiment'],
ARRAY['neutral', 'Neither good nor bad sentiment'],
ARRAY['negative', 'Bad sentiment']
],
batch_size => 20
);
LOOP
FETCH result_cur INTO input_val, sentiment;
EXIT WHEN NOT FOUND;
RAISE NOTICE 'Sentiment: %', sentiment;
END LOOP;
CLOSE result_cur;
CLOSE cur;
END $$;