Auf dieser Seite wird beschrieben, wie Sie mithilfe von KI-basierten SQL-Operatoren abfragen, die von der AlloyDB AI-Abfrage-Engine bereitgestellt werden. 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, führen Sie die folgenden Schritte aus:
- Prüfen Sie, ob die Erweiterung
google_ml_integration
installiert ist. - Prüfen Sie, ob das Flag
google_ml_integration.enable_model_support
aufon
gesetzt ist. - In Vertex AI einbinden
- Verwenden Sie ein Gemini-Modell, das in Ihrer Region unterstützt wird.
In Vertex AI einbinden und Erweiterung installieren
- In Vertex AI einbinden
- Prüfen Sie, ob die aktuelle Version von
google_ml_integration
installiert 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.4.3 (1 row)
Wenn die Erweiterung nicht installiert ist oder die installierte Version älter als 1.4.3 ist, aktualisieren Sie die Erweiterung mit den folgenden Befehlen:
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.4.3 aktualisiert wird, wenden Sie sich an den AlloyDB-Support.
Nachdem Sie sichergestellt haben, dass die Version aktuell ist, installieren Sie die Vorschaufunktion, indem Sie die Prozedur
upgrade_to_preview_version
ausführen:CALL google_ml.upgrade_to_preview_version(); SELECT extversion FROM pg_extension WHERE extname = 'google_ml_integration'; extversion ------------ 1.4.4 (1 row)
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 mit dem model_id parameter
eines der anderen verfügbaren Gemini-Modelle in Ihrer Region 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 Modellendpunktverwaltung 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'
);
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 den Operator ai.if
/google_ml.if
mit „join“, um einen Join-Vorgang auszuführen. 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 der einzelnen Nutzerrezensionen 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;