Wenn Sie Vorhersagen aufrufen oder Einbettungen mit einem Modell generieren möchten, registrieren Sie den Modellendpunkt bei der Modellendpunktverwaltung.
Weitere Informationen zur google_ml.create_model()
-Funktion finden Sie in der Referenz zur Verwaltung von Modellendpunkten.
Bevor Sie einen Modellendpunkt bei der Modellendpunktverwaltung registrieren, müssen Sie die Erweiterung google_ml_integration
aktivieren und die Authentifizierung basierend auf dem Modellanbieter einrichten, falls für Ihren Modellendpunkt eine Authentifizierung erforderlich ist.
Achten Sie darauf, dass Sie mit dem Standardnutzernamen postgres
auf Ihre Datenbank zugreifen.
Erweiterung aktivieren
Sie müssen die google_ml_integration
-Erweiterung hinzufügen und aktivieren, bevor Sie die zugehörigen Funktionen verwenden können. Für die Verwaltung von Modellendpunkten muss die Erweiterung google_ml_integration
installiert sein.
Stellen Sie mit
psql
eine Verbindung zu Ihrer Datenbank her.Optional: Wenn die
google_ml_integration
-Erweiterung bereits installiert ist, ändern Sie sie, um auf die neueste Version zu aktualisieren:ALTER EXTENSION google_ml_integration UPDATE;
Fügen Sie die Erweiterung
google_ml_integration
mit psql hinzu:CREATE EXTENSION google_ml_integration;
Optional: Gewähren Sie einem PostgreSQL-Nutzer, der kein Super Admin ist, die Berechtigung zum Verwalten von Modellmetadaten:
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA google_ml TO NON_SUPER_USER;
Ersetzen Sie
NON_SUPER_USER
durch den PostgreSQL-Nutzernamen, der kein Superuser ist.Aktivieren Sie die Verwaltung von Modellendpunkten für Ihre Datenbank:
ALTER SYSTEM SET google_ml_integration.enable_model_support=on; SELECT pg_reload_conf();
Authentifizierung einrichten
In den folgenden Abschnitten wird beschrieben, wie Sie die Authentifizierung einrichten, bevor Sie einen Vertex AI-Modellendpunkt oder Modellendpunkte anderer Anbieter hinzufügen.
Authentifizierung für Vertex AI einrichten
Wenn Sie die Google Vertex AI-Modellendpunkte verwenden möchten, müssen Sie dem Dienstkonto, das Sie bei der Installation von AlloyDB Omni verwendet haben, Vertex AI-Berechtigungen hinzufügen. Weitere Informationen finden Sie unter AlloyDB Omni-Installation für das Abfragen cloudbasierter Modelle konfigurieren.
Authentifizierung für andere Modellanbieter einrichten
Für alle Modelle mit Ausnahme von Vertex AI-Modellen können Sie Ihre API-Schlüssel oder Inhabertokens in Secret Manager speichern. Dieser Schritt ist optional, wenn Ihr Modellendpunkt die Authentifizierung nicht über Secret Manager abwickelt, z. B. wenn Ihr Modellendpunkt HTTP-Header zum Übergeben von Authentifizierungsinformationen verwendet oder überhaupt keine Authentifizierung verwendet.
In diesem Abschnitt wird beschrieben, wie Sie die Authentifizierung einrichten, wenn Sie Secret Manager verwenden.
So erstellen und verwenden Sie einen API-Schlüssel oder ein Bearer-Token:
Erstellen Sie das Secret in Secret Manager. Weitere Informationen finden Sie unter Secret erstellen und auf die Secret-Version zugreifen.
Der Secret-Name und der Secret-Pfad werden in der SQL-Funktion
google_ml.create_sm_secret()
verwendet.Gewähren Sie dem AlloyDB-Cluster Berechtigungen für den Zugriff auf das Secret.
gcloud secrets add-iam-policy-binding 'SECRET_ID' \ --member="serviceAccount:SERVICE_ACCOUNT_ID" \ --role="roles/secretmanager.secretAccessor"
Ersetzen Sie Folgendes:
SECRET_ID
: die Secret-ID im Secret Manager.SERVICE_ACCOUNT_ID
: die ID des Dienstkontos, das Sie im vorherigen Schritt erstellt haben. Achten Sie darauf, dass dies dasselbe Konto ist, das Sie bei der Installation von AlloyDB Omni verwendet haben. Dazu gehört das vollständige SuffixPROJECT_ID.iam.gserviceaccount.com
. Beispiel:my-service@my-project.iam.gserviceaccount.com
Sie können diese Rolle dem Dienstkonto auch auf Projektebene zuweisen. Weitere Informationen finden Sie unter IAM-Richtlinienbindung hinzufügen.
Texteinbettungsmodelle mit integrierter Unterstützung
In diesem Abschnitt wird beschrieben, wie Sie Modellendpunkte registrieren, für die die Modellendpunktverwaltung integrierte Unterstützung bietet.
Vertex AI-Modelle für Einbettungen
Die Modellendpunktverwaltung bietet integrierte Unterstützung für alle Versionen des text-embedding-gecko
-Modells von Vertex AI. Verwenden Sie den qualifizierten Namen, um die Modellversion auf textembedding-gecko@001
oder textembedding-gecko@002
festzulegen.
Da die Modellendpunkt-ID textembedding-gecko
und textembedding-gecko@001
bereits bei der Modellendpunktverwaltung registriert sind, können Sie sie direkt als Modell-ID verwenden. Für diese Modelle richtet die Erweiterung automatisch Standardtransformationsfunktionen ein.
Führen Sie die folgenden Schritte aus, um die textembedding-gecko@002
-Modellendpunktversion zu registrieren:
Für AlloyDB Omni müssen Sie AlloyDB Omni so einrichten, dass cloudbasierte Vertex AI-Modelle abgefragt werden.
Erstellen und aktivieren Sie die
google_ml_integration
-Erweiterung.Erstellen und aktivieren Sie die
google_ml_integration
-Erweiterung.Rufen Sie die Funktion zum Erstellen von Modellen auf, um den Modellendpunkt
textembedding-gecko@002
hinzuzufügen:CALL google_ml.create_model( model_id => 'textembedding-gecko@002', model_provider => 'google', model_qualified_name => 'textembedding-gecko@002', model_type => 'text_embedding', model_auth_type => 'alloydb_service_agent_iam'); The request URL that the function generates refers to the project associated with the AlloyDB Omni service account. If you want to refer to another project, then ensure that you specify the `model_request_url` explicitly.
Open AI-Modell zur Texteinbettung
Die Modellendpunktverwaltung bietet integrierte Unterstützung für das Modell text-embedding-ada-002
von OpenAI.Die Erweiterung google_ml_integration
richtet automatisch Standardtransformationsfunktionen ein und ruft das Remote-Modell auf.
Im folgenden Beispiel wird der text-embedding-ada-002
-OpenAI-Modellendpunkt hinzugefügt.
- Stellen Sie mit
psql
eine Verbindung zu Ihrer Datenbank her. - Erstellen und aktivieren Sie die
google_ml_integration
-Erweiterung. - Fügen Sie den OpenAI-API-Schlüssel als Secret in Secret Manager zur Authentifizierung hinzu.
Rufen Sie das im Secret Manager gespeicherte Secret auf:
CALL google_ml.create_sm_secret( secret_id => 'SECRET_ID', secret_path => 'projects/PROJECT_ID/secrets/SECRET_MANAGER_SECRET_ID/versions/VERSION_NUMBER');
Ersetzen Sie Folgendes:
SECRET_ID
: Die Secret-ID, die Sie festgelegt haben und die später bei der Registrierung eines Modellendpunkts verwendet wird, z. B.key1
.SECRET_MANAGER_SECRET_ID
: Die Secret-ID, die beim Erstellen des Secrets im Secret Manager festgelegt wurde.PROJECT_ID
: die ID Ihres Google Cloud Projekts.VERSION_NUMBER
: Die Versionsnummer der Secret-ID.
Rufen Sie die Funktion zum Erstellen von Modellen auf, um den
text-embedding-ada-002
-Modellendpunkt zu registrieren:CALL google_ml.create_model( model_id => 'MODEL_ID', model_provider => 'open_ai', model_type => 'text_embedding', model_qualified_name => 'text-embedding-ada-002', model_auth_type => 'secret_manager', model_auth_id => 'SECRET_ID');
Ersetzen Sie Folgendes:
MODEL_ID
: Eine eindeutige ID für den Modellendpunkt, die Sie definieren. Auf diese Modell-ID wird für Metadaten verwiesen, die der Modellendpunkt zum Generieren von Einbettungen oder zum Aufrufen von Vorhersagen benötigt.SECRET_ID
: Die Secret-ID, die Sie zuvor imgoogle_ml.create_sm_secret()
-Verfahren verwendet haben.
Informationen zum Generieren von Einbettungen finden Sie unter Einbettungen für Modellendpunkte mit integrierter Unterstützung generieren.
Andere Modelle zur Texteinbettung
In diesem Abschnitt wird beschrieben, wie Sie einen beliebigen benutzerdefinierten Endpunkt für das Texteinbettungsmodell oder Endpunkte für das Texteinbettungsmodell registrieren, die von Anbietern für das Modellhosting bereitgestellt werden. Je nach den Metadaten Ihres Modellendpunkts müssen Sie möglicherweise Transformationsfunktionen hinzufügen, HTTP-Header generieren oder Endpunkte definieren.
Benutzerdefiniertes Texteinbettungsmodell
In diesem Abschnitt wird beschrieben, wie Sie einen benutzerdefinierten gehosteten Modellendpunkt registrieren, Transformationsfunktionen erstellen und optional benutzerdefinierte HTTP-Header erstellen. AlloyDB Omni unterstützt alle benutzerdefinierten gehosteten Modellendpunkte, unabhängig davon, wo sie gehostet werden.
Im folgenden Beispiel wird der benutzerdefinierte Modellendpunkt custom-embedding-model
hinzugefügt, der von Cymbal gehostet wird. Mit den Transformationsfunktionen cymbal_text_input_transform
und cymbal_text_output_transform
wird das Ein- und Ausgabeformat des Modells in das Ein- und Ausgabeformat der Vorhersagefunktion transformiert.
So registrieren Sie benutzerdefinierte Endpunkte für selbst gehostete Modelle für Texteinbettungen:
Stellen Sie mit
psql
eine Verbindung zu Ihrer Datenbank her.Erstellen und aktivieren Sie die
google_ml_integration
-Erweiterung.Optional: API-Schlüssel als Secret zur Authentifizierung in Secret Manager hinzufügen
Rufen Sie das im Secret Manager gespeicherte Secret auf:
CALL google_ml.create_sm_secret( secret_id => 'SECRET_ID', secret_path => 'projects/project-id/secrets/SECRET_MANAGER_SECRET_ID/versions/VERSION_NUMBER');
Ersetzen Sie Folgendes:
SECRET_ID
: Die Secret-ID, die Sie festgelegt haben und die später bei der Registrierung eines Modellendpunkts verwendet wird, z. B.key1
.SECRET_MANAGER_SECRET_ID
: Die Secret-ID, die beim Erstellen des Secrets im Secret Manager festgelegt wurde.PROJECT_ID
: die ID Ihres Google Cloud Projekts.VERSION_NUMBER
: Die Versionsnummer der Secret-ID.
Erstellen Sie die Transformationsfunktionen für Ein- und Ausgabe basierend auf der folgenden Signatur für die Vorhersagefunktion für Endpunkte von Modelle für Texteinbettungen. Weitere Informationen zum Erstellen von Transformationsfunktionen finden Sie unter Beispiel für Transformationsfunktionen.
Im Folgenden finden Sie Beispiel-Transformationsfunktionen, die speziell für den Endpunkt des Texteinbettungsmodells
custom-embedding-model
gelten:-- Input Transform Function corresponding to the custom model endpoint CREATE OR REPLACE FUNCTION cymbal_text_input_transform(model_id VARCHAR(100), input_text TEXT) RETURNS JSON LANGUAGE plpgsql AS $$ DECLARE transformed_input JSON; model_qualified_name TEXT; BEGIN SELECT json_build_object('prompt', json_build_array(input_text))::JSON INTO transformed_input; RETURN transformed_input; END; $$; -- Output Transform Function corresponding to the custom model endpoint CREATE OR REPLACE FUNCTION cymbal_text_output_transform(model_id VARCHAR(100), response_json JSON) RETURNS REAL[] LANGUAGE plpgsql AS $$ DECLARE transformed_output REAL[]; BEGIN SELECT ARRAY(SELECT json_array_elements_text(response_json->0)) INTO transformed_output; RETURN transformed_output; END; $$;
Rufen Sie die Funktion zum Erstellen von Modellen auf, um den benutzerdefinierten Endpunkt für das Einbettungsmodell zu registrieren:
CALL google_ml.create_model( model_id => 'MODEL_ID', model_request_url => 'REQUEST_URL', model_provider => 'custom', model_type => 'text_embedding', model_auth_type => 'secret_manager', model_auth_id => 'SECRET_ID', model_qualified_name => 'MODEL_QUALIFIED_NAME', model_in_transform_fn => 'cymbal_text_input_transform', model_out_transform_fn => 'cymbal_text_output_transform');
Ersetzen Sie Folgendes:
MODEL_ID
: erforderlich. Eine eindeutige ID für den Modellendpunkt, den Sie definieren, z. B.custom-embedding-model
. Auf diese Modell-ID wird für Metadaten verwiesen, die der Modellendpunkt zum Generieren von Einbettungen oder zum Aufrufen von Vorhersagen benötigt.REQUEST_URL
: erforderlich. Der modellspezifische Endpunkt beim Hinzufügen von benutzerdefinierten Texteinbettungs- und generischen Modellendpunkten, z. B.https://cymbal.com/models/text/embeddings/v1
.MODEL_QUALIFIED_NAME
: Erforderlich, wenn für Ihren Modellendpunkt ein qualifizierter Name verwendet wird. Der vollständig qualifizierte Name, falls der Modellendpunkt mehrere Versionen hat.SECRET_ID
: Die Secret-ID, die Sie zuvor imgoogle_ml.create_sm_secret()
-Verfahren verwendet haben.
OpenAI-Modelle „Text Embedding 3 Small“ und „Text Embedding 3 Large“
Sie können die OpenAI-Modellendpunkte text-embedding-3-small
und text-embedding-3-large
mit der Einbettungsvorhersagefunktion und den für den Modellendpunkt spezifischen Transformationsfunktionen registrieren. Das folgende Beispiel zeigt, wie der OpenAI-Modellendpunkt text-embedding-3-small
registriert wird.
So registrieren Sie den text-embedding-3-small
-Einbettungsmodellendpunkt:
- Stellen Sie mit
psql
eine Verbindung zu Ihrer Datenbank her. - Erstellen und aktivieren Sie die
google_ml_integration
-Erweiterung. - Fügen Sie den OpenAI-API-Schlüssel als Secret in Secret Manager zur Authentifizierung hinzu. Wenn Sie bereits ein Secret für ein anderes OpenAI-Modell erstellt haben, können Sie dasselbe Secret wiederverwenden.
Rufen Sie das im Secret Manager gespeicherte Secret auf:
CALL google_ml.create_sm_secret( secret_id => 'SECRET_ID',_ secret_path => 'projects/project-id/secrets/SECRET_MANAGER_SECRET_ID/versions/VERSION_NUMBER');
Ersetzen Sie Folgendes:
SECRET_ID
: Die von Ihnen festgelegte geheime ID, die später bei der Registrierung eines Modellendpunkts verwendet wird.SECRET_MANAGER_SECRET_ID
: Die Secret-ID, die beim Erstellen des Secrets im Secret Manager festgelegt wurde.PROJECT_ID
: die ID Ihres Google Cloud Projekts.VERSION_NUMBER
: Die Versionsnummer der Secret-ID.
Erstellen Sie die Transformationsfunktionen für Ein- und Ausgabe basierend auf der folgenden Signatur für die Vorhersagefunktion für Modelle für Texteinbettungen. Weitere Informationen zum Erstellen von Transformationsfunktionen finden Sie unter Beispiel für Transformationsfunktionen. Informationen zu den Ein- und Ausgabeformaten, die von OpenAI-Modellendpunkten erwartet werden, finden Sie unter Embeddings.
Im Folgenden finden Sie Beispieltransformationsfunktionen für die Endpunkte der OpenAI-Texteinbettungsmodelle
text-embedding-ada-002
,text-embedding-3-small
undtext-embedding-3-large
.-- Input Transform Function corresponding to openai_text_embedding model endpoint family CREATE OR REPLACE FUNCTION openai_text_input_transform(model_id VARCHAR(100), input_text TEXT) RETURNS JSON LANGUAGE plpgsql AS $$ #variable_conflict use_variable DECLARE transformed_input JSON; model_qualified_name TEXT; BEGIN SELECT google_ml.model_qualified_name_of(model_id) INTO model_qualified_name; SELECT json_build_object('input', input_text, 'model', model_qualified_name)::JSON INTO transformed_input; RETURN transformed_input; END; $$; -- Output Transform Function corresponding to openai_text_embedding model endpoint family CREATE OR REPLACE FUNCTION openai_text_output_transform(model_id VARCHAR(100), response_json JSON) RETURNS REAL[] LANGUAGE plpgsql AS $$ DECLARE transformed_output REAL[]; BEGIN SELECT ARRAY(SELECT json_array_elements_text(response_json->'data'->0->'embedding')) INTO transformed_output; RETURN transformed_output; END; $$;
Rufen Sie die Funktion zum Erstellen von Modellen auf, um den
text-embedding-3-small
-Einbettungsmodellendpunkt zu registrieren:CALL google_ml.create_model( model_id => 'MODEL_ID', model_provider => 'open_ai', model_type => 'text_embedding', model_auth_type => 'secret_manager', model_auth_id => 'SECRET_ID', model_qualified_name => 'text-embedding-3-small', model_in_transform_fn => 'openai_text_input_transform', model_out_transform_fn => 'openai_text_output_transform');
Ersetzen Sie Folgendes:
MODEL_ID
: Eine eindeutige ID für den Modellendpunkt, den Sie definieren, z. B.openai-te-3-small
. Auf diese Modell-ID wird für Metadaten verwiesen, die der Modellendpunkt zum Generieren von Einbettungen oder zum Aufrufen von Vorhersagen benötigt.SECRET_ID
: Die Secret-ID, die Sie zuvor imgoogle_ml.create_sm_secret()
-Verfahren verwendet haben.
Weitere Informationen finden Sie unter Einbettungen für andere Endpunkte von Texteinbettungsmodellen generieren.
Generische Modelle
In diesem Abschnitt wird beschrieben, wie Sie einen beliebigen generischen Modellendpunkt registrieren, der bei einem gehosteten Modellanbieter wie Hugging Face, OpenAI, Vertex AI oder einem anderen Anbieter verfügbar ist. In diesem Abschnitt finden Sie Beispiele für die Registrierung eines generischen Modellendpunkts, der auf Hugging Face gehostet wird, und eines generischen gemini-pro
-Modells aus Vertex AI Model Garden, das keine integrierte Unterstützung bietet.
Sie können jeden generischen Modellendpunkt registrieren, sofern die Ein- und Ausgabe im JSON-Format erfolgt. Je nach den Metadaten Ihres Modellendpunkts müssen Sie möglicherweise HTTP-Header generieren oder Endpunkte definieren.
Generisches Modell bei Hugging Face
Im folgenden Beispiel wird der benutzerdefinierte Klassifizierungsmodellendpunkt facebook/bart-large-mnli
hinzugefügt, der auf Hugging Face gehostet wird.
- Stellen Sie mit
psql
eine Verbindung zu Ihrer Datenbank her. - Erstellen und aktivieren Sie die
google_ml_integration
-Erweiterung. - Fügen Sie das Bearertoken als Secret zur Authentifizierung in Secret Manager hinzu.
Rufen Sie das im Secret Manager gespeicherte Secret auf:
CALL google_ml.create_sm_secret( secret_id => 'SECRET_ID', secret_path => 'projects/project-id/secrets/SECRE_MANAGER_SECRET_ID/versions/VERSION_NUMBER');
Ersetzen Sie Folgendes:
SECRET_ID
: Die von Ihnen festgelegte geheime ID, die später bei der Registrierung eines Modellendpunkts verwendet wird.SECRET_MANAGER_SECRET_ID
: Die Secret-ID, die beim Erstellen des Secrets im Secret Manager festgelegt wurde.PROJECT_ID
: die ID Ihres Google Cloud Projekts.VERSION_NUMBER
: Die Versionsnummer der Secret-ID.
Rufen Sie die Funktion zum Erstellen von Modellen auf, um den
facebook/bart-large-mnli
-Modellendpunkt zu registrieren:CALL google_ml.create_model( model_id => 'MODEL_ID', model_provider => 'custom', model_request_url => 'REQUEST_URL', model_qualified_name => 'MODEL_QUALIFIED_NAME', model_auth_type => 'secret_manager', model_auth_id => 'SECRET_ID');
Ersetzen Sie Folgendes:
MODEL_ID
: Eine eindeutige ID für den von Ihnen definierten Modellendpunkt, z. B.custom-classification-model
. Auf diese Modell-ID wird für Metadaten verwiesen, die der Modellendpunkt zum Generieren von Einbettungen oder zum Aufrufen von Vorhersagen benötigt.REQUEST_URL
: Der modellspezifische Endpunkt beim Hinzufügen benutzerdefinierter Texteinbettungen und generischer Modellendpunkte, z. B.https://api-inference.huggingface.co/models/facebook/bart-large-mnli
.MODEL_QUALIFIED_NAME
: Der vollständig qualifizierte Name der Modellendpunktversion, z. B.facebook/bart-large-mnli
.SECRET_ID
: Die Secret-ID, die Sie zuvor imgoogle_ml.create_sm_secret()
-Verfahren verwendet haben.
Gemini-Modell
Richten Sie AlloyDB Omni für das Abfragen cloudbasierter Vertex AI-Modelle ein.
Im folgenden Beispiel wird der gemini-1.0-pro
-Modellendpunkt aus dem Vertex AI Model Garden hinzugefügt.
- Stellen Sie mit
psql
eine Verbindung zu Ihrer Datenbank her. - Erstellen und aktivieren Sie die
google_ml_integration
-Erweiterung. Rufen Sie die Funktion zum Erstellen von Modellen auf, um das
gemini-1.0-pro
-Modell zu registrieren:CALL google_ml.create_model( model_id => 'MODEL_ID', model_request_url => 'https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/gemini-1.0-pro:streamGenerateContent', model_provider => 'google', model_auth_type => 'alloydb_service_agent_iam');
Ersetzen Sie Folgendes:
MODEL_ID
: Eine eindeutige ID für den von Ihnen definierten Modellendpunkt, z. B.gemini-1
. Auf diese Modell-ID wird für Metadaten verwiesen, die der Modellendpunkt zum Generieren von Einbettungen oder zum Aufrufen von Vorhersagen benötigt.PROJECT_ID
: die ID Ihres Google Cloud Projekts.
Weitere Informationen finden Sie unter Vorhersagen für generische Modellendpunkte aufrufen.