Nesta página, descrevemos como invocar previsões ou gerar incorporações usando um modelo e, em seguida, registrar o endpoint do modelo com o gerenciamento de endpoints de modelo.
Para mais informações sobre a função
google_ml.create_model()
, consulte Referência do gerenciamento de endpoints de modelo.
Antes de começar
- Se o endpoint do modelo exigir autenticação, ative a extensão
google_ml_integration
.
- Com base no provedor do modelo, configure a autenticação.
- Use o nome de usuário padrão
postgres
para acessar o banco de dados.
Ativar a extensão
Defina a flag do banco de dados
google_ml_integration.enable_model_support
comoon
para sua instância. Para mais informações sobre como definir flags de banco de dados, consulte Configurar flags de banco de dados.Conecte-se à instância principal usando um
psql
cliente ou o Cloud SQL Studio.Execute o comando a seguir para garantir que a extensão
google_ml_integration
esteja atualizada para a versão 1.4.2:ALTER EXTENSION google_ml_integration UPDATE TO '1.4.2'
Adicione a extensão
google_ml_integration
versão 1.4.2 usandopsql
:CREATE EXTENSION google_ml_integration VERSION '1.4.2';
Opcional: conceda permissão a um usuário do PostgreSQL que não seja superadministrador para gerenciar metadados do modelo:
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA google_ml TO NON_SUPER_USER;
Substitua
NON_SUPER_USER
pelo nome de usuário do PostgreSQL que não é superusuário.
Configurar a autenticação
As seções a seguir mostram como configurar a autenticação antes de adicionar um endpoint de modelo da Vertex AI ou endpoints de modelo hospedados em Trusted Cloud by S3NS.
Configurar a autenticação para a Vertex AI
Para usar os endpoints de modelo da Vertex AI do Google, adicione permissões da Vertex AI à conta de serviço do Cloud SQL baseada no IAM que você usa para se conectar ao banco de dados. Para mais informações sobre a integração com a Vertex AI, consulte Integrar o Cloud SQL à Vertex AI.
Configurar a autenticação para modelos hospedados de forma personalizada
Nesta seção, explicamos como configurar a autenticação se você estiver usando o Secret Manager. Para todos os modelos, exceto os endpoints de modelo da Vertex AI, é possível armazenar suas chaves de API ou tokens de acesso no Secret Manager.
Se o endpoint do modelo não processar a autenticação pelo Secret Manager, esta seção será opcional. Por exemplo, se o endpoint do modelo usar cabeçalhos HTTP para transmitir informações de autenticação ou não usar autenticação, não conclua as etapas desta seção.
Para criar e usar uma chave de API ou um token de acesso, siga estas etapas:
Crie um secret no Secret Manager. Para mais informações, consulte Criar um secret e acessar uma versão dele.
O nome e o caminho do secret são usados na função SQL
google_ml.create_sm_secret()
.Conceda permissões à instância do Cloud SQL para acessar o secret.
gcloud secrets add-iam-policy-binding SECRET_ID \ --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role="roles/secretmanager.secretAccessor"
Substitua:
SECRET_ID
: o ID do secret no Secret Manager.SERVICE_ACCOUNT_EMAIL
: o endereço de e-mail da conta de serviço do Cloud SQL baseada no IAM. Para encontrar esse endereço de e-mail, use o comandogcloud sql instances describe INSTANCE_NAME
e substitua INSTANCE_NAME pelo nome da instância. O valor que aparece ao lado do parâmetroserviceAccountEmailAddress
é o endereço de e-mail.
Modelos de embedding de texto com suporte integrado
Esta seção mostra como registrar endpoints de modelo para gerenciamento de endpoints de modelo.
Modelos de embedding da Vertex AI
O gerenciamento de endpoints de modelo oferece suporte integrado a todas as versões dos modelos
text-embedding-gecko
, text-embedding
e gemini-embedding
da
Vertex AI. Use o nome qualificado para definir a versão do modelo como
textembedding-gecko@001
ou textembedding-gecko@002
.
Como os IDs de endpoints de modelos de incorporação da Vertex AI são compatíveis por padrão com o gerenciamento de endpoints de modelos, é possível usar qualquer um deles diretamente como o ID do modelo. Para esses modelos, a extensão configura automaticamente funções de transformação padrão.
Verifique se a instância do Cloud SQL e o modelo da Vertex AI que você está consultando estão na mesma região.
Para registrar o endpoint do modelo textembedding-gecko@002
, chame a função create_model
:
CALL
google_ml.create_model(
model_id => 'textembedding-gecko@002',
model_provider => 'google',
model_qualified_name => 'textembedding-gecko@002',
model_type => 'text_embedding',
model_auth_type => 'cloudsql_service_agent_iam');
Modelos de incorporação de texto hospedados de forma personalizada
Esta seção mostra como registrar endpoints de modelos personalizados hospedados em redes no Trusted Cloud by S3NS.
Para adicionar endpoints de modelo de incorporação de texto hospedados de forma personalizada, é necessário criar funções de transformação e, opcionalmente, cabeçalhos HTTP personalizados. Por outro lado, adicionar endpoints de modelo genérico hospedados personalizados envolve gerar cabeçalhos HTTP personalizados e definir o URL de solicitação do modelo.
O exemplo a seguir adiciona o endpoint do modelo de incorporação de texto custom-embedding-model
hospedado pelo Cymbal, que está hospedado em Trusted Cloud by S3NS. As funções de transformação cymbal_text_input_transform
e cymbal_text_output_transform
são usadas para transformar o formato de entrada e saída do
modelo no formato de entrada e saída da função de previsão.
Para registrar endpoints de modelos de incorporação de texto hospedados de forma personalizada, siga estas etapas:
Chame o secret armazenado no 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');
Substitua:
SECRET_ID
: o ID do secret que você definiu e que é usado posteriormente ao registrar um endpoint de modelo, por exemplo,key1
.SECRET_MANAGER_SECRET_ID
: o ID do secret definido no Secret Manager quando você criou o secret.PROJECT_ID
: o ID do seu projeto do Trusted Cloud by S3NS .VERSION_NUMBER
: o número da versão do ID do secret.
Crie as funções de transformação de entrada e saída com base na seguinte assinatura para a função de previsão dos endpoints do modelo de embedding de texto. Para mais informações sobre como criar funções de transformação, consulte Exemplo de funções de transformação.
Confira a seguir exemplos de funções de transformação específicas para o endpoint do modelo de embedding de texto
custom-embedding-model
:-- Input Transform Function corresponding to the custom model endpoint 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; $$; -- Output Transform Function corresponding to the custom model endpoint 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; $$;
Chame a função de criação de modelo para registrar o endpoint do modelo de embedding personalizado:
CALL
google_ml.create_model(
model_id => 'MODEL_ID',
model_request_url => 'REQUEST_URL',
model_provider => 'custom',
model_type => 'text_embedding',
model_auth_type => 'secret_manager',
model_auth_id => 'SECRET_ID',
model_qualified_name => 'MODEL_QUALIFIED_NAME',
model_in_transform_fn => 'cymbal_text_input_transform',
model_out_transform_fn => 'cymbal_text_output_transform');
Substitua:
MODEL_ID
: obrigatório. Um ID exclusivo para o endpoint do modelo que você define (por exemplo,custom-embedding-model
). Esse ID é referenciado para metadados que o endpoint do modelo precisa gerar incorporações ou invocar previsões.REQUEST_URL
: obrigatório. O endpoint específico do modelo ao adicionar embeddings de texto personalizados e endpoints de modelo genéricos, por exemplo,https://cymbal.com/models/text/embeddings/v1
. Verifique se o endpoint do modelo está acessível por um endereço IP interno. O gerenciamento de endpoints de modelo não aceita endereços IP externo.MODEL_QUALIFIED_NAME
: obrigatório se o endpoint do modelo usar um nome qualificado. O nome totalmente qualificado caso o endpoint do modelo tenha várias versões.SECRET_ID
: o ID do secret usado anteriormente no procedimentogoogle_ml.create_sm_secret()
.
Modelos genéricos
Esta seção mostra como registrar um endpoint de modelogemini-pro
genérico do Model Garden da Vertex AI, que não tem suporte integrado.
É possível registrar qualquer
endpoint de modelo genérico hospedado no Trusted Cloud by S3NS.
O Cloud SQL só é compatível com endpoints de modelo disponíveis no Model Garden da Vertex AI e endpoints de modelo hospedados em redes dentro de Trusted Cloud by S3NS.
Modelo do Gemini
O exemplo a seguir adiciona o endpoint do modelo gemini-1.0-pro
do Model Garden da Vertex AI.
Para registrar o endpoint do modelo gemini-1.0-pro
, chame a função create model
:
CALL
google_ml.create_model(
model_id => 'MODEL_ID',
model_request_url => 'https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/gemini-1.0-pro:streamGenerateContent',
model_provider => 'google',
model_auth_type => 'cloudsql_service_agent_iam');
Substitua:
MODEL_ID
: um ID exclusivo para o endpoint do modelo que você define (por exemplo,
gemini-1
). Esse ID é referenciado para metadados que o endpoint do modelo precisa gerar incorporações ou invocar previsões.PROJECT_ID
: o ID do seu projeto do Trusted Cloud by S3NS .
Para mais informações, consulte como invocar previsões para endpoints de modelos genéricos.
A seguir
- Saiba mais sobre a referência de gerenciamento de endpoints de modelo.