Remote-KI-Modelle in AlloyDB Omni registrieren und aufrufen

Wenn Sie Vorhersagen aufrufen oder mit einem Modell Einbettungen generieren möchten, müssen Sie den Modellendpunkt in der Modellendpunktverwaltung registrieren.

Weitere Informationen zur Funktion google_ml.create_model() finden Sie in der Referenz zur Endpunktverwaltung für Modelle.

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 Endpunktverwaltung von Modellen muss die Erweiterung google_ml_integration installiert sein.

  1. Stellen Sie mit psql eine Verbindung zu Ihrer Datenbank her.

  2. Optional: Wenn die google_ml_integration-Erweiterung bereits installiert ist, aktualisieren Sie sie auf die neueste Version:

        ALTER EXTENSION google_ml_integration UPDATE;
    
  3. Fügen Sie die google_ml_integration-Erweiterung mit psql hinzu:

      CREATE EXTENSION google_ml_integration;
    
  4. 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 nicht super PostgreSQL-Nutzernamen.

  5. Aktivieren Sie die Modellendpunktverwaltung in Ihrer 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 Modellendpunkte von Google Vertex AI 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 Abfragen cloudbasierter Modelle konfigurieren.

Authentifizierung für andere Modellanbieter einrichten

Mit Ausnahme von Vertex AI-Modellen können Sie Ihre API-Schlüssel oder Bearer-Tokens in Secret Manager speichern. Dieser Schritt ist optional, wenn die Authentifizierung für Ihren Modellendpunkt nicht über Secret Manager erfolgt, z. B. wenn Ihr Modellendpunkt HTTP-Header zum Übergeben von Authentifizierungsinformationen verwendet oder die Authentifizierung überhaupt nicht 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:

  1. Erstellen Sie das Secret in Secret Manager. Weitere Informationen finden Sie unter Secret erstellen und auf Secret-Version zugreifen.

    Der Name und der Pfad des Geheimnisses werden in der SQL-Funktion google_ml.create_sm_secret() verwendet.

  2. 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 PROJECT_ID.iam.gserviceaccount.com-Suffix. Beispiel: my-service@my-project.iam.gserviceaccount.com

      Sie können diese Rolle dem Dienstkonto auch auf Projektebene zuweisen. Weitere Informationen finden Sie unter Richtlinienbindung für die Identitäts- und Zugriffsverwaltung hinzufügen.

Texteinbettungsmodelle mit integrierter Unterstützung

In diesem Abschnitt erfahren Sie, wie Sie Modellendpunkte registrieren, für die die Modellendpunktverwaltung eine integrierte Unterstützung bietet.

Vertex AI-Embedding-Modelle

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-IDs textembedding-gecko und textembedding-gecko@001 bereits für die Modellendpunktverwaltung registriert sind, können Sie sie direkt als Modell-ID verwenden. Für diese Modelle richtet die Erweiterung automatisch Standardtransformationsfunktionen ein.

So registrieren Sie die Endpunktversion des textembedding-gecko@002-Modells:

Für AlloyDB Omni müssen Sie AlloyDB Omni für Abfragen cloudbasierter Vertex AI-Modelle einrichten.

  1. Erstellen und aktivieren Sie die Erweiterung google_ml_integration.

  2. Verbinden Sie sich mithilfe von psql mit Ihrer Datenbank.

  3. Erstellen und aktivieren Sie die Erweiterung google_ml_integration.

  4. Rufen Sie die Funktion zum Erstellen eines Modells auf, um den Endpunkt für das Modell 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 für die Texteinbettung

Die Modellendpunktverwaltung bietet integrierte Unterstützung für das text-embedding-ada-002-Modell von OpenAI.Die google_ml_integration-Erweiterung richtet automatisch Standardtransformationsfunktionen ein und ruft Aufrufe an das Remote-Modell auf.

Im folgenden Beispiel wird der text-embedding-ada-002-OpenAI-Modellendpunkt hinzugefügt.

  1. Stellen Sie mit psql eine Verbindung zu Ihrer Datenbank her.
  2. Erstellen und aktivieren Sie die Erweiterung google_ml_integration.
  3. Fügen Sie den OpenAI API-Schlüssel als Secret zum Secret Manager für die Authentifizierung hinzu.
  4. 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 festlegen und die anschließend bei der Registrierung eines Modellendpunkts verwendet wird, z. B. key1.
    • SECRET_MANAGER_SECRET_ID: Die Secret-ID, die Sie beim Erstellen des Secrets im Secret Manager festgelegt haben.
    • PROJECT_ID: die ID Ihres Google Cloud -Projekts.
    • VERSION_NUMBER: die Versionsnummer der Secret-ID.
  5. 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 von Ihnen definierten Modellendpunkt. Auf diese Modell-ID wird für Metadaten verwiesen, die der Modellendpunkt zum Generieren von Einbettungen oder Aufrufen von Vorhersagen benötigt.
    • SECRET_ID: die Secret-ID, die Sie zuvor bei der google_ml.create_sm_secret()-Prozedur verwendet haben.

Informationen zum Generieren von Einbettungen finden Sie unter Einbettungen für Modellendpunkte mit integrierter Unterstützung generieren.

Andere Modelle für die Texteinbettung

In diesem Abschnitt wird beschrieben, wie Sie einen benutzerdefinierten Endpunkt für ein Text-Embedding-Modell oder Endpunkte für Text-Embedding-Modelle registrieren, die von Anbietern von Modell-Hosting bereitgestellt werden. Je nach den Metadaten des Modellendpunkts müssen Sie möglicherweise Transformationsfunktionen hinzufügen, HTTP-Header generieren oder Endpunkte definieren.

Benutzerdefiniert gehostetes Texteinbettungsmodell

In diesem Abschnitt wird beschrieben, wie Sie einen benutzerdefinierten gehosteten Modellendpunkt registrieren und Transformationsfunktionen 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 werden das Eingabe- und Ausgabeformat des Modells in das Eingabe- und Ausgabeformat der Vorhersagefunktion umgewandelt.

So registrieren Sie Endpunkte für benutzerdefinierte gehostete Modelle für Text-Embeddings:

  1. Stellen Sie mit psql eine Verbindung zu Ihrer Datenbank her.

  2. Erstellen und aktivieren Sie die Erweiterung google_ml_integration.

  3. Optional: Fügen Sie den API-Schlüssel zur Authentifizierung als Secret in Secret Manager hinzu.

  4. 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 festlegen und die anschließend bei der Registrierung eines Modellendpunkts verwendet wird, z. B. key1.
    • SECRET_MANAGER_SECRET_ID: Die Secret-ID, die Sie beim Erstellen des Secrets im Secret Manager festgelegt haben.
    • PROJECT_ID: die ID Ihres Google Cloud -Projekts.
    • VERSION_NUMBER: die Versionsnummer der Secret-ID.
  5. Erstellen Sie die Eingabe- und Ausgabetransformationsfunktionen anhand der folgenden Signatur für die Vorhersagefunktion für Endpunkte von Modellen für Text-Embeddings. Weitere Informationen zum Erstellen von Transformationsfunktionen finden Sie unter Beispiel für Transformationsfunktionen.

    Im Folgenden finden Sie Beispielfunktionen für die Transformation, die speziell für den Endpunkt des custom-embedding-model-Modells für Texteinbettungen 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;
    $$;
    
  6. Rufen Sie die Funktion „create model“ auf, um den Endpunkt des benutzerdefinierten Einbettungsmodells 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 von Ihnen definierten Modellendpunkt, z. B. custom-embedding-model. Auf diese Modell-ID wird für Metadaten verwiesen, die der Modellendpunkt zum Generieren von Einbettungen oder Aufrufen von Vorhersagen benötigt.
    • REQUEST_URL: erforderlich. Der modellspezifische Endpunkt beim Hinzufügen von benutzerdefinierten Text-Embeddings und generischen Modellendpunkten, z. B. https://cymbal.com/models/text/embeddings/v1.
    • MODEL_QUALIFIED_NAME: Erforderlich, wenn für den Modellendpunkt ein qualifizierter Name verwendet wird. Der vollständige qualifizierte Name, falls der Modellendpunkt mehrere Versionen hat.
    • SECRET_ID: die Secret-ID, die Sie zuvor bei der google_ml.create_sm_secret()-Prozedur verwendet haben.

OpenAI Text Embedding 3 (kleine und große Modelle)

Sie können die OpenAI-Modellendpunkte text-embedding-3-small und text-embedding-3-large mithilfe der Einbettungsvorhersagefunktion und der Transformationsfunktionen registrieren, die für den Modellendpunkt spezifisch sind. Im folgenden Beispiel wird gezeigt, wie der Endpunkt des OpenAI-text-embedding-3-small-Modells registriert wird.

So registrierst du den Endpunkt für das text-embedding-3-small-Embedding-Modell:

  1. Stellen Sie mit psql eine Verbindung zu Ihrer Datenbank her.
  2. Erstellen und aktivieren Sie die Erweiterung google_ml_integration.
  3. Fügen Sie den OpenAI API-Schlüssel als Secret zum Secret Manager für die Authentifizierung hinzu. Wenn Sie bereits ein Secret für ein anderes OpenAI-Modell erstellt haben, können Sie dasselbe Secret wiederverwenden.
  4. 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 geheime ID, die Sie festlegen und die anschließend bei der Registrierung eines Modellendpunkts verwendet wird.
    • SECRET_MANAGER_SECRET_ID: Die Secret-ID, die Sie beim Erstellen des Secrets im Secret Manager festgelegt haben.
    • PROJECT_ID: die ID Ihres Google Cloud -Projekts.
    • VERSION_NUMBER: die Versionsnummer der Secret-ID.
  5. Erstellen Sie die Eingabe- und Ausgabetransformationsfunktionen anhand der folgenden Signatur für die Vorhersagefunktion für Modelle für Text-Embeddings. Weitere Informationen zum Erstellen von Transformationsfunktionen finden Sie im Beispiel für Transformationsfunktionen. Informationen zu den Eingabe- und Ausgabeformaten, die von OpenAI-Modellendpunkten erwartet werden, finden Sie unter Embeddings.

    Im Folgenden finden Sie Beispieltransformationsfunktionen für die OpenAI-Endpunkte für Text-Embedding-Modelle text-embedding-ada-002, text-embedding-3-small und text-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;
    $$;
    
  6. Rufen Sie die Funktion „create model“ auf, um den Endpunkt des text-embedding-3-small-Embedding-Modells 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 von Ihnen definierten Modellendpunkt, z. B. openai-te-3-small. Auf diese Modell-ID wird für Metadaten verwiesen, die der Modellendpunkt zum Generieren von Einbettungen oder Aufrufen von Vorhersagen benötigt.
    • SECRET_ID: die Secret-ID, die Sie zuvor bei der google_ml.create_sm_secret()-Prozedur verwendet haben.

Weitere Informationen finden Sie unter Embeddings für andere Endpunkte von Modellen für Texteinbettungen generieren.

Generische Modelle

In diesem Abschnitt wird beschrieben, wie Sie einen 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 zum Registrieren eines generischen Modellendpunkts, der auf Hugging Face gehostet wird, und eines generischen gemini-pro-Modells aus Vertex AI Model Garden, das nicht nativ unterstützt wird.

Sie können jeden generischen Modellendpunkt registrieren, solange Eingabe und Ausgabe im JSON-Format sind. Je nach Metadaten des Modellendpunkts müssen Sie möglicherweise HTTP-Header generieren oder Endpunkte definieren.

Generisches Modell bei Hugging Face

Im folgenden Beispiel wird der Endpunkt facebook/bart-large-mnli für das benutzerdefinierte Klassifizierungsmodell hinzugefügt, das auf Hugging Face gehostet wird.

  1. Stellen Sie mit psql eine Verbindung zu Ihrer Datenbank her.
  2. Erstellen und aktivieren Sie die Erweiterung google_ml_integration.
  3. Fügen Sie das Bearer-Token als Secret zum Secret Manager für die Authentifizierung hinzu.
  4. 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 geheime ID, die Sie festlegen und die anschließend bei der Registrierung eines Modellendpunkts verwendet wird.
    • SECRET_MANAGER_SECRET_ID: Die Secret-ID, die Sie beim Erstellen des Secrets im Secret Manager festgelegt haben.
    • PROJECT_ID: die ID Ihres Google Cloud -Projekts.
    • VERSION_NUMBER: die Versionsnummer der Secret-ID.
  5. 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 Aufrufen von Vorhersagen benötigt.
    • REQUEST_URL: Der modellspezifische Endpunkt beim Hinzufügen benutzerdefinierter Text-Embeddings und generischer Modellendpunkte, z. B. https://api-inference.huggingface.co/models/facebook/bart-large-mnli.
    • MODEL_QUALIFIED_NAME: Der voll qualifizierte Name der Modellendpunktversion, z. B. facebook/bart-large-mnli.
    • SECRET_ID: die Secret-ID, die Sie zuvor bei der google_ml.create_sm_secret()-Prozedur verwendet haben.

Gemini-Modell

AlloyDB Omni für Abfragen cloudbasierter Vertex AI-Modelle einrichten

Im folgenden Beispiel wird der Modellendpunkt gemini-1.0-pro aus dem Vertex AI Model Garden hinzugefügt.

  1. Stellen Sie mit psql eine Verbindung zu Ihrer Datenbank her.
  2. Erstellen und aktivieren Sie die Erweiterung google_ml_integration.
  3. Rufen Sie die Funktion „create model“ 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 Aufrufen von Vorhersagen benötigt.
    • PROJECT_ID: die ID Ihres Google Cloud -Projekts.

Weitere Informationen finden Sie unter Vorhersagen für Endpunkte für generische Modelle aufrufen.

Nächste Schritte