Auf dieser Seite erfahren Sie, wie Sie AlloyDB als Large Language Model (LLM)-Tool verwenden und Vektor-Embeddings basierend auf einem LLM generieren.
Weitere Informationen zur Verwendung von ML-Modellen mit AlloyDB Omni finden Sie unter Generative AI-Anwendungen erstellen.
Mit AlloyDB können Sie ein von Vertex AI gehostetes LLM verwenden, um einen Textstring in eine Einbettung zu übersetzen. Das ist die Darstellung der semantischen Bedeutung des jeweiligen Textes als numerischer Vektor. Weitere Informationen zur Unterstützung von Texteinbettungen in Vertex AI finden Sie unter Texteinbettungen.
Hinweise
Damit AlloyDB Einbettungen generieren kann, müssen die folgenden Anforderungen erfüllt sein:
Regionale Einschränkungen
Sie können Einbettungen in Regionen generieren, in denen generative KI in Vertex AI verfügbar ist. Eine Liste der Regionen finden Sie unter Generative AI an Vertex AI-Standorten .
Bei AlloyDB müssen sich sowohl der AlloyDB-Cluster als auch das Vertex AI-Modell, das Sie abfragen, in derselben Region befinden.
Erforderliche Datenbankerweiterung
Prüfen Sie, ob die
google_ml_integration
-Erweiterung in Ihrer AlloyDB-Datenbank installiert ist.CREATE EXTENSION google_ml_integration;
Diese Erweiterung ist in AlloyDB enthalten. Sie können es in jeder Datenbank in Ihrem Cluster installieren.
Legen Sie das Datenbank-Flag
google_ml_integration.enable_model_support
aufoff
fest.
Zugriff auf Modell einrichten
Bevor Sie Einbettungen aus einer AlloyDB-Datenbank generieren können, müssen Sie AlloyDB für die Verwendung mit einem Text-Embedding-Modell konfigurieren.
Wenn Sie mit dem cloudbasierten textembeddings-gecko
-Modell arbeiten möchten, müssen Sie Ihre Datenbank in Vertex AI einbinden.
Datenbanknutzern Zugriff zum Generieren von Einbettungen gewähren
Datenbankbenutzern die Berechtigung dazu erteilen, die embedding
-Funktion zur Ausführung von Vorhersagen zu verwenden:
Verbinden Sie einen
psql
-Client mit der primären Instanz des Clusters, wie unterpsql
-Client mit einer Instanz verbinden beschrieben.Stellen Sie über die psql-Eingabeaufforderung eine Verbindung zur Datenbank her und gewähren Sie Berechtigungen:
\c DB_NAME GRANT EXECUTE ON FUNCTION embedding TO USER_NAME;
Ersetzen Sie Folgendes:
DB_NAME: der Name der Datenbank, für die die Berechtigungen gewährt werden sollen
USER_NAME: der Name des Nutzers, dem die Berechtigungen erteilt werden sollen
Einbettung generieren
AlloyDB bietet eine Funktion, mit der Sie Text in eine Vektor-Embedding umwandeln können. Sie können diese Einbettung dann in Ihrer Datenbank als Vektordaten speichern und optional pgvector
-Funktionen verwenden, um Abfragen darauf aufzubauen.
Verwenden Sie die Funktion embedding()
der Erweiterung google_ml_integration
, um ein Einbettungsobjekt mit AlloyDB zu generieren:
SELECT embedding( 'MODEL_IDVERSION_TAG', 'TEXT');
Ersetzen Sie Folgendes:
MODEL_ID
: Die ID des Modells, das abgefragt werden soll.Wenn Sie Vertex AI Model Garden verwenden, geben Sie
textembedding-gecko@003
als Modell-ID an. Dies sind die cloudbasierten Modelle, die AlloyDB für Texteinbettungen verwenden kann. Weitere Informationen finden Sie unter Texteinbettungen.Optional:
VERSION_TAG
: das Versions-Tag des Modells, das abgefragt werden soll. Stellen Sie dem Tag@
voran.Wenn Sie eines der
textembedding-gecko
-Englischmodelle mit Vertex AI verwenden, geben Sie eines der Versions-Tags an, z. B.textembedding-gecko@003
, das in Modellversionen aufgeführt ist.Google empfiehlt dringend, das Versions-Tag immer anzugeben. Wenn Sie das Versions-Tag nicht angeben, verwendet AlloyDB immer die neueste Modellversion. Dies kann zu unerwarteten Ergebnissen führen.
TEXT
: Der Text, der in eine Vektoreinbettung umgewandelt werden soll.
Im folgenden Beispiel wird Version 003
der englischen textembedding-gecko
-Modelle verwendet, um eine Einbettung basierend auf einem bereitgestellten Literalstring zu generieren:
SELECT embedding('textembedding-gecko@003', 'AlloyDB is a managed, cloud-hosted SQL database service.');
Store-Einbettungen
Die mit der Erweiterung google_ml_integration
generierten Einbettungen werden als Arrays von real
-Werten implementiert.
Diese generierten Einbettungen werden als Eingaben für pgvector
-Erweiterungsfunktionen übergeben.
Wenn Sie diesen Wert in einer Tabelle speichern möchten, fügen Sie eine real[]
-Spalte hinzu:
ALTER TABLE TABLE ADD COLUMN EMBEDDING_COLUMN real[DIMENSIONS];
Nachdem Sie eine Spalte zum Speichern von Einbettungen erstellt haben, können Sie sie anhand der Werte füllen, die bereits in einer anderen Spalte in derselben Tabelle gespeichert sind:
UPDATE TABLE SET EMBEDDING_COLUMN = embedding('MODEL_IDVERSION_TAG', SOURCE_TEXT_COLUMN);
Ersetzen Sie Folgendes:
TABLE
: den TabellennamenEMBEDDING_COLUMN
: der Name der Einbettungsspalte
MODEL_ID
: Die ID des Modells, das abgefragt werden soll.Wenn Sie Vertex AI Model Garden verwenden, geben Sie
textembedding-gecko@003
als Modell-ID an. Dies sind die cloudbasierten Modelle, die AlloyDB für Texteinbettungen verwenden kann. Weitere Informationen finden Sie unter Texteinbettungen.Optional:
VERSION_TAG
: das Versions-Tag des Modells, das abgefragt werden soll. Stellen Sie dem Tag@
voran.Wenn Sie eines der
textembedding-gecko
-Englischmodelle mit Vertex AI verwenden, geben Sie eines der Versions-Tags an, z. B.textembedding-gecko@003
, das in Modellversionen aufgeführt ist.Google empfiehlt dringend, das Versions-Tag immer anzugeben. Wenn Sie das Versions-Tag nicht angeben, verwendet AlloyDB immer die neueste Modellversion. Dies kann zu unerwarteten Ergebnissen führen.
SOURCE_TEXT_COLUMN
: der Name der Spalte, in der der Text gespeichert ist, der in Einbettungen umgewandelt werden soll
Ähnlichkeitssuche ausführen
Sie können auch die Funktion embedding()
verwenden, um den Text in einen Vektor umzuwandeln. Sie wenden den Vektor auf den pgvector
-Operator „Nächster Nachbar“, <->
, an, um die Datenbankzeilen mit den semantisch ähnlichsten Einbettungen zu finden.
Da embedding()
ein real
-Array zurückgibt, müssen Sie den embedding()
-Aufruf explizit in vector
umwandeln, um diese Werte mit pgvector
-Operatoren verwenden zu können.
CREATE EXTENSION google_ml_integration;
CREATE EXTENSION IF NOT EXISTS vector;
SELECT * FROM TABLE
ORDER BY EMBEDDING_COLUMN::vector
<-> embedding('MODEL_IDVERSION_TAG', 'TEXT')
LIMIT ROW_COUNT
Tags für Modellversionen verwenden, um Fehler zu vermeiden
Google empfiehlt dringend, immer eine stabile Version des ausgewählten Embedding-Modells zu verwenden. Bei den meisten Modellen bedeutet das, dass Sie ein Versions-Tag explizit festlegen müssen.
Der Aufruf der Funktion embedding()
ohne Angabe des Versionstags des Modells ist syntaktisch korrekt, aber auch fehleranfällig.
Wenn Sie das Versions-Tag bei der Verwendung eines Modells im Vertex AI Model Garden weglassen, verwendet Vertex AI die neueste Version des Modells. Dies ist möglicherweise nicht die neueste stabile Version. Weitere Informationen zu verfügbaren Vertex AI-Modellversionen finden Sie unter Modellversionen.
Eine bestimmte Vertex AI-Modellversion gibt für eine bestimmte Texteingabe immer dieselbe embedding()
-Antwort zurück. Wenn Sie in Ihren Aufrufen von embedding()
keine Modellversionen angeben, kann eine neue veröffentlichte Modellversion den zurückgegebenen Vektor für eine bestimmte Eingabe plötzlich ändern. Dies kann zu Fehlern oder anderem unerwarteten Verhalten in Ihren Anwendungen führen.
Geben Sie daher immer die Modellversion an, um diese Probleme zu vermeiden.
Fehlerbehebung
FEHLER: Modell für „model_id“ nicht gefunden
Fehlermeldung
Wenn Sie versuchen, ein Einbettungselement mit der Funktion embedding()
oder google_ml.embedding()
zu generieren, tritt der folgende Fehler auf:
ERROR: 'Model not found for model_id:
Empfohlene Fehlerbehebung
Führen Sie ein Upgrade der
google_ml_integration
-Erweiterung durch und versuchen Sie noch einmal, Einbettungen zu generieren.ALTER EXTENSION google_ml_integration UPDATE;
Sie können die Erweiterung auch verwerfen und dann noch einmal erstellen.
DROP extension google_ml_integration; CREATE EXTENSION google_ml_integration;
Wenn Sie Einbettungen mit der Funktion
google_ml.embedding()
generieren, achten Sie darauf, dass das Modell registriert ist und Sie in der Abfrage die richtigemodel_id
verwenden.