Mit optimierten Funktionen in AlloyDB for PostgreSQL können Sie ein kleineres, schnelleres Proxy-Modell verwenden, um die meisten Ihrer SQL-Abfragen zu verarbeiten, die KI-Funktionen verwenden. Nur bei Bedarf wird auf ein größeres Large Language Model (LLM) zurückgegriffen. Dieser Ansatz reduziert die Betriebskosten und verbessert die Reaktionsfähigkeit von Abfragen, indem Remote-LLM-Aufrufe für Aufgaben zur zeilenweisen Klassifizierung oder Filterung minimiert werden.
AlloyDB-KI-Funktionen wie ai.if() können aufgrund von Remote-Aufrufen an Large Language Models (LLMs) eine hohe Latenz haben. Dieses Latenzproblem wird durch optimierte Funktionen behoben, indem kleinere, lokal trainierte Proxy-Modelle verwendet werden, um Ihre Abfragen zu verarbeiten. Diese Modelle werden mit einer Stichprobe Ihrer Daten trainiert, wobei die Ausgabe des LLM als Source of Truth verwendet wird.
Genauigkeitsprüfungen werden zur Laufzeit für eine Stichprobe von Zeilen mit dem LLM durchgeführt. Dazu generiert AlloyDB mit dem LLM Labels für die Beispielzeilen und vergleicht sie mit den Vorhersagen des Proxy-Modells, um die Genauigkeit zu überprüfen. Wenn die Genauigkeitsprüfung fehlschlägt, wird für die Abfrage das LLM verwendet.
Wenn Sie eine optimierte Funktion verwenden, führt AlloyDB folgende Schritte aus:
- Proxy-Modell trainieren: AlloyDB trainiert ein einfaches Proxy-Modell mit einer Stichprobe Ihrer Daten. Dies geschieht im Hintergrund, wenn Sie die Anweisung
PREPAREmit der Funktionai.if()verwenden, um das Modell für optimierte Abfragen zu trainieren. - Abfrage ausführen: Wenn Sie die Anweisung
EXECUTEverwenden, verarbeitet AlloyDB die Abfrage lokal mit dem trainierten Proxy-Modell. - Auf das LLM zurückgreifen: Wenn die Genauigkeit des Modells gering ist oder AlloyDB kein Modell finden kann, greift AlloyDB automatisch auf das LLM zurück.

Hinweis
Führen Sie die folgenden Schritte aus, bevor Sie die optimierten Funktionen verwenden:
- Stellen Sie mit psql oder
AlloyDB Studio als Nutzer
postgresoder als Nutzer, der Zugriff auf die Tabelle mit den Daten hat, eine Verbindung zu Ihrer Datenbank her. Prüfen Sie, ob die Erweiterung
google_ml_integrationinstalliert ist und in Version 1.5.8 oder höher verfügbar ist.SELECT extversion FROM pg_extension WHERE extname = 'google_ml_integration'; extversion ------------ 1.5.8 (1 row)Konfigurieren Sie AlloyDB für die Verwendung mit der Gemini Enterprise Agent Platform. Weitere Informationen finden Sie unter Datenbank in die Agent Platform einbinden.
Achten Sie darauf, dass die folgenden Datenbank-Flags aktiviert sind. Weitere Informationen finden Sie unter Datenbank-Flags einer Instanz konfigurieren.
google_ml_integration.enable_model_supportgoogle_ml_integration.enable_ai_query_enginegoogle_ml_integration.enable_cost_optimized_ai_functions
Generieren Sie Einbettungen für die Tabelle, die Sie abfragen möchten. Weitere Informationen finden Sie unter Automatische Einbettungen für Tabellen generieren und verwalten.
Berücksichtige Folgendes:
- Die Spalte mit den Quelldaten muss vom Typ
TEXToderVARCHARsein. - Die Einbettungsspalte, die als Eingabe für die optimierte KI-Funktion dient, muss vom Typ
REAL[]oderVECTORsein. - Optimierte Funktionen sind nur in Regionen verfügbar, in denen generative Modelle der Agent Platform verfügbar sind. Eine Liste der verfügbaren Regionen finden Sie unter Bereitstellungen und Endpunkte.
- Die Spalte mit den Quelldaten muss vom Typ
Optimierte Funktionen verwenden
Verwenden Sie die Anweisungen PREPARE und EXECUTE mit der Funktion ai.if(), um eine optimierte Funktion zu verwenden. Im Folgenden sehen Sie ein Beispiel für die Verwendung einer optimierten Funktion:
Erstellen Sie eine Tabelle
restaurant_reviews. Die Spaltereviewmit den Quelldaten ist vom TypTEXTund die Spaltereview_embedding, die für Abfragen verwendet wird, ist vom TypVECTOR(768).CREATE TABLE restaurant_reviews ( id SERIAL, name VARCHAR(64), city VARCHAR(64), review TEXT, review_embedding VECTOR(768) );Verwenden Sie eine Anweisung
PREPAREmit der Funktionai.if(), um anzugeben, dass für die Abfrage eine optimierte Funktion verwendet werden muss. Diese Anweisung löst das asynchrone Training des Modells im Hintergrund aus.Das Modell wird nur unter den folgenden Bedingungen trainiert:
- Die Abfrage enthält genau eine Funktion
ai.if(). ai.if()befindet sich nicht in einer Unterabfrage.
PREPARE positive_reviews_query AS SELECT r.name, r.city FROM restaurant_reviews r WHERE ai.if('Is the following a positive review? Review: ' || r.review, r.review_embedding) GROUP BY r.name, r.city HAVING COUNT(*) > 500;- Die Abfrage enthält genau eine Funktion
Führen Sie die Abfrage mit der Anweisung
EXECUTEaus. Da die AnweisungPREPAREspezifisch für die aktuelle Sitzung ist, müssen Sie die AnweisungEXECUTEfür dieselbe Verbindung ausführen:EXECUTE positive_reviews_query;conn2=> SELECT r.name, r.city FROM restaurant_reviews r WHERE ai.if('Is the following a positive review? Review: ' || r.review, r.review_embedding) GROUP BY r.name, r.city HAVING COUNT(*) > 500;Das trainierte Proxy-Modell wird nicht verwendet, wenn eine der folgenden Bedingungen erfüllt ist:
- Die in
ai.if()referenzierte Spalte für Inhalte oder Einbettungen ändert sich. Beide Spalten müssen zur selben Tabelle gehören. - Der Prompt, der für die Spalte mit den Inhalten bereitgestellt wird, ändert sich.
- Die Struktur der Abfrage ändert sich, was zu einer anderen
query_idführt. - Die Abfrage erfüllt zu Beginn der Abfrage den Schwellenwert für die Genauigkeitsprüfung nicht.
In diesen Fällen wird für die Abfrage das LLM verwendet und AlloyDB gibt eine Warnung zurück.
- Die in
Optional. Wenn Sie die Genauigkeitsprüfung für die gesamte Datenbankumgebung deaktivieren möchten, was erforderlich ist, da Genauigkeitsprüfungen auch während des Modelltrainings durchgeführt werden, führen Sie den folgenden Befehl aus.
ALTER DATABASE DATABASE_NAME SET google_ml_integration.runtime_accuracy_check = off;Ersetzen Sie
DATABASE_NAMEdurch den Namen Ihrer Datenbank.
Proxy-Modell neu trainieren
Wenn sich die zugrunde liegenden Tabellendaten erheblich ändern, können Sie das Proxy-Modell neu trainieren, indem Sie die Anweisung PREPARE noch einmal ausführen. Wenn Sie eine Abfrage neu vorbereiten, wird das vorhandene Proxy-Modell ersetzt, indem eine neue Trainingsanfrage initiiert wird.
Beschränkungen
Wenn Sie die Spalte mit den Quellinhalten, die Einbettungsspalte oder den Prompt ändern, der für die Funktion ai.if() bereitgestellt wird, müssen Sie eine neue Anweisung PREPARE ausgeben.
AlloyDB trainiert die optimierte Funktion, um das Verhalten einer eindeutigen Kombination aus Prompt und Eingabedaten zu approximieren.