Referenz zur Modellendpunktverwaltung

Auf dieser Seite sind die Parameter für verschiedene Funktionen aufgeführt, die von der google_ml_integration-Erweiterung zum Registrieren und Verwalten von Modellendpunkten und Geheimnissen mit der Modellendpunktverwaltung bereitgestellt werden.

Sie müssen das google_ml_integration.enable_model_support-Datenbankflag auf on setzen, bevor Sie die Erweiterung verwenden können.

Weitere Informationen finden Sie unter Modellendpunktverwaltung mit AlloyDB Omni für KI-Modelle verwenden.

Modelle

In dieser Referenz finden Sie Informationen zu den Parametern für Funktionen, mit denen Sie Modellendpunkte verwalten können.

google_ml.create_model()-Funktion

Im Folgenden wird gezeigt, wie die SQL-Funktion google_ml.create_model() aufgerufen wird, die zum Registrieren von Metadaten für Modellendpunkte verwendet wird:

  CALL
    google_ml.create_model(
      model_id => 'MODEL_ID',
      model_request_url => 'REQUEST_URL',
      model_provider => 'PROVIDER_ID',
      model_type => 'MODEL_TYPE',
      model_qualified_name => 'MODEL_QUALIFIED_NAME',
      model_auth_type => 'AUTH_TYPE',
      model_auth_id => 'AUTH_ID',
      generate_headers_fn => 'GENERATE_HEADER_FUNCTION',
      model_in_transform_fn => 'INPUT_TRANSFORM_FUNCTION',
      model_out_transform_fn => 'OUTPUT_TRANSFORM_FUNCTION');
Parameter Erforderlich Beschreibung
MODEL_ID Für alle Modellendpunkte erforderlich Eine eindeutige ID für den von Ihnen definierten Modellendpunkt.
REQUEST_URL Optional für andere Endpoints für Texteinbettungsmodelle mit integrierter Unterstützung Der modellspezifische Endpunkt, wenn Sie andere Endpunkte für Text-Embedding und generische Modellendpunkte hinzufügen. Geben Sie für AlloyDB for PostgreSQL eine https-URL an.

Die Anfrage-URL, die die Funktion für integrierte Modellendpunkte generiert, bezieht sich auf das Projekt und die Region oder den Standort Ihres Clusters. Wenn Sie auf ein anderes Projekt verweisen möchten, müssen Sie model_request_url explizit angeben.

Eine Liste der Anfrage-URLs für Vertex AI-Modellendpunkte finden Sie unter Anfrage-URL für Vertex AI-Modellendpunkte.

Bei benutzerdefinierten gehosteten Modellendpunkten muss der Modellendpunkt über das Netzwerk erreichbar sein, in dem sich AlloyDB befindet.
PROVIDER_ID Erforderlich für Endpunkte von Modelleinbettungen für Texte mit integrierter Unterstützung Der Anbieter des Modellendpunkts. Der Standardwert ist custom.

Legen Sie einen der folgenden Werte fest:
  • google für Vertex AI-Modellendpunkte
  • open_ai für OpenAI-Modellendpunkte
  • hugging_face für Endpunkte von Hugging Face-Modellen
  • anthropic für Anthropic-Modellendpunkte
  • custom für andere Anbieter
MODEL_TYPE Optional für Endpunkte mit generischen Modellen Der Modelltyp.

Legen Sie einen der folgenden Werte fest:
  • text_embedding für Endpunkte von Modellen für Texteinbettungen
  • generic für alle anderen Modellendpunkte
MODEL_QUALIFIED_NAME Erforderlich für Texteinbettungsmodelle mit integrierter Unterstützung; optional für andere Modellendpunkte Der voll qualifizierte Name für Texteinbettungsmodelle mit integrierter Unterstützung.

Informationen zu Vertex AI-qualifizierten Namen, die Sie für vorab registrierte Modelle verwenden müssen, finden Sie unter Vorab registrierte Vertex AI-Modelle.

Informationen zu qualifizierten Namen, die Sie für OpenAI-Modelle mit integrierter Unterstützung verwenden müssen, finden Sie unter Modelle mit integrierter Unterstützung.
AUTH_TYPE Optional, es sei denn, der Modellendpunkt hat eine bestimmte Authentifizierungsanforderung Der vom Modellendpunkt verwendete Authentifizierungstyp.

Sie können es entweder auf alloydb_service_agent_iam für Vertex AI-Modelle oder auf secret_manager für andere Anbieter festlegen, wenn diese Secret Manager für die Authentifizierung verwenden.

Sie müssen diesen Wert nicht festlegen, wenn Sie Authentifizierungsheader verwenden.
AUTH_ID Nicht für Vertex AI-Modellendpunkte festgelegt; erforderlich für alle anderen Modellendpunkte, in denen Geheimnisse im Secret Manager gespeichert werden Die Secret-ID, die Sie festlegen und die anschließend bei der Registrierung eines Modellendpunkts verwendet wird.
GENERATE_HEADER_FUNCTION optional Der Name der Funktion, die benutzerdefinierte Header generiert.

Bei Anthropic-Modellen bietet die Modellendpunktverwaltung eine google_ml.anthropic_claude_header_gen_fn-Funktion, die Sie für Standardversionen verwenden können.

Die Signatur dieser Funktion hängt von der verwendeten Prognosefunktion ab. Siehe Funktion zum Generieren von Headern.
INPUT_TRANSFORM_FUNCTION Optional für Endpunkte von Modellen für Texteinbettungen mit integrierter Unterstützung; nicht für Endpunkte von generischen Modellen festlegen Die Funktion, mit der die Eingabe der entsprechenden Vorhersagefunktion in die modellspezifische Eingabe umgewandelt wird. Weitere Informationen finden Sie unter Transformationsfunktionen.
OUTPUT_TRANSFORM_FUNCTION Optional für Endpunkte von Modellen für Texteinbettungen mit integrierter Unterstützung; nicht für Endpunkte von generischen Modellen festlegen Die Funktion, mit der die modellspezifische Ausgabe in die Ausgabe der Vorhersagefunktion umgewandelt wird. Weitere Informationen finden Sie unter Transformationsfunktionen.

google_ml.alter_model()

Im Folgenden wird gezeigt, wie die SQL-Funktion google_ml.alter_model() aufgerufen wird, die zum Aktualisieren der Metadaten des Modellendpunkts verwendet wird:

    CALL
    google_ml.alter_model(
      model_id => 'MODEL_ID',
      model_request_url => 'REQUEST_URL',
      model_provider => 'PROVIDER_ID',
      model_type => 'MODEL_TYPE',
      model_qualified_name => 'MODEL_QUALIFIED_NAME',
      model_auth_type => 'AUTH_TYPE',
      model_auth_id => 'AUTH_ID',
      generate_headers_fn => 'GENERATE_HEADER_FUNCTION',
      model_in_transform_fn => 'INPUT_TRANSFORM_FUNCTION',
      model_out_transform_fn => 'OUTPUT_TRANSFORM_FUNCTION');

Informationen zu den Werten, die Sie für jeden Parameter festlegen müssen, finden Sie unter Modell erstellen.

google_ml.drop_model()-Funktion

Im Folgenden wird gezeigt, wie die SQL-Funktion google_ml.drop_model() aufgerufen wird, um einen Modellendpunkt zu erstellen:

  CALL google_ml.drop_model('MODEL_ID');
Parameter Beschreibung
MODEL_ID Eine eindeutige ID für den von Ihnen definierten Modellendpunkt.

google_ml.list_model()-Funktion

Im Folgenden wird gezeigt, wie die SQL-Funktion google_ml.list_model() aufgerufen wird, um Informationen zu Modellendpunkten aufzulisten:

  SELECT google_ml.list_model('MODEL_ID');
Parameter Beschreibung
MODEL_ID Eine eindeutige ID für den von Ihnen definierten Modellendpunkt.

google_ml.model_info_view Ansicht

Im Folgenden wird gezeigt, wie die Ansicht google_ml.model_info_view aufgerufen wird, in der Informationen zu Modellendpunkten für alle Modellendpunkte aufgelistet werden:

  SELECT * FROM google_ml.model_info_view;

Secrets

In dieser Referenz finden Sie Informationen zu Parametern für Funktionen, mit denen Sie Geheimnisse verwalten können.

google_ml.create_sm_secret()-Funktion

Im Folgenden wird gezeigt, wie die SQL-Funktion google_ml.create_sm_secret() aufgerufen wird, mit der das im Secret Manager erstellte Secret hinzugefügt wird:

    CALL
    google_ml.create_sm_secret(
      secret_id => 'SECRET_ID',
      secret_path => 'projects/project-id/secrets/SECRET_MANAGER_SECRET_ID/versions/VERSION_NUMBER');
Parameter Beschreibung
SECRET_ID Die Secret-ID, die Sie festlegen und die anschließend bei der Registrierung eines Modellendpunkts verwendet wird.
PROJECT_ID Die ID Ihres Google Cloud -Projekts, das das Geheimnis enthält.
SECRET_MANAGER_SECRET_ID Die Secret-ID, die Sie beim Erstellen des Secrets in Secret Manager festgelegt haben.
VERSION_NUMBER Die Versionsnummer der Secret-ID.

google_ml.alter_sm_secret()-Funktion

Im Folgenden wird gezeigt, wie die SQL-Funktion google_ml.alter_sm_secret() aufgerufen wird, die zum Aktualisieren von geheimen Informationen verwendet wird:

  CALL
    google_ml.alter_sm_secret(
      secret_id => 'SECRET_ID',
      secret_path => 'projects/project-id/secrets/SECRET_MANAGER_SECRET_ID/versions/VERSION_NUMBER');

Informationen zu den Werten, die Sie für jeden Parameter festlegen müssen, finden Sie unter Secret erstellen.

google_ml.drop_sm_secret()-Funktion

Im Folgenden wird gezeigt, wie die SQL-Funktion google_ml.drop_sm_secret() aufgerufen wird, die zum Löschen eines Secrets verwendet wird:

  CALL google_ml.drop_sm_secret('SECRET_ID');
Parameter Beschreibung
SECRET_ID Die Secret-ID, die Sie festgelegt und anschließend bei der Registrierung eines Modellendpunkts verwendet haben.

Vorhersagefunktionen

In dieser Referenz finden Sie Informationen zu den Parametern für Funktionen, mit denen Sie Embeds generieren oder Vorhersagen aufrufen können.

google_ml.embedding()-Funktion

Im Folgenden wird gezeigt, wie Einbettungen generiert werden:

SELECT
  google_ml.embedding(
    model_id => 'MODEL_ID',
    contents => 'CONTENT');
Parameter Beschreibung
MODEL_ID Eine eindeutige ID für den von Ihnen definierten Modellendpunkt.
CONTENT Der Text, der in eine Vektoreinbettung umgewandelt werden soll.

Beispiele für SQL-Abfragen zum Generieren von Text-Embeddings finden Sie unter Beispiele für Transformationsfunktionen für AlloyDB Omni.

google_ml.predict_row()-Funktion

So rufen Sie Vorhersagen auf:

SELECT
  google_ml.predict_row(
    model_id => 'MODEL_ID',
    request_body => 'REQUEST_BODY');
Parameter Beschreibung
MODEL_ID Eine eindeutige ID für den von Ihnen definierten Modellendpunkt.
REQUEST_BODY Die Parameter für die Vorhersagefunktion im JSON-Format.

Beispiele für SQL-Abfragen zum Aufrufen von Vorhersagen finden Sie unter Beispiele für AlloyDB Omni.

Transformationsfunktionen

In dieser Referenz finden Sie Informationen zu den Parametern für Eingabe- und Ausgabetransformationsfunktionen.

Eingabetransformationsfunktion

Unten sehen Sie die Signatur für die Vorhersagefunktion für Endpunkte von Modellen für Texteinbettungen:

  CREATE OR REPLACE FUNCTION INPUT_TRANSFORM_FUNCTION(model_id VARCHAR(100), input_text TEXT) RETURNS JSON;
Parameter Beschreibung
INPUT_TRANSFORM_FUNCTION Die Funktion, mit der die Eingabe der entsprechenden Vorhersagefunktion in die modellspezifische Eingabe für den Endpunkt umgewandelt wird.

Ausgabetransformationsfunktion

Unten sehen Sie die Signatur für die Vorhersagefunktion für Endpunkte von Modellen für Texteinbettungen:

  CREATE OR REPLACE FUNCTION OUTPUT_TRANSFORM_FUNCTION(model_id VARCHAR(100), response_json JSON) RETURNS real[];
Parameter Beschreibung
OUTPUT_TRANSFORM_FUNCTION Die Funktion zum Umwandeln der modellspezifischen Endpunktausgabe in die Ausgabe der Vorhersagefunktion.

Beispiel für Transformationsfunktionen

Um besser zu verstehen, wie Sie Transformationsfunktionen für Ihren Modellendpunkt erstellen, betrachten Sie einen benutzerdefinierten gehosteten Endpunkt für ein Text-Embedding-Modell, der JSON-Eingabe und ‑Ausgabe erfordert.

In der folgenden Beispiel-cURL-Anfrage werden basierte auf dem Prompt und dem Modellendpunkt Einbettungen erstellt:

  curl -m 100 -X POST https://cymbal.com/models/text/embeddings/v1 \
    -H "Content-Type: application/json" 
    -d '{"prompt": ["AlloyDB Embeddings"]}'

Die folgende Beispielantwort wird zurückgegeben:

[[ 0.3522231  -0.35932037  0.10156056  0.17734447 -0.11606089 -0.17266059
   0.02509351  0.20305622 -0.09787305 -0.12154685 -0.17313677 -0.08075467
   0.06821183 -0.06896557  0.1171584  -0.00931572  0.11875633 -0.00077482
   0.25604948  0.0519384   0.2034983  -0.09952664  0.10347155 -0.11935943
  -0.17872004 -0.08706985 -0.07056875 -0.05929353  0.4177883  -0.14381726
   0.07934926  0.31368294  0.12543282  0.10758053 -0.30210832 -0.02951015
   0.3908268  -0.03091059  0.05302926 -0.00114946 -0.16233777  0.1117468
  -0.1315904   0.13947351 -0.29569918 -0.12330773 -0.04354299 -0.18068913
   0.14445548  0.19481727]]

Anhand dieser Eingabe und Antwort können wir Folgendes ableiten:

  • Das Modell erwartet JSON-Eingabe über das Feld prompt. In dieses Feld kann ein Array von Eingaben eingegeben werden. Da die Funktion google_ml.embedding() eine Funktion auf Zeilenebene ist, wird jeweils nur eine Textzeile erwartet. Daher müssen Sie eine Eingabetransformationsfunktion erstellen,die ein Array mit einem einzelnen Element erstellt.

  • Die Antwort des Modells ist ein Array von Einbettungen, eine für jeden Prompt, der in das Modell eingegeben wird. Da die Funktion google_ml.embedding() eine Funktion auf Zeilenebene ist, gibt sie jeweils nur eine Eingabe zurück. Sie müssen also eine Ausgabetransformationsfunktion erstellen, mit der das Einbetten aus dem Array extrahiert werden kann.

Im folgenden Beispiel sind die Eingabe- und Ausgabetransformationsfunktionen zu sehen, die für diesen Modellendpunkt verwendet werden, wenn er bei der Modellendpunktverwaltung registriert ist:

Eingabetransformationsfunktion

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;
$$;

Ausgabetransformationsfunktion

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;
$$;

Funktion zum Generieren von HTTP-Headern

Im Folgenden sehen Sie die Signatur für die Funktion zum Generieren von Headern, die mit der Vorhersagefunktion google_ml.embedding() verwendet werden kann, wenn Sie andere Endpunkte für Modelle zur Texteinbettung registrieren.

  CREATE OR REPLACE FUNCTION GENERATE_HEADERS(model_id VARCHAR(100), input_text TEXT) RETURNS JSON;

Für die Vorhersagefunktion google_ml.predict_row() lautet die Signatur:

CREATE OR REPLACE FUNCTION GENERATE_HEADERS(model_id TEXT, input JSON) RETURNS JSON;
Parameter Beschreibung
GENERATE_HEADERS Die Funktion zum Generieren benutzerdefinierter Header. Sie können den Autorisierungsheader, der von der Funktion zur Headergenerierung generiert wird, auch beim Registrieren des Modellendpunkts übergeben.

Beispiel für eine Funktion zum Generieren von Headern

Um besser zu verstehen, wie Sie eine Funktion erstellen, die eine Ausgabe in JSON-Schlüssel/Wert-Paaren generiert, die als HTTP-Header verwendet werden, sehen Sie sich einen benutzerdefinierten gehosteten Endpunkt für das Text-Embedding-Modell an.

In der folgenden Beispiel-cURL-Anfrage wird der version-HTTP-Header übergeben, der vom Modellendpunkt verwendet wird:

  curl -m 100 -X POST https://cymbal.com/models/text/embeddings/v1 \
      -H "Content-Type: application/json" \
      -H "version: 2024-01-01" \
      -d '{"prompt": ["AlloyDB Embeddings"]}'

Das Modell erwartet eine Texteingabe über das Feld version und gibt den Versionswert im JSON-Format zurück. Im folgenden Beispiel wird die Funktion zum Generieren von Headern gezeigt, die für diesen Endpunkt des Modells für Text-Embeddings verwendet wird, wenn er bei der Modellendpunktverwaltung registriert ist:

CREATE OR REPLACE FUNCTION header_gen_fn(model_id VARCHAR(100), input_text TEXT)
RETURNS JSON
LANGUAGE plpgsql
AS $$
BEGIN
  RETURN json_build_object('version', '2024-01-01')::JSON;
END;
$$;

Funktion zum Generieren von Headern mit API-Schlüssel

In den folgenden Beispielen wird gezeigt, wie die Authentifizierung mit dem API-Schlüssel eingerichtet wird.

Einbettungsmodell

CREATE OR REPLACE FUNCTION header_gen_func(
  model_id VARCHAR(100),
  input_text TEXT
)
RETURNS JSON
LANGUAGE plpgsql
AS $$
#variable_conflict use_variable
BEGIN
  RETURN json_build_object('Authorization', 'API_KEY')::JSON;
END;
$$;

Ersetzen Sie API_KEY durch den API-Schlüssel des Modellanbieters.

Generisches Modell

CREATE OR REPLACE FUNCTION header_gen_func(
  model_id VARCHAR(100),
  response_json JSON
)
RETURNS JSON
LANGUAGE plpgsql
AS $$
#variable_conflict use_variable
DECLARE
transformed_output REAL[];
BEGIN
  -- code to add Auth token to API request
RETURN json_build_object('x-api-key', 'API_KEY', 'anthropic-version', '2023-06-01')::JSON;
END;
$$;

Ersetzen Sie API_KEY durch den API-Schlüssel des Modellanbieters.

Anfrage-URL generieren

Verwenden Sie die Funktion zum Generieren von Anfrage-URLs, um die Anfrage-URLs für die Modellendpunkte mit integrierter Unterstützung abzuleiten. Hier sehen Sie die Signatur für diese Funktion:

CREATE OR REPLACE FUNCTION GENERATE_REQUEST_URL(provider google_ml.model_provider, model_type google_ml.MODEL_TYPE, model_qualified_name VARCHAR(100), model_region VARCHAR(100) DEFAULT NULL)
Parameter Beschreibung
GENERATE_REQUEST_URL Die Funktion zum Generieren der Anfrage-URL, die von der Erweiterung für Modellendpunkte mit integrierter Unterstützung generiert wird.

Unterstützte Modelle

Mit der Modellendpunktverwaltung können Sie jeden Text-Embedding- oder generischen Modellendpunkt registrieren. Die Modellendpunktverwaltung umfasst auch vorab registrierte Vertex AI-Modelle und Modelle mit integrierter Unterstützung. Weitere Informationen zu den verschiedenen Modelltypen finden Sie unter Modelltyp.

Vorregistrierte Vertex AI-Modelle

Modelltyp Modell-ID Version der Erweiterung
generic
  • gemini-1.5-pro:streamGenerateContent
  • gemini-1.5-pro:generateContent
  • gemini-1.0-pro:generateContent
Version 1.4.2 und höher
text_embedding
  • textembedding-gecko
  • text-embedding-gecko@001
Version 1.3 und höher

Modelle mit integrierter Unterstützung

Vertex AI

Qualifizierter Modellname Modelltyp
text-embedding-gecko@001 text-embedding
text-embedding-gecko@003 text-embedding
text-embedding-004 text-embedding
text-embedding-005 text-embedding
text-embedding-preview-0815 text-embedding
text-multilingual-embedding-002 text-embedding

OpenAI

Qualifizierter Modellname Modelltyp
text-embedding-ada-002 text-embedding
text-embedding-3-small text-embedding
text-embedding-3-large text-embedding

Anthropic

Qualifizierter Modellname Modelltyp
claude-3-opus-20240229 generic
claude-3-sonnet-20240229 generic
claude-3-haiku-20240307 generic