google_ml_integration
bereitgestellt werden, um Modellendpunkte und Secrets mit der Modellendpunktverwaltung zu registrieren und zu verwalten.
Sie müssen das Datenbankflag google_ml_integration.enable_model_support
auf on
setzen, bevor Sie die Erweiterung verwenden können.
Weitere Informationen finden Sie unter Endpunktverwaltung für Modelle mit AlloyDB Omni for AI-Modellen verwenden.
Modelle
In dieser Referenz finden Sie Informationen zu Parametern für Funktionen, mit denen Sie Modellendpunkte verwalten können.
google_ml.create_model()
-Funktion
Im Folgenden sehen Sie, 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 Modellendpunkt, die Sie definieren. |
REQUEST_URL |
optional für andere Endpunkte von Texteinbettungsmodellen mit integrierter Unterstützung | Der modellspezifische Endpunkt beim Hinzufügen anderer Endpunkte für Texteinbettung und generische Modelle. 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. Achten Sie bei benutzerdefinierten gehosteten Modellendpunkten darauf, dass der Modellendpunkt über das Netzwerk erreichbar ist, in dem sich AlloyDB befindet. |
PROVIDER_ID |
Erforderlich für Endpunkte von Texteinbettungsmodellen mit integrierter Unterstützung | Der Anbieter des Modellendpunkts. Der Standardwert ist custom .Legen Sie einen der folgenden Werte fest:
|
MODEL_TYPE |
optional für generische Modellendpunkte | 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 vollständig qualifizierte Name für Texteinbettungsmodelle mit integrierter Unterstützung. Qualifizierte Namen für Vertex AI, die Sie für vorregistrierte Modelle verwenden müssen, finden Sie unter Vorregistrierte Vertex AI-Modelle. Qualifizierte 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, für den Modellendpunkt gelten bestimmte Authentifizierungsanforderungen | Der vom Modellendpunkt verwendete Authentifizierungstyp. Sie können sie 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 festlegen; für alle anderen Modellendpunkte erforderlich, in denen Geheimnisse in Secret Manager gespeichert werden | Die Secret-ID, die Sie festlegen und die anschließend beim Registrieren eines Modellendpunkts verwendet wird. |
GENERATE_HEADER_FUNCTION |
optional | Der Name der Funktion, die benutzerdefinierte Header generiert. Für Anthropic-Modelle bietet die Verwaltung von Modellendpunkten 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 Vorhersagefunktion ab. Funktion zum Generieren von Headern |
INPUT_TRANSFORM_FUNCTION |
optional für Endpunkte von Texteinbettungsmodellen mit integrierter Unterstützung; nicht für generische Modellendpunkte festlegen | Die Funktion zum Transformieren der Eingabe der entsprechenden Vorhersagefunktion in die modellspezifische Eingabe. Weitere Informationen finden Sie unter Transformationsfunktionen. |
OUTPUT_TRANSFORM_FUNCTION |
optional für Endpunkte von Texteinbettungsmodellen mit integrierter Unterstützung; nicht für generische Modellendpunkte festlegen | Die Funktion zum Transformieren der modellspezifischen Ausgabe in die Ausgabe der Vorhersagefunktion. Weitere Informationen finden Sie unter Transformationsfunktionen. |
google_ml.alter_model()
Im Folgenden sehen Sie, wie die SQL-Funktion google_ml.alter_model()
aufgerufen wird, mit der Metadaten von Modellendpunkten aktualisiert werden:
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 die einzelnen Parameter festlegen müssen, finden Sie unter Modell erstellen.
google_ml.drop_model()
-Funktion
Im Folgenden sehen Sie, wie die SQL-Funktion google_ml.drop_model()
aufgerufen wird, mit der ein Modellendpunkt gelöscht wird:
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 sehen Sie, wie Sie die SQL-Funktion google_ml.list_model()
aufrufen, die zum Auflisten von Informationen zu Modellendpunkten verwendet wird:
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 sehen Sie, wie Sie die Ansicht google_ml.model_info_view
aufrufen, mit der Informationen zu Modellendpunkten für alle Modellendpunkte aufgeführt werden:
SELECT * FROM google_ml.model_info_view;
Secrets
In dieser Referenz finden Sie Informationen zu Parametern für Funktionen, mit denen Sie Secrets verwalten können.
google_ml.create_sm_secret()
-Funktion
Im Folgenden wird gezeigt, wie die SQL-Funktion google_ml.create_sm_secret()
aufgerufen wird, um das in Secret Manager erstellte Secret hinzuzufügen:
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 beim Registrieren eines Modellendpunkts verwendet wird. |
PROJECT_ID |
Die ID Ihres Google Cloud -Projekts, das das Secret enthält. |
SECRET_MANAGER_SECRET_ID |
Die Secret-ID, die in Secret Manager festgelegt wurde, als Sie das Secret erstellt 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, mit der geheime Informationen aktualisiert werden:
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 die einzelnen 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, mit der ein Secret gelöscht wird:
CALL google_ml.drop_sm_secret('SECRET_ID');
Parameter | Beschreibung |
---|---|
SECRET_ID |
Die Secret-ID, die Sie festgelegt haben und die anschließend beim Registrieren eines Modellendpunkts verwendet wurde. |
Vorhersagefunktionen
In dieser Referenz finden Sie Informationen zu Parametern für Funktionen, mit denen Sie Einbettungen 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 Modellendpunkt, die Sie definieren. |
CONTENT |
Der Text, der in eine Vektoreinbettung übersetzt werden soll. |
Beispiele für SQL-Abfragen zum Generieren von Texteinbettungen finden Sie unter Beispiele für Transformationsfunktionen für AlloyDB Omni.
google_ml.predict_row()
-Funktion
Im Folgenden wird gezeigt, wie Vorhersagen aufgerufen werden:
SELECT
google_ml.predict_row(
model_id => 'MODEL_ID',
request_body => 'REQUEST_BODY');
Parameter | Beschreibung |
---|---|
MODEL_ID |
Eine eindeutige ID für den Modellendpunkt, die Sie definieren. |
REQUEST_BODY |
Die Parameter für die Vorhersagefunktion im JSON-Format. |
Beispiel-SQL-Abfragen zum Aufrufen von Vorhersagen finden Sie unter Vorhersagen mit generischen Modellen aufrufen.
Transformationsfunktionen
In dieser Referenz finden Sie Informationen zu Parametern für Eingabe- und Ausgabe-Transformationsfunktionen.
Eingabetransformationsfunktion
Unten sehen Sie die Signatur für die Vorhersagefunktion für Endpunkte von Texteinbettungsmodellen:
CREATE OR REPLACE FUNCTION INPUT_TRANSFORM_FUNCTION(model_id VARCHAR(100), input_text TEXT) RETURNS JSON;
Parameter | Beschreibung |
---|---|
INPUT_TRANSFORM_FUNCTION |
Die Funktion zum Transformieren der Eingabe der entsprechenden Vorhersagefunktion in die eingabespezifische Eingabe des Modellendpunkts. |
Ausgabetransformationsfunktion
Unten sehen Sie die Signatur für die Vorhersagefunktion für Endpunkte von Texteinbettungsmodellen:
CREATE OR REPLACE FUNCTION OUTPUT_TRANSFORM_FUNCTION(model_id VARCHAR(100), response_json JSON) RETURNS real[];
Parameter | Beschreibung |
---|---|
OUTPUT_TRANSFORM_FUNCTION |
Die Funktion zum Transformieren der ausgabespezifischen Ausgabe des Modellendpunkts in die Ausgabe der Vorhersagefunktion. |
Beispiel für Transformationsfunktionen
Um besser zu verstehen, wie Sie Transformationsfunktionen für Ihren Modellendpunkt erstellen, sehen Sie sich einen benutzerdefinierten gehosteten Texteinbettungsmodellendpunkt an, für den JSON-Ein- und -Ausgabe erforderlich ist.
Mit der folgenden Beispiel-cURL-Anfrage werden Einbettungen basierend auf dem Prompt und dem Modellendpunkt 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 Texteingabe 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 jede Prompteingabe für das Modell. Da die Funktion
google_ml.embedding()
eine Funktion auf Zeilenebene ist, wird jeweils nur eine Eingabe zurückgegeben. Daher müssen Sie eine Ausgabetransformationsfunktion erstellen, mit der das Embedding aus dem Array extrahiert werden kann.
Im folgenden Beispiel sehen Sie die Ein- und Ausgabetransformationsfunktionen, 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 zur Header-Generierung, die mit der Vorhersagefunktion google_ml.embedding()
verwendet werden kann, wenn andere Endpunkte für Modelle zur Texteinbettung registriert werden.
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 so:
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 von der Header-Generierungsfunktion generierten Autorisierungsheader 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 Endpunkt für ein selbst gehostetes Texteinbettungsmodell an.
Im folgenden Beispiel für eine cURL-Anfrage wird der HTTP-Header version
ü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 Texteingaben über das Feld version
und gibt den Versionswert im JSON-Format zurück. Im folgenden Beispiel sehen Sie die Funktion zur Header-Generierung, die für diesen Endpunkt des Modelleinbettungsmodells verwendet wird, wenn er bei der Verwaltung von Modellendpunkten registriert wird:
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
Die folgenden Beispiele zeigen, wie Sie die Authentifizierung mit dem API-Schlüssel einrichten.
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. Die Signatur für diese Funktion sieht so aus:
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 von der Erweiterung generierten Anfrage-URL für Modellendpunkte mit integrierter Unterstützung. |
Unterstützte Modelle
Mit der Verwaltung von Modellendpunkten können Sie beliebige Text-Embedding- oder generische Modellendpunkte registrieren. Die Verwaltung von Modellendpunkten umfasst auch vorregistrierte 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 |