google_ml_integration bereitgestellt werden, um Modellendpunkte und Secrets mit der Modellendpunktverwaltung zu registrieren und zu verwalten.
Sie müssen das Datenbank-Flag google_ml_integration.enable_model_support auf on setzen, bevor Sie die Erweiterung verwenden können.
Weitere Informationen finden Sie unter Modellendpunktverwaltung mit AlloyDB Omni für AI-Modelle 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 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 Modellendpunkt, den Sie definieren. |
REQUEST_URL |
optional für andere Modellendpunkte zur Texteinbettung mit integrierter Unterstützung | Der modellspezifische Endpunkt beim Hinzufügen anderer Modellendpunkte für Texteinbettungen und generischer Modellendpunkte. 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 die 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. Prüfen Sie bei benutzerdefinierten gehosteten Modellendpunkten, ob der Modellendpunkt über das Netzwerk erreichbar ist, in dem sich AlloyDB befindet. |
PROVIDER_ID |
erforderlich für Modellendpunkte zur Texteinbettung 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 dafür 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. Für qualifizierte Namen für Vertex AI, die Sie für vorregistrierte Modelle verwenden müssen, gehen Sie auf Vorregistrierte Vertex AI-Modelle. Für qualifizierte Namen, die Sie für OpenAI-Modelle mit integrierter Unterstützung verwenden müssen, gehen Sie auf 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 ihn 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 Secrets 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 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 Vorhersagefunktion ab. Siehe Funktion zum Generieren von Headern. |
INPUT_TRANSFORM_FUNCTION |
optional für Modellendpunkte zur Texteinbettung 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 Modellendpunkte zur Texteinbettung 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, die zum Aktualisieren von Metadaten für Modellendpunkte 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 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 aufgelistet 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, mit der das in 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 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 Secret-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, den 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, den Sie definieren. |
REQUEST_BODY |
Die Parameter für die Vorhersagefunktion im JSON-Format. |
Beispiel-SQL-Abfragen zum Aufrufen von Vorhersagen finden Sie unter Beispiele für AlloyDB Omni.
Transformationsfunktionen
In dieser Referenz finden Sie Informationen zu Parametern für Eingabe- und Ausgabetransformationsfunktionen.
Eingabetransformationsfunktion
Unten sehen Sie die Signatur für die Vorhersagefunktion für Modellendpunkte zur Texteinbettung:
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 Modellendpunkt-spezifische Eingabe. |
Ausgabetransformationsfunktion
Unten sehen Sie die Signatur für die Vorhersagefunktion für Modellendpunkte zur Texteinbettung:
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 Modellendpunkt-spezifischen Ausgabe 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 vom Kunden gehosteten Modellendpunkt für Texteinbettungen an, der JSON-Eingaben und -Ausgaben erfordert.
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 eine 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 eine Texteingabe nach der anderen 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 einzelne Eingabe nach der anderen zurückgegeben. Daher müssen Sie eine Ausgabetransformationsfunktion erstellen, mit der die Einbettung 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 Headergenerierung, die mit der Vorhersagefunktion google_ml.embedding() verwendet werden kann, wenn andere Modellendpunkte für Texteinbettungen 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 vom Kunden gehosteten Modellendpunkt für Texteinbettungen 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 Modellendpunkt zur Texteinbettung 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
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 Modellendpunktverwaltung können Sie beliebige Modellendpunkte für Texteinbettungen oder generische Modellendpunkte registrieren. Die Modellendpunktverwaltung 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 |