La vista previa de la gestión de endpoints de modelos te permite registrar un endpoint de modelo, gestionar los metadatos de los endpoints de modelos en tu clúster de base de datos y, a continuación, interactuar con los modelos mediante consultas SQL. Proporciona la extensión google_ml_integration
, que incluye funciones para añadir y registrar los metadatos del endpoint del modelo relacionados con los modelos, y luego usar los modelos para generar incrustaciones de vectores o invocar predicciones.
Estos son algunos de los tipos de modelos de ejemplo que puedes registrar mediante la gestión de endpoints de modelos:
- Modelos de inserciones de texto de Vertex AI
- Modelos de inserción proporcionados por terceros.
- Modelos de inserción de texto alojados de forma personalizada
- Modelos genéricos con una API basada en JSON, como el modelo
gemini-pro
de Vertex AI Model Garden
Cómo funciona
Puedes usar la gestión de endpoints de modelos para registrar un endpoint de modelo que cumpla los siguientes requisitos:
- La entrada y la salida del modelo admiten el formato JSON.
- Se puede llamar al modelo mediante el protocolo REST.
Cuando registras un endpoint de modelo en la gestión de endpoints de modelos, se registra cada endpoint con un ID de modelo único que has proporcionado como referencia al modelo. Puedes usar este ID de modelo para consultar modelos:
Genera incrustaciones para traducir las peticiones de texto a vectores numéricos. Puede almacenar las inserciones generadas como datos vectoriales cuando la extensión
pgvector
esté habilitada en la base de datos.Invoca predicciones para llamar a un modelo mediante SQL en una transacción.
Tus aplicaciones pueden acceder a la gestión de endpoints de modelos mediante la extensión google_ml_integration
. Esta extensión ofrece las siguientes funciones:
- La función SQL
google_ml.create_model()
, que se usa para registrar el endpoint del modelo que se utiliza en la función de predicción o de inserción. - La función de SQL
google_ml.create_sm_secret()
, que usa secretos en Google Cloud Secret Manager, donde se almacenan las claves de API. - La función SQL
google_ml.embedding()
, que es una función de predicción que genera inserciones de texto. - La función SQL
google_ml.predict_row()
que genera predicciones cuando llamas a modelos genéricos que admiten el formato de entrada y salida JSON. - Otras funciones auxiliares que gestionan la generación de URLs personalizadas, la generación de encabezados HTTP o la transferencia de funciones de transformación para tus modelos genéricos.
- Funciones para gestionar los endpoints y los secretos del modelo registrado.
Conceptos clave
Antes de empezar a usar la gestión de endpoints de modelos, debes conocer los conceptos necesarios para conectarte a los modelos y usarlos.
Proveedor del modelo
Proveedor del modelo indica los proveedores de alojamiento de modelos admitidos. En la siguiente tabla se muestra el valor del proveedor del modelo que debe definir en función del proveedor del modelo que utilice:
Proveedor del modelo | Definir en la función como… |
---|---|
Vertex AI | google |
Otros modelos | custom |
El proveedor de modelos predeterminado es custom
.
El método de autenticación admitido varía en función del tipo de proveedor. Los modelos de Vertex AI usan la cuenta de servicio de Distributed Cloud para autenticarse, mientras que otros proveedores pueden usar Secret Manager para autenticarse.
Tipo de modelo
Tipo de modelo indica el tipo de modelo de IA. La extensión admite la inserción de texto, así como cualquier tipo de modelo genérico. Los tipos de modelo admitidos que puedes definir al registrar un endpoint de modelo son text-embedding
y generic
. Definir el tipo de modelo es opcional al registrar endpoints de modelos genéricos, ya que generic
es el tipo de modelo predeterminado.
- Modelos de inserción de texto con asistencia integrada
- La gestión de endpoints de modelos ofrece compatibilidad integrada con todas las versiones del modelo
textembedding-gecko
de Vertex AI. Para registrar estos endpoints de modelo, usa la funcióngoogle_ml.create_model()
. Distributed Cloud configura automáticamente funciones de transformación predeterminadas para estos modelos. - El tipo de modelo de estos modelos es
text-embedding
. - Otros modelos de inserciones de texto
- En el caso de otros modelos de inserción de texto, debes crear funciones de transformación para gestionar los formatos de entrada y salida que admite el modelo. También puedes usar la función de generación de encabezados HTTP, que genera los encabezados personalizados que necesita tu modelo.
- El tipo de modelo de estos modelos es
text-embedding
. - Modelos genéricos
- La gestión de endpoints de modelos también admite el registro de todos los demás tipos de modelos, excepto los modelos de inserción de texto. Para invocar predicciones de modelos genéricos, usa la función
google_ml.predict_row()
. Puedes definir metadatos de puntos de conexión de modelos, como un punto de conexión de solicitud y encabezados HTTP específicos de tu modelo. - No puedes transferir funciones de transformación al registrar un endpoint de modelo genérico. Asegúrate de que, cuando invoques las predicciones, la entrada de la función esté en formato JSON y de que analices la salida JSON para obtener la salida final.
- El tipo de modelo de estos modelos es
generic
.
Autenticación
Los tipos de autenticación indican el tipo de autenticación que puedes usar para conectarte a la gestión de endpoints de modelos mediante la extensión google_ml_integration
. Configurar la autenticación es opcional y solo es necesario si necesitas autenticarte para acceder a tu modelo.
En el caso de los modelos de Vertex AI, la cuenta de servicio de Distributed Cloud se usa para la autenticación. En otros modelos, se puede usar una clave de API o un token de portador almacenado como secreto en Secret Manager con la función google_ml.create_sm_secret()
SQL.
En la siguiente tabla se muestran los tipos de autenticación que puedes definir:
Método de autenticación | Definir en la función como… | Proveedor del modelo |
---|---|---|
Agente de servicio de Distributed Cloud | alloydb_service_agent_iam |
Proveedor de Vertex AI |
Secret Manager | secret_manager |
proveedores externos |
Funciones de predicción
La extensión google_ml_integration
incluye las siguientes funciones de predicción:
google_ml.embedding()
- Se usa para llamar a un endpoint de modelo de incrustación de texto registrado para generar incrustaciones. Incluye compatibilidad integrada con el modelo
textembedding-gecko
de Vertex AI. - En el caso de los modelos de inserción de texto que no tienen asistencia integrada, los parámetros de entrada y salida son únicos para cada modelo y deben transformarse para que la función pueda llamar al modelo. Crea una función de entrada de transformación para transformar la entrada de la función de predicción en la entrada específica del modelo y una función de salida de transformación para transformar la salida específica del modelo en la salida de la función de predicción.
google_ml.predict_row()
- Se usa para llamar a un endpoint de modelo genérico registrado, siempre que admita APIs basadas en JSON, para invocar predicciones.
Transformar funciones
Las funciones de transformación modifican la entrada a un formato que el modelo entiende y convierten la respuesta del modelo al formato que espera la función de predicción. Las funciones de transformación se usan al registrar el endpoint del modelo text-embedding
sin compatibilidad integrada. La firma de las funciones de transformación depende de la función de predicción del tipo de modelo.
No puedes usar funciones de transformación al registrar un endpoint de modelo generic
.
A continuación, se muestran las firmas de la función de predicción de los modelos de inserción de texto:
// define custom model specific input/output transform functions.
CREATE OR REPLACE FUNCTION input_transform_function(model_id VARCHAR(100), input_text TEXT) RETURNS JSON;
CREATE OR REPLACE FUNCTION output_transform_function(model_id VARCHAR(100), response_json JSON) RETURNS real[];
Función de generación de encabezados HTTP
La función de generación de encabezados HTTP genera la salida en pares clave-valor JSON que se utilizan como encabezados HTTP. La firma de la función de predicción define las firmas de la función de generación de encabezados.
En el siguiente ejemplo se muestra la firma de la función de predicción google_ml.embedding()
.
CREATE OR REPLACE FUNCTION generate_headers(model_id VARCHAR(100), input TEXT) RETURNS JSON;
En el caso de la función de predicción google_ml.predict_row()
, la firma es la siguiente:
CREATE OR REPLACE FUNCTION generate_headers(model_id VARCHAR(100), input JSON) RETURNS JSON;
Registrar un modelo
Para invocar predicciones o generar inserciones mediante un modelo, registra el endpoint del modelo con la gestión de endpoints de modelos.
Para obtener más información sobre la función google_ml.create_model()
, consulta la referencia de gestión de endpoints de modelos.
Antes de registrar un endpoint de modelo con la gestión de endpoints de modelos, debes habilitar la extensión google_ml_integration
y configurar la autenticación en función del proveedor del modelo, si tu endpoint de modelo requiere autenticación.
Asegúrate de acceder a tu base de datos con el nombre de usuario predeterminado postgres
.
Configurar la autenticación
En las siguientes secciones se muestra cómo configurar la autenticación antes de añadir un endpoint de modelo de Vertex AI o endpoints de modelos de otros proveedores.
Configurar la autenticación de Vertex AI
Para usar los endpoints de modelos de Google Vertex AI, debes añadir permisos de Vertex AI a la cuenta de servicio que usaste al instalar AlloyDB Omni.
Configurar la autenticación para otros proveedores de modelos
En el caso de todos los modelos, excepto los de Vertex AI, puedes almacenar tus claves de API o tokens de portador en Secret Manager. Este paso es opcional si tu endpoint de modelo no gestiona la autenticación a través de Secret Manager. Por ejemplo, si tu endpoint de modelo usa encabezados HTTP para transferir información de autenticación o no usa la autenticación.
En esta sección se explica cómo configurar la autenticación si usas Secret Manager.
Para crear y usar una clave de API o un token de portador, sigue estos pasos:
Crea el secreto en Secret Manager.
El nombre y la ruta del secreto se usan en la función SQL
google_ml.create_sm_secret()
.Concede permisos al clúster de Distributed Cloud para acceder al secreto.
gcloud secrets add-iam-policy-binding 'SECRET_ID' \ --member="serviceAccount:SERVICE_ACCOUNT_ID" \ --role="roles/secretmanager.secretAccessor"
Haz los cambios siguientes:
SECRET_ID
: el ID del secreto en Secret Manager.SERVICE_ACCOUNT_ID
: el ID de la cuenta de servicio que has creado en el paso anterior. Asegúrate de que sea la misma cuenta que usaste durante la instalación de AlloyDB Omni. Esto incluye el sufijoPROJECT_ID.iam.gserviceaccount.com
completo. Por ejemplo:my-service@my-project.iam.gserviceaccount.com
También puede asignar este rol a la cuenta de servicio a nivel de proyecto.
Generar inserciones
En esta sección se describe una vista previa que te permite experimentar con el registro de un endpoint de modelo de IA y con la invocación de predicciones mediante la gestión de endpoints de modelos.
Una vez que se hayan añadido y registrado los endpoints del modelo en la gestión de endpoints de modelos, podrás hacer referencia a ellos mediante el ID del modelo para generar inserciones.
Antes de empezar
Asegúrate de haber registrado tu endpoint de modelo con la gestión de endpoints de modelos.
Generar inserciones
Usa la función SQL google_ml.embedding()
para llamar al endpoint del modelo registrado con el tipo de modelo de inserción de texto para generar inserciones.
Para llamar al modelo y generar las inserciones, usa la siguiente consulta de SQL:
SELECT
google_ml.embedding(
model_id => 'MODEL_ID',
content => 'CONTENT');
Haz los cambios siguientes:
MODEL_ID
: el ID del modelo que definiste al registrar el endpoint del modelo.CONTENT
: el texto que se va a traducir a una incrustación de vector.
Ejemplos
En esta sección se incluyen algunos ejemplos de cómo generar inserciones mediante un endpoint de modelo registrado.
Modelos de inserción de texto con asistencia integrada
Para generar embeddings de un endpoint de modelo textembedding-gecko@002
registrado, ejecuta la siguiente instrucción:
SELECT
google_ml.embedding(
model_id => 'textembedding-gecko@002',
content => 'AlloyDB is a managed, cloud-hosted SQL database service');
Invocar predicciones
En esta sección se describe una vista previa que te permite experimentar con el registro de un endpoint de modelo de IA y con la invocación de predicciones mediante la gestión de endpoints de modelos.
Una vez que se hayan añadido y registrado los endpoints del modelo en la gestión de endpoints de modelos, podrá hacer referencia a ellos mediante el ID del modelo para invocar predicciones.
Antes de empezar
Asegúrate de haber registrado tu endpoint de modelo con la gestión de endpoints de modelos.
Invocar predicciones de modelos genéricos
Usa la función SQL google_ml.predict_row()
para llamar a un endpoint de modelo genérico registrado e invocar predicciones. Puedes usar la función google_ml.predict_row()
con cualquier tipo de modelo.
SELECT
google_ml.predict_row(
model_id => 'MODEL_ID',
request_body => 'REQUEST_BODY');
Haz los cambios siguientes:
MODEL_ID
: el ID del modelo que definiste al registrar el endpoint del modelo.REQUEST_BODY
: los parámetros de la función de predicción en formato JSON.
Ejemplos
En esta sección se incluyen algunos ejemplos de cómo invocar predicciones mediante endpoints de modelos registrados.
Para generar predicciones de un endpoint de modelo gemini-pro
registrado, ejecuta la siguiente instrucción:
SELECT
json_array_elements(
google_ml.predict_row(
model_id => 'gemini-pro',
request_body => '{
"contents": [
{
"role": "user",
"parts": [
{
"text": "For TPCH database schema as mentioned here https://www.tpc.org/TPC_Documents_Current_Versions/pdf/TPC-H_v3.0.1.pdf , generate a SQL query to find all supplier names which are located in the India nation."
}
]
}
]
}'))-> 'candidates' -> 0 -> 'content' -> 'parts' -> 0 -> 'text';
Referencia de la API de gestión de endpoints de modelos
En esta sección se enumeran los parámetros de las diferentes funciones que proporciona la extensión google_ml_integration
para registrar y gestionar endpoints de modelos, así como secretos con la gestión de endpoints de modelos.
Debes definir la marca de base de datos google_ml_integration.enable_model_support
en on
para poder empezar a usar la extensión.
Modelos
Usa esta referencia para conocer los parámetros de las funciones que te permiten gestionar los endpoints de los modelos.
google_ml.create_model()
función
A continuación, se muestra cómo llamar a la función SQL google_ml.create_model()
que se usa para registrar los metadatos del endpoint del modelo:
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');
Parámetro | Obligatorio | Descripción |
---|---|---|
MODEL_ID |
Obligatorio para todos los endpoints de modelos. | Un ID único que definas para el endpoint del modelo. |
REQUEST_URL |
Opcional para otros endpoints de modelos de incrustaciones de texto con compatibilidad integrada | El endpoint específico del modelo al añadir otros endpoints de modelos genéricos y de inserciones de texto. En el caso de AlloyDB para PostgreSQL, proporciona una https URL.La URL de solicitud que genera la función para los endpoints de modelos integrados hace referencia al proyecto y a la región o ubicación de tu clúster. Si quieres hacer referencia a otro proyecto, asegúrate de especificar el model_request_url explícitamente.En el caso de los endpoints de modelos alojados personalizados, asegúrate de que se pueda acceder al endpoint del modelo desde la red en la que se encuentra Distributed Cloud. |
PROVIDER_ID |
Obligatorio para los endpoints de modelos de incrustaciones de texto con compatibilidad integrada | El proveedor del endpoint del modelo. El valor predeterminado es custom .Se debe configurar como uno de los siguientes valores:
|
MODEL_TYPE |
Opcional para los endpoints de modelos genéricos | El tipo de modelo. Se debe configurar como uno de los siguientes valores:
|
MODEL_QUALIFIED_NAME |
Obligatorio para los modelos de inserciones de texto con compatibilidad integrada; opcional para otros endpoints de modelos | Nombre completo de los modelos de inserciones de texto con asistencia integrada. |
AUTH_TYPE |
Opcional, a menos que el endpoint del modelo tenga un requisito de autenticación específico. | El tipo de autenticación que usa el endpoint del modelo. Puedes definirlo como alloydb_service_agent_iam para los modelos de Vertex AI o como secret_manager para otros proveedores, si usan Secret Manager para la autenticación. No es necesario que defina este valor si usa encabezados de autenticación. |
AUTH_ID |
No se define para los endpoints de modelos de Vertex AI. Es obligatorio para todos los demás endpoints de modelos que almacenan secretos en Secret Manager. | El ID secreto que has definido y que se usa posteriormente al registrar un endpoint de modelo. |
GENERATE_HEADER_FUNCTION |
opcional | Nombre de la función que genera encabezados personalizados. La firma de esta función depende de la función de predicción que utilices. |
INPUT_TRANSFORM_FUNCTION |
Opcional para los endpoints de modelos de inserciones de texto con compatibilidad integrada. No se debe definir para los endpoints de modelos genéricos. | Función para transformar la entrada de la función de predicción correspondiente en la entrada específica del modelo. |
OUTPUT_TRANSFORM_FUNCTION |
Opcional para los endpoints de modelos de inserciones de texto con compatibilidad integrada. No se debe definir para los endpoints de modelos genéricos. | Función para transformar la salida específica del modelo en la salida de la función de predicción. |
google_ml.alter_model()
A continuación, se muestra cómo llamar a la función SQL google_ml.alter_model()
que se usa para actualizar los metadatos del endpoint del modelo:
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');
Para obtener información sobre los valores que debe definir en cada parámetro, consulte Crear un modelo.
google_ml.drop_model()
función
A continuación, se muestra cómo llamar a la función SQL google_ml.drop_model()
que se usa para eliminar un endpoint de modelo:
CALL google_ml.drop_model('MODEL_ID');
Parámetro | Descripción |
---|---|
MODEL_ID |
Un ID único del endpoint del modelo que has definido. |
google_ml.list_model()
función
A continuación, se muestra cómo llamar a la función SQL google_ml.list_model()
que se usa para enumerar la información del endpoint del modelo:
SELECT google_ml.list_model('MODEL_ID');
Parámetro | Descripción |
---|---|
MODEL_ID |
Un ID único del endpoint del modelo que has definido. |
google_ml.model_info_view
vista
A continuación, se muestra cómo llamar a la vista google_ml.model_info_view
que se usa para enumerar la información de los endpoints de modelo de todos los endpoints de modelo:
SELECT * FROM google_ml.model_info_view;
Secretos
Usa esta referencia para conocer los parámetros de las funciones que te permiten gestionar secretos.
google_ml.create_sm_secret()
función
A continuación, se muestra cómo llamar a la función SQL google_ml.create_sm_secret()
para añadir el secreto creado en Secret Manager:
CALL
google_ml.create_sm_secret(
secret_id => 'SECRET_ID',
secret_path => 'projects/project-id/secrets/SECRET_MANAGER_SECRET_ID/versions/VERSION_NUMBER');
Parámetro | Descripción |
---|---|
SECRET_ID |
El ID secreto que has definido y que se usa posteriormente al registrar un endpoint de modelo. |
PROJECT_ID |
El ID del proyecto Google Cloud que contiene el secreto. Este proyecto puede ser diferente del que contiene tu clúster de AlloyDB para PostgreSQL. En AlloyDB Omni, el ID del Google Cloud proyecto que contiene el secreto. |
SECRET_MANAGER_SECRET_ID |
El ID del secreto definido en Secret Manager al crear el secreto. |
VERSION_NUMBER |
Número de versión del ID del secreto. |
google_ml.alter_sm_secret()
función
A continuación, se muestra cómo llamar a la función SQL google_ml.alter_sm_secret()
, que se usa para actualizar la información de secretos:
CALL
google_ml.alter_sm_secret(
secret_id => 'SECRET_ID',
secret_path => 'projects/project-id/secrets/SECRET_MANAGER_SECRET_ID/versions/VERSION_NUMBER');
Para obtener información sobre los valores que debe definir en cada parámetro, consulte Crear un secreto.
google_ml.drop_sm_secret()
función
A continuación, se muestra cómo llamar a la función SQL google_ml.drop_sm_secret()
para eliminar un secreto:
CALL google_ml.drop_sm_secret('SECRET_ID');
Parámetro | Descripción |
---|---|
SECRET_ID |
El ID secreto que has definido y que se ha usado posteriormente al registrar un endpoint de modelo. |
Funciones de predicción
Usa esta referencia para conocer los parámetros de las funciones que te permiten generar inserciones o invocar predicciones.
google_ml.embedding()
función
A continuación, se muestra cómo generar las inserciones:
SELECT
google_ml.embedding(
model_id => 'MODEL_ID',
contents => 'CONTENT');
Parámetro | Descripción |
---|---|
MODEL_ID |
Un ID único que definas para el endpoint del modelo. |
CONTENT |
El texto que se va a traducir a una incrustación de vector. |
google_ml.predict_row()
función
A continuación, se muestra cómo invocar predicciones:
SELECT
google_ml.predict_row(
model_id => 'MODEL_ID',
request_body => 'REQUEST_BODY');
Parámetro | Descripción |
---|---|
MODEL_ID |
Un ID único que definas para el endpoint del modelo. |
REQUEST_BODY |
Los parámetros de la función de predicción, en formato JSON. |
Transformar funciones
Usa esta referencia para entender los parámetros de las funciones de transformación de entrada y salida.
Función de transformación de entrada
A continuación, se muestra la firma de la función de predicción de los endpoints del modelo de inserción de texto:
CREATE OR REPLACE FUNCTION INPUT_TRANSFORM_FUNCTION(model_id VARCHAR(100), input_text TEXT) RETURNS JSON;
Parámetro | Descripción |
---|---|
INPUT_TRANSFORM_FUNCTION |
Función para transformar la entrada de la función de predicción correspondiente en la entrada específica del endpoint del modelo. |
Función de transformación de salida
A continuación, se muestra la firma de la función de predicción de los endpoints del modelo de inserción de texto:
CREATE OR REPLACE FUNCTION OUTPUT_TRANSFORM_FUNCTION(model_id VARCHAR(100), response_json JSON) RETURNS real[];
Parámetro | Descripción |
---|---|
OUTPUT_TRANSFORM_FUNCTION |
Función para transformar la salida específica del endpoint del modelo en la salida de la función de predicción. |
Ejemplo de funciones de transformación
Para entender mejor cómo crear funciones de transformación para el endpoint de tu modelo, considera un endpoint de modelo de inserciones de texto alojado de forma personalizada que requiera entradas y salidas JSON.
La siguiente solicitud cURL de ejemplo crea incrustaciones basadas en la petición y en el endpoint del modelo:
curl -m 100 -X POST https://cymbal.com/models/text/embeddings/v1 \
-H "Content-Type: application/json"
-d '{"prompt": ["AlloyDB Embeddings"]}'
Se devuelve la siguiente respuesta de ejemplo:
[[ 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]]
A partir de esta información y respuesta, podemos deducir lo siguiente:
El modelo espera una entrada JSON a través del campo
prompt
. Este campo acepta una matriz de entradas. Como la funcióngoogle_ml.embedding()
es una función de nivel de fila, espera una entrada de texto cada vez. Por lo tanto,debes crear una función de transformación de entrada que cree una matriz con un solo elemento.La respuesta del modelo es una matriz de inserciones, una por cada petición introducida en el modelo. Como la función
google_ml.embedding()
es una función de nivel de fila, devuelve una entrada cada vez. Por lo tanto, debes crear una función de transformación de salida que se pueda usar para extraer la inserción de la matriz.
En el siguiente ejemplo se muestran las funciones de transformación de entrada y salida que se usan en este endpoint de modelo cuando se registra en la gestión de endpoints de modelos:
función de transformación de entrada
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;
$$;
función de transformación de salida
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;
$$;
Función de generación de encabezados HTTP
A continuación, se muestra la firma de la función de generación de encabezados que se puede usar con la función de predicción google_ml.embedding()
al registrar otros endpoints de modelos de inserciones de texto.
CREATE OR REPLACE FUNCTION GENERATE_HEADERS(model_id VARCHAR(100), input_text TEXT) RETURNS JSON;
En el caso de la función de predicción google_ml.predict_row()
, la firma es la siguiente:
CREATE OR REPLACE FUNCTION GENERATE_HEADERS(model_id TEXT, input JSON) RETURNS JSON;
Parámetro | Descripción |
---|---|
GENERATE_HEADERS |
Función para generar encabezados personalizados. También puede enviar el encabezado de autorización generado por la función de generación de encabezados al registrar el endpoint del modelo. |
Ejemplo de función de generación de encabezados
Para entender mejor cómo crear una función que genere resultados en pares clave-valor JSON que se usen como encabezados HTTP, considera un endpoint de modelo de inserción de texto alojado de forma personalizada.
En el siguiente ejemplo de solicitud cURL se envía el encabezado HTTP version
, que utiliza el endpoint del modelo:
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"]}'
El modelo espera una entrada de texto a través del campo version
y devuelve el valor de la versión en formato JSON. En el siguiente ejemplo se muestra la función de generación de encabezados que se usa para este endpoint del modelo de inserción de texto cuando se registra con la gestión de endpoints de modelos:
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;
$$;
Función de generación de encabezados mediante una clave de API
En los siguientes ejemplos se muestra cómo configurar la autenticación mediante la clave de API.
Modelo de embedding
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;
$$;
Sustituye API_KEY
por la clave de API del proveedor del modelo.
modelo genérico
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', 'model-version', '2023-06-01')::JSON;
END;
$$;
Sustituye API_KEY
por la clave de API del proveedor del modelo.
Generación de URLs de solicitud
Usa la función de generación de URLs de solicitud para inferir las URLs de solicitud de los endpoints del modelo con asistencia integrada. A continuación, se muestra la firma de esta función:
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)
Parámetro | Descripción |
---|---|
GENERATE_REQUEST_URL |
Función para generar la URL de solicitud generada por la extensión para los endpoints del modelo con asistencia integrada. |
Modelos admitidos
Puedes usar la gestión de endpoints de modelos para registrar cualquier endpoint de modelo genérico o de inserción de texto. La gestión de endpoints de modelos también incluye modelos de Vertex AI pre-registrados y modelos con asistencia integrada.
Modelos de Vertex AI pre-registrados
Tipo de modelo | ID del modelo | Versión de la extensión |
---|---|---|
generic |
|
Versión 1.4.2 y posteriores |
text_embedding |
|
Versión 1.3 y posteriores |
Modelos con compatibilidad integrada
Vertex AI
Nombre de modelo cualificado | Tipo de modelo |
---|---|
text-embedding-gecko@001 |
text-embedding |
text-embedding-gecko@003 |
text-embedding |
text-embedding-004 |
text-embedding |
text-embedding-preview-0815 |
text-embedding |
text-multilingual-embedding-002 |
text-embedding |