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:
|
MODEL_TYPE |
Optional für Endpunkte mit generischen Modellen | Der Modelltyp. Legen Sie einen der folgenden Werte fest:
|
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 Funktiongoogle_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 |
|
Version 1.4.2 und höher |
text_embedding |
|
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 |