La versión preliminar de la administración de extremos de modelos te permite registrar un extremo de modelo, administrar los metadatos del extremo de modelo en tu clúster de bases de datos y, luego, interactuar con los modelos usando consultas en SQL. Proporciona la extensión google_ml_integration
que incluye funciones para agregar y registrar los metadatos del extremo del modelo relacionados con los modelos y, luego, usar los modelos para generar embeddings de vectores o invocar predicciones.
Estos son algunos de los tipos de modelos de ejemplo que puedes registrar con la administración de extremos de modelos:
- Modelos de embedding de texto de Vertex AI
- Modelos de embedding proporcionados por proveedores externos
- Modelos de incorporación de texto alojados de forma personalizada
- Modelos genéricos con una API basada en JSON, por ejemplo, el modelo
gemini-pro
de Model Garden de Vertex AI
Cómo funciona
Puedes usar la administración de extremos de modelos para registrar un extremo de modelo que cumpla con lo siguiente:
- La entrada y la salida del modelo admiten el formato JSON.
- Se puede llamar al modelo con el protocolo REST.
Cuando registras un extremo del modelo con la administración de extremos del modelo, se registra cada extremo con un ID de modelo único que proporcionaste como referencia al modelo. Puedes usar este ID de modelo para consultar modelos:
Genera embeddings para traducir instrucciones de texto en vectores numéricos. Puedes almacenar las incorporaciones generadas como datos vectoriales cuando la extensión
pgvector
está habilitada en la base de datos.Invoca predicciones para llamar a un modelo a través de SQL dentro de una transacción.
Tus aplicaciones pueden acceder a la administración de extremos del modelo con la extensión google_ml_integration
. Esta extensión proporciona las siguientes funciones:
- La función de SQL
google_ml.create_model()
, que se usa para registrar el extremo del modelo que se usa en la función de predicción o de embedding. - La función
google_ml.create_sm_secret()
de SQL, que usa secretos en Google CloudSecret Manager, donde se almacenan las claves de API. - La función
google_ml.embedding()
de SQL, que es una función de predicción que genera embeddings de texto. - Es la función
google_ml.predict_row()
de SQL que genera predicciones cuando llamas a modelos genéricos que admiten el formato de entrada y salida JSON. - Otras funciones auxiliares que controlan la generación de URLs personalizadas, la generación de encabezados HTTP o el paso de funciones de transformación para tus modelos genéricos.
- Son funciones para administrar los extremos y los secretos del modelo registrado.
Conceptos clave
Antes de comenzar a usar la administración de extremos de modelos, comprende los conceptos necesarios para conectarte a los modelos y usarlos.
Proveedor del modelo
Proveedor de modelos indica los proveedores de hosting de modelos compatibles. En la siguiente tabla, se muestra el valor del proveedor del modelo que debes establecer según el proveedor del modelo que uses:
Proveedor del modelo | Establecer en la función como… |
---|---|
Vertex AI | google |
Otros modelos | custom |
El proveedor de modelos predeterminado es custom
.
Según el tipo de proveedor, el método de autenticación admitido varía. Los modelos de Vertex AI usan la cuenta de servicio de Distributed Cloud para la autenticación, 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 incorporación de texto y cualquier tipo de modelo genérico. Los tipos de modelos compatibles que puedes configurar cuando registras un extremo del modelo son text-embedding
y generic
. Establecer el tipo de modelo es opcional cuando se registran extremos de modelos genéricos, ya que generic
es el tipo de modelo predeterminado.
- Modelos de incorporación de texto con compatibilidad integrada
- La administración de extremos de modelos proporciona compatibilidad integrada para todas las versiones del modelo
textembedding-gecko
de Vertex AI. Para registrar estos extremos del 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 para estos modelos es
text-embedding
. - Otros modelos de embeddings de texto
- Para otros modelos de incorporación de texto, debes crear funciones de transformación para controlar los formatos de entrada y salida que admite el modelo. De manera opcional, puedes usar la función de generación de encabezados HTTP que genera los encabezados personalizados que requiere tu modelo.
- El tipo de modelo para estos modelos es
text-embedding
. - Modelos genéricos
- La administración de extremos de modelos también admite el registro de todos los demás tipos de modelos, además de los modelos de incorporación de texto. Para invocar predicciones para modelos genéricos, usa la función
google_ml.predict_row()
. Puedes configurar los metadatos del extremo del modelo, como un extremo de solicitud y encabezados HTTP específicos de tu modelo. - No puedes pasar funciones de transformación cuando registras un extremo de modelo genérico. Asegúrate de que, cuando invoques predicciones, la entrada de la función esté en formato JSON y de que analices el resultado JSON para obtener el resultado final.
- El tipo de modelo para estos modelos es
generic
.
Autenticación
Los tipos de autenticación indican el tipo de autenticación que puedes usar para conectarte a la administración de extremos del modelo con la extensión google_ml_integration
. La configuración de la autenticación es opcional y solo se requiere si necesitas autenticarte para acceder a tu modelo.
En el caso de los modelos de Vertex AI, se usa la cuenta de servicio de Distributed Cloud para la autenticación. Para otros modelos, se puede usar la clave de API o el token de portador que se almacena como secreto en Secret Manager con la función google_ml.create_sm_secret()
de SQL.
En la siguiente tabla, se muestran los tipos de autenticación que puedes establecer:
Método de autenticación | Establecer 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 extremo de modelo de embedding de texto registrado para generar embeddings. Incluye compatibilidad integrada con el modelo
textembedding-gecko
de Vertex AI. - En el caso de los modelos de incorporación de texto sin compatibilidad integrada, los parámetros de entrada y salida son únicos para un modelo y deben transformarse para que la función llame 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 extremo de modelo genérico registrado, siempre que admita la API basada en JSON, para invocar predicciones.
Funciones de transformación
Las funciones de transformación modifican la entrada a un formato que el modelo comprende y convierten la respuesta del modelo al formato que espera la función de predicción. Las funciones de transformación se usan cuando se registra el extremo del modelo text-embedding
sin compatibilidad integrada. La firma de las funciones de transformación depende de la función de predicción para el tipo de modelo.
No puedes usar funciones de transformación cuando registras un extremo del modelo generic
.
A continuación, se muestran las firmas de la función de predicción para los modelos de incorporació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 el resultado en pares clave-valor JSON que se usan 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;
Para 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;
Registra un modelo
Para invocar predicciones o generar incorporaciones con un modelo, registra el extremo del modelo en la administración de extremos del modelo.
Para obtener más información sobre la función google_ml.create_model()
, consulta la Referencia de administración de extremos del modelo.
Antes de registrar un extremo del modelo con la administración de extremos del modelo, debes habilitar la extensión google_ml_integration
y configurar la autenticación según el proveedor del modelo, si tu extremo del modelo requiere autenticación.
Asegúrate de acceder a tu base de datos con el nombre de usuario predeterminado postgres
.
Configura la autenticación
En las siguientes secciones, se muestra cómo configurar la autenticación antes de agregar un extremo del modelo de Vertex AI o extremos de modelos de otros proveedores.
Configura la autenticación para Vertex AI
Para usar los extremos del modelo de Google Vertex AI, debes agregar permisos de Vertex AI a la cuenta de servicio que usaste durante la instalación de AlloyDB Omni.
Configura la autenticación para otros proveedores de modelos
Para 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 el extremo de tu modelo no controla la autenticación a través de Secret Manager, por ejemplo, si el extremo de tu modelo usa encabezados HTTP para pasar información de autenticación o no usa autenticación en absoluto.
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, completa los siguientes pasos:
Crea el secreto en Secret Manager.
El nombre y la ruta de acceso del secreto se usan en la función de SQL
google_ml.create_sm_secret()
.Otorga 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"
Reemplaza lo siguiente:
SECRET_ID
: Es el ID del secreto en Secret Manager.SERVICE_ACCOUNT_ID
: Es el ID de la cuenta de servicio que creaste 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 puedes otorgar este rol a la cuenta de servicio a nivel del proyecto.
Genera embeddings
En esta sección, se describe una versión preliminar que te permite experimentar con el registro de un extremo de modelo de IA y la invocación de predicciones con la administración de extremos de modelos.
Después de agregar y registrar los extremos del modelo en la administración de extremos del modelo, puedes hacer referencia a ellos con el ID del modelo para generar incorporaciones.
Antes de comenzar
Asegúrate de haber registrado el extremo del modelo en la administración de extremos del modelo.
Genera embeddings
Usa la función google_ml.embedding()
de SQL para llamar al extremo del modelo registrado con el tipo de modelo de incorporación de texto y generar incorporaciones.
Para llamar al modelo y generar embeddings, usa la siguiente consulta en SQL:
SELECT
google_ml.embedding(
model_id => 'MODEL_ID',
content => 'CONTENT');
Reemplaza lo siguiente:
MODEL_ID
: Es el ID del modelo que definiste cuando registraste el extremo del modelo.CONTENT
: es el texto que se traducirá en una embedding de vector.
Ejemplos
En esta sección, se incluyen algunos ejemplos para generar incorporaciones con el extremo del modelo registrado.
Modelos de incorporación de texto con compatibilidad integrada
Para generar embeddings para un extremo del 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');
Invoca predicciones
En esta sección, se describe una versión preliminar que te permite experimentar con el registro de un extremo de modelo de IA y la invocación de predicciones con la administración de extremos de modelos.
Después de agregar los extremos del modelo y registrarlos en la administración de extremos del modelo, puedes hacer referencia a ellos con el ID del modelo para invocar predicciones.
Antes de comenzar
Asegúrate de haber registrado el extremo del modelo en la administración de extremos del modelo.
Invoca predicciones para modelos genéricos
Usa la función de SQL google_ml.predict_row()
para llamar a un extremo del modelo genérico registrado y, así, 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');
Reemplaza lo siguiente:
MODEL_ID
: Es el ID del modelo que definiste cuando registraste el extremo 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 para invocar predicciones con extremos de modelos registrados.
Para generar predicciones para un extremo del 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 administración de extremos del modelo
En esta sección, se enumeran los parámetros de las diferentes funciones que proporciona la extensión google_ml_integration
para registrar y administrar extremos de modelos, y secretos con la administración de extremos de modelos.
Debes establecer la marca de base de datos google_ml_integration.enable_model_support
en on
antes de poder comenzar a usar la extensión.
Modelos
Usa esta referencia para comprender los parámetros de las funciones que te permiten administrar los extremos del modelo.
Función google_ml.create_model()
A continuación, se muestra cómo llamar a la función de SQL google_ml.create_model()
que se usa para registrar los metadatos del extremo 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 extremos del modelo | Es un ID único para el extremo del modelo que defines. |
REQUEST_URL |
Opcional para otros extremos de modelos de incorporación de texto con compatibilidad integrada | Es el extremo específico del modelo cuando se agregan otros extremos de modelos genéricos y de incorporación de texto. En el caso de AlloyDB para PostgreSQL, proporciona una URL de https .La URL de solicitud que genera la función para los extremos de modelos integrados hace referencia al proyecto y a la región o ubicación de tu clúster. Si deseas hacer referencia a otro proyecto, asegúrate de especificar model_request_url de forma explícita.En el caso de los extremos de modelos personalizados alojados, asegúrate de que se pueda acceder al extremo del modelo desde la red en la que se encuentra Distributed Cloud. |
PROVIDER_ID |
Se requiere para los extremos del modelo de incorporación de texto con compatibilidad integrada. | Es el proveedor del extremo del modelo. El valor predeterminado es custom .Establece uno de los siguientes valores:
|
MODEL_TYPE |
Opcional para los extremos de modelos genéricos | Es el tipo de modelo. Se establece en uno de los siguientes valores:
|
MODEL_QUALIFIED_NAME |
Obligatorio para los modelos de incorporación de texto con compatibilidad integrada; opcional para otros extremos del modelo | Es el nombre completo de los modelos de incorporación de texto con compatibilidad integrada. |
AUTH_TYPE |
Opcional, a menos que el extremo del modelo tenga un requisito de autenticación específico | Es el tipo de autenticación que usa el extremo del modelo. Puedes establecerlo en alloydb_service_agent_iam para los modelos de Vertex AI o en secret_manager para otros proveedores, si usan Secret Manager para la autenticación. No es necesario que establezcas este valor si usas encabezados de autenticación. |
AUTH_ID |
No se configura para los extremos de modelos de Vertex AI; se requiere para todos los demás extremos de modelos que almacenan secretos en Secret Manager | Es el ID secreto que estableces y que se usa posteriormente cuando registras un extremo del 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 uses. |
INPUT_TRANSFORM_FUNCTION |
Es opcional para los extremos del modelo de incorporación de texto con compatibilidad integrada; no se debe configurar para los extremos del modelo genérico. | Es la función para transformar la entrada de la función de predicción correspondiente en la entrada específica del modelo. |
OUTPUT_TRANSFORM_FUNCTION |
Es opcional para los extremos del modelo de incorporación de texto con compatibilidad integrada; no se debe configurar para los extremos del modelo genérico. | Es la 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 de SQL google_ml.alter_model()
que se usa para actualizar los metadatos del extremo 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 debes establecer para cada parámetro, consulta Crea un modelo.
Función google_ml.drop_model()
A continuación, se muestra cómo llamar a la función de SQL google_ml.drop_model()
que se usa para descartar un extremo del modelo:
CALL google_ml.drop_model('MODEL_ID');
Parámetro | Descripción |
---|---|
MODEL_ID |
Es un ID único para el extremo del modelo que definiste. |
Función google_ml.list_model()
A continuación, se muestra cómo llamar a la función de SQL google_ml.list_model()
que se usa para enumerar la información del extremo del modelo:
SELECT google_ml.list_model('MODEL_ID');
Parámetro | Descripción |
---|---|
MODEL_ID |
Es un ID único para el extremo del modelo que definiste. |
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 extremos del modelo para todos los extremos del modelo:
SELECT * FROM google_ml.model_info_view;
Secrets
Usa esta referencia para comprender los parámetros de las funciones que te permiten administrar secretos.
Función google_ml.create_sm_secret()
A continuación, se muestra cómo llamar a la función google_ml.create_sm_secret()
de SQL que se usa para agregar 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 |
Es el ID secreto que estableces y que se usa posteriormente cuando registras un extremo del modelo. |
PROJECT_ID |
ID de tu proyecto Google Cloud que contiene el secreto. Este proyecto puede ser diferente del que contiene tu clúster de AlloyDB para PostgreSQL. En el caso de AlloyDB Omni, es el ID de tu proyecto Google Cloud que contiene el secreto. |
SECRET_MANAGER_SECRET_ID |
Es el ID del secreto que se configuró en Secret Manager cuando creaste el secreto. |
VERSION_NUMBER |
Es el número de versión del ID del secreto. |
Función google_ml.alter_sm_secret()
A continuación, se muestra cómo llamar a la función google_ml.alter_sm_secret()
de SQL que se usa para actualizar la información secreta:
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 debes establecer para cada parámetro, consulta Crea un secreto.
Función google_ml.drop_sm_secret()
A continuación, se muestra cómo llamar a la función SQL google_ml.drop_sm_secret()
que se usa para descartar un secreto:
CALL google_ml.drop_sm_secret('SECRET_ID');
Parámetro | Descripción |
---|---|
SECRET_ID |
Es el ID secreto que estableciste y que se usó posteriormente cuando registraste un extremo del modelo. |
Funciones de predicción
Usa esta referencia para comprender los parámetros de las funciones que te permiten generar incorporaciones o invocar predicciones.
Función google_ml.embedding()
En el siguiente ejemplo, se muestra cómo generar incorporaciones:
SELECT
google_ml.embedding(
model_id => 'MODEL_ID',
contents => 'CONTENT');
Parámetro | Descripción |
---|---|
MODEL_ID |
Es un ID único para el extremo del modelo que defines. |
CONTENT |
Es el texto que se traducirá en una incorporación de vector. |
Función google_ml.predict_row()
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 |
Es un ID único para el extremo del modelo que defines. |
REQUEST_BODY |
Son los parámetros de la función de predicción, en formato JSON. |
Funciones de transformación
Usa esta referencia para comprender 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 para los extremos del modelo de incorporació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 |
Es la función para transformar la entrada de la función de predicción correspondiente en la entrada específica del extremo del modelo. |
Función de transformación de salida
A continuación, se muestra la firma de la función de predicción para los extremos del modelo de incorporació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 |
Es la función para transformar el resultado específico del extremo del modelo en el resultado de la función de predicción. |
Ejemplo de funciones de transformación
Para comprender mejor cómo crear funciones de transformación para el extremo de tu modelo, considera un extremo de modelo de incorporación de texto alojado de forma personalizada que requiera entrada y salida JSON.
En la siguiente solicitud cURL de ejemplo, se crean incorporaciones basadas en la instrucción y el extremo del modelo:
curl -m 100 -X POST https://cymbal.com/models/text/embeddings/v1 \
-H "Content-Type: application/json"
-d '{"prompt": ["AlloyDB Embeddings"]}'
Se muestra 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]]
Según esta entrada y respuesta, podemos inferir lo siguiente:
El modelo espera una entrada JSON a través del campo
prompt
. Este campo acepta un array de entradas. Como la funcióngoogle_ml.embedding()
es una función a nivel de la fila, espera una entrada de texto a la vez. Por lo tanto,debes crear una función de transformación de entrada que cree un array con un solo elemento.La respuesta del modelo es un array de embeddings, uno para cada entrada de instrucción al modelo. Como la función
google_ml.embedding()
es una función a nivel de la fila, devuelve una sola entrada a la vez. Por lo tanto, debes crear una función de transformación de salida que se pueda usar para extraer la incorporación del array.
En el siguiente ejemplo, se muestran las funciones de transformación de entrada y salida que se usan para este extremo del modelo cuando se registra con la administración de extremos del modelo:
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()
cuando se registran otros extremos del modelo de incorporación de texto.
CREATE OR REPLACE FUNCTION GENERATE_HEADERS(model_id VARCHAR(100), input_text TEXT) RETURNS JSON;
Para 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 |
Es la función para generar encabezados personalizados. También puedes pasar el encabezado de autorización generado por la función de generación de encabezados mientras registras el extremo del modelo. |
Ejemplo de función de generación de encabezados
Para comprender mejor cómo crear una función que genere resultados en pares clave-valor JSON que se usan como encabezados HTTP, considera un extremo de modelo de incorporación de texto alojado de forma personalizada.
En el siguiente ejemplo de solicitud cURL, se pasa el encabezado HTTP version
que usa el extremo 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 extremo del modelo de incorporación de texto cuando se registra con la administración de extremos del modelo:
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 con clave de API
En los siguientes ejemplos, se muestra cómo configurar la autenticación con 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;
$$;
Reemplaza 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;
$$;
Reemplaza 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 extremos del modelo con compatibilidad 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 |
Es la función para generar la URL de solicitud que genera la extensión para los extremos del modelo con compatibilidad integrada. |
Modelos compatibles
Puedes usar la administración de extremos de modelos para registrar cualquier extremo de modelo genérico o de incorporación de texto. La administración de extremos de modelos también incluye modelos de Vertex AI previamente registrados y modelos con asistencia integrada.
Modelos de Vertex AI previamente registrados
Tipo de modelo | ID de 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 del modelo calificado | 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 |