Auf dieser Seite wird beschrieben, wie Sie mithilfe von KI-basierten SQL-Operatoren, die von KI-Funktionen bereitgestellt werden, Abfragen ausführen. Sie können die Operatoren ai.if für Filter, ai.rank und ai.generate verwenden, um natürliche Sprache mit SQL-Abfragen zu kombinieren.
Wenn Sie die Anleitung auf dieser Seite verwenden möchten, müssen Sie sich mit AlloyDB und generativer KI auskennen.
AlloyDB AI reserviert und erstellt das Schema ai.
Hinweise
Bevor Sie natürliche Sprache in SQL-Operatoren verwenden, müssen Sie Folgendes tun:
- Prüfen Sie, ob die Erweiterung
google_ml_integrationinstalliert ist. - Prüfen Sie, ob das Flag
google_ml_integration.enable_model_supportaufongesetzt ist. - In Vertex AI einbinden
- Verwenden Sie ein Gemini-Modell, das in Ihrer Region unterstützt wird.
In Vertex AI einbinden und Erweiterung installieren
- Nutzerzugriff auf Vertex AI-Modelle konfigurieren
- Prüfen Sie, ob die neueste Version von
google_ml_integrationinstalliert ist.Führen Sie den folgenden Befehl aus, um die installierte Version zu prüfen:
SELECT extversion FROM pg_extension WHERE extname = 'google_ml_integration'; extversion ------------ 1.5.2 (1 row)
Wenn die Erweiterung nicht installiert ist oder die installierte Version älter als 1.5.2 ist, aktualisieren Sie die Erweiterung.
CREATE EXTENSION IF NOT EXISTS google_ml_integration; ALTER EXTENSION google_ml_integration UPDATE;
Wenn beim Ausführen der vorherigen Befehle Probleme auftreten oder die Erweiterung nach dem Ausführen der vorherigen Befehle nicht auf Version 1.5.2 aktualisiert wird, wenden Sie sich an den Google Cloud -Support.
Wenn Sie die Funktionen der AlloyDB AI-Abfrage-Engine verwenden möchten, setzen Sie das Flag
google_ml_integration.enable_ai_query_engineauftrue.SQL
- Aktivieren Sie die KI-Abfrage-Engine für die aktuelle Sitzung.
SET google_ml_integration.enable_ai_query_engine = true;
- Funktionen für eine bestimmte Datenbank sitzungsübergreifend aktivieren
ALTER DATABASE DATABASE_NAME SET google_ml_integration.enable_ai_query_engine = 'on';
- Aktivieren Sie die KI-Abfrage-Engine für einen bestimmten Nutzer über Sitzungen und Datenbanken hinweg.
ALTER ROLE postgres SET google_ml_integration.enable_ai_query_engine = 'on';
Console
Wenn Sie den Wert des Flags
google_ml_integration.enable_ai_query_engineändern möchten, folgen Sie der Anleitung unter Datenbank-Flags einer Instanz konfigurieren.gcloud
Wenn Sie die gcloud CLI verwenden möchten, können Sie die Google Cloud CLI installieren und initialisieren oder Cloud Shell verwenden.
Sie können den Wert des Flags
google_ml_integration.enable_ai_query_engineändern. Weitere Informationen finden Sie unter Datenbank-Flags einer Instanz konfigurieren.gcloud alloydb instances update INSTANCE_ID \ --database-flags google_ml_integration.enable_ai_query_engine=on \ --region=REGION_ID \ --cluster=CLUSTER_ID \ --project=PROJECT_ID
- Aktivieren Sie die KI-Abfrage-Engine für die aktuelle Sitzung.
Ein in Ihrer Region unterstütztes Gemini-Modell verwenden
Wenn sich Ihr AlloyDB for PostgreSQL-Cluster in einer Region befindet, in der gemini-2.0-flash nicht unterstützt wird, können Sie eines der anderen verfügbaren Gemini-Modelle in Ihrer Region mit model_id parameter verwenden.
Alternativ können Sie einen Gemini-Modellendpunkt registrieren und diese Modell-ID für die KI-Operatoren angeben. Weitere Informationen finden Sie unter Remote-KI-Modelle mit der Verwaltung von Modellendpunkten registrieren und aufrufen.
Das folgende Beispiel zeigt, wie ein weiterer Gemini-Endpunkt registriert wird. In diesem Beispiel ist dieser zweite Gemini-Endpunkt der globale Endpunkt für gemini-2.0-flash. Sie können dieses registrierte Modell mit KI-Operatoren verwenden, indem Sie model_id =>gemini-2.0-flash-global` als zusätzliches Argument übergeben.
CALL
google_ml.create_model(
model_id => 'gemini-2.0-flash-global',
model_type => 'llm',
model_provider => 'google',
model_qualified_name => 'gemini-2.0-flash',
model_request_url => 'https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/publishers/google/models/gemini-2.0-flash:generateContent',
model_auth_type => 'alloydb_service_agent_iam'
);
Gemini 3.0-Modelle verwenden
Einige Gemini-Modelle, z. B. gemini-3.0-pro-preview, sind nur über den globalen Endpunkt verfügbar. Sie müssen solche Modelle so registrieren:
CALL
google_ml.create_model(
model_id => 'gemini-3-preview-model',
model_request_url => 'https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/publishers/google/models/gemini-3-pro-preview:generateContent',
model_qualified_name => 'gemini-3-pro-preview',
model_provider => 'google',
model_type => 'llm',
model_auth_type => 'alloydb_service_agent_iam'
);
Ersetzen Sie PROJECT_ID durch die ID des Projekts, in dem das Vertex AI-Modell verfügbar ist. Das AlloyDB-Dienstkonto muss in diesem Projekt die Rolle „Vertex AI User“ haben.
Nachdem Sie das Modell registriert haben, können Sie es so in KI-Funktionen verwenden:
SELECT ai.generate(prompt => 'What is AlloyDB?', model_id => 'gemini-3-preview-model');
Filter in Abfragen verwenden
AlloyDB AI bietet mehrere KI-basierte SQL-Funktionen, mit denen Sie die Verarbeitung natürlicher Sprache und LLMs direkt in Ihren Datenbankabfragen verwenden können, einschließlich der Operatoren ai.if und ai.rank.
Filter
Mit dem Operator ai.if/google_ml.if können Sie prüfen, ob eine in natürlicher Sprache formulierte Bedingung erfüllt ist. Die Funktion gibt den booleschen Wert „true“ oder „false“ zurück. Wenn die Ausgabe nicht eindeutig erkannt wird, wird false zurückgegeben.
- Function signature
FUNCTION ai.if(prompt TEXT, model_id VARCHAR(100) DEFAULT NULL) RETURNS bool
Im folgenden Beispiel wird der Operator ai.if als Filter verwendet,um Restaurants mit mehr als 500 positiven Rezensionen in Städten mit mehr als 100.000 Einwohnern zu finden. Im Beispiel wird restaurant_reviews verwendet und es enthält Daten wie Rezensionen und den Standort der Stadt. Mit dem Operator ai.if können Sie die Stimmung in den Rezensionen analysieren und die Standorte aus der Datenbank mit dem allgemeinen Wissen von Gemini über die Bevölkerung an diesen Standorten kombinieren.
SELECT r.name, r.location_city
FROM restaurant_reviews r
WHERE
AI.IF(r.location_city || ' has a population OF more than 100,000 AND the following is a positive review; Review: ' || r.review)
GROUP BY r.name, r.location_city
HAVING COUNT(*) > 500;
Im Folgenden sehen Sie dasselbe Beispiel mit dem Modell, das Sie unter Gemini-Modell verwenden, das in Ihrer Region unterstützt wird registriert haben.
SELECT r.name, r.location_city
FROM restaurant_reviews r
WHERE
AI.IF(r.location_city || ' has a population of more than 100,000 AND the following is a positive review; Review: ' || r.review, model_id => 'gemini-2.0-flash-global')
GROUP BY r.name, r.location_city
HAVING COUNT(*) > 500;
Join für eine Abfrage ausführen, in der der IF-Operator verwendet wird
Verwenden Sie zum Ausführen eines Join-Vorgangs den Operator ai.if/google_ml.if mit „join“. Mit der folgenden Beispielabfrage wird die Anzahl der Rezensionen ermittelt, in denen die einzelnen Menüpunkte aus der Speisekarte des Restaurants erwähnt werden.
SELECT item_name, COUNT(*)
FROM menu_items JOIN user_reviews
ON ai.if(
prompt => 'Does the following user review talk about the menu item mentioned ? review: ' || user_reviews.review_text || ' menu item: ' || item_name)
GROUP BY item_name;
Textgenerierung und ‑zusammenfassung
Die Funktion ai.generate generiert Text, indem sie bereitgestellte Daten mit dem Prompt des Nutzers kombiniert.
-- Function Signature
FUNCTION ai.generate(prompt TEXT, model_id VARCHAR(100) DEFAULT NULL) RETURNS TEXT
Mit der folgenden Anfrage können Sie beispielsweise eine kurze Zusammenfassung jeder Nutzerrezension erstellen.
SELECT
ai.generate(
prompt => 'Summarize the review in 20 words or less. Review: ' || review) AS review_summary
FROM user_reviews
Abfrageergebnisse bewerten
Wenn Sie Abfrageergebnisse mit benutzerdefinierten Anweisungen in natürlicher Sprache sortieren möchten, verwenden Sie den Operator ai.rank. Mit dieser Funktion können Sie einen Prompt mit den Ranking-Kriterien angeben und für jedes Element einen Wert zurückgeben.
-- Function signature
FUNCTION ai.rank(prompt TEXT, model_id VARCHAR(100) DEFAULT NULL) RETURNS real
Mit der folgenden Abfrage werden beispielsweise die 20 positivsten Restaurantrezensionen abgerufen, wobei die Punktzahlen eines LLM verwendet werden.
SELECT review AS top20
FROM user_reviews
ORDER BY ai.rank(
'Score the following review according to these rules:
(1) Score OF 8 to 10 IF the review says the food IS excellent.
(2) 4 to 7 IF the review says the food is ok.
(3) 1 to 3 IF the review says the food is not good. Here is the review:' || review) DESC
LIMIT 20;