Esta página mostra como usar o AlloyDB Omni como uma ferramenta de modelo de linguagem (conteúdo extenso) (MDL/CE) e gerar incorporações de vetores com base num MDL/CE.
Para mais informações sobre a utilização de modelos de ML com o AlloyDB Omni, consulte o artigo Crie aplicações de IA generativa.
O AlloyDB Omni permite-lhe usar um MDG alojado pela Vertex AI para traduzir uma string de texto numa incorporação, que é a representação do modelo do significado semântico do texto fornecido como um vetor numérico. Para mais informações sobre o suporte do Vertex AI para incorporações de texto, consulte o artigo Incorporações de texto.
Antes de começar
Para permitir que o AlloyDB Omni gere incorporações, certifique-se de que cumpre os seguintes requisitos:
Restrições regionais
Pode gerar incorporações em regiões onde a IA generativa na Vertex AI está disponível. Para ver uma lista de regiões, consulte as localizações da IA generativa na Vertex AI .
Para o AlloyDB Omni, certifique-se de que o cluster do AlloyDB Omni e o modelo da Vertex AI que está a consultar estão na mesma região.
Extensão da base de dados necessária
Certifique-se de que a extensão
google_ml_integration
está instalada na sua base de dados AlloyDB Omni.CREATE EXTENSION IF NOT EXISTS google_ml_integration;
Esta extensão está incluída no AlloyDB Omni. Pode instalá-lo em qualquer base de dados no seu cluster.
Defina a flag da base de dados
google_ml_integration.enable_model_support
comooff
.
Configure o acesso ao modelo
Antes de poder gerar incorporações a partir de uma base de dados AlloyDB Omni, tem de configurar o AlloyDB Omni para funcionar com um modelo de incorporação de texto.
Para trabalhar com o modelo text-embedding-005
baseado na nuvem, tem de
integrar a sua base de dados com
com a Vertex AI.
Conceda aos utilizadores da base de dados acesso à geração de incorporações
Conceda autorização aos utilizadores da base de dados para executar a função embedding
para executar previsões:
Associe um cliente
psql
à instância principal do cluster, conforme descrito em Associe um clientepsql
a uma instância.Na linha de comandos psql, ligue-se à base de dados e conceda autorizações:
\c DB_NAME GRANT EXECUTE ON FUNCTION embedding TO USER_NAME;
Substitua o seguinte:
DB_NAME: o nome da base de dados na qual as autorizações devem ser concedidas
USER_NAME: o nome do utilizador ao qual as autorizações devem ser concedidas
Gere uma incorporação
O AlloyDB Omni oferece uma função que lhe permite traduzir texto numa incorporação de vetores. Em seguida, pode armazenar essa incorporação na sua base de dados como dados vetoriais e, opcionalmente, usar funções pgvector
para basear consultas nela.
Para gerar uma incorporação com o AlloyDB Omni, use a função embedding()
fornecida pela extensão google_ml_integration
:
SELECT embedding( 'MODEL_IDVERSION_TAG', 'TEXT');
Substitua o seguinte:
MODEL_ID
: o ID do modelo a consultar.Se estiver a usar o Model Garden da Vertex AI, especifique
text-embedding-005
como o ID do modelo. Estes são os modelos baseados na nuvem que o AlloyDB Omni pode usar para incorporações de texto. Para mais informações, consulte o artigo Incorporações de texto.Opcional:
VERSION_TAG
: a etiqueta de versão do modelo a consultar. Adicione@
antes da etiqueta.Se estiver a usar um dos
text-embedding
modelos em inglês com a Vertex AI, especifique uma das etiquetas de versão, por exemplo,text-embedding-005
, indicadas em Versões do modelo.A Google recomenda vivamente que especifique sempre a etiqueta de versão. Se não especificar a etiqueta de versão, o AlloyDB usa sempre a versão do modelo mais recente, o que pode gerar resultados inesperados.
TEXT
: o texto a traduzir numa incorporação vetorial.
O exemplo seguinte usa a versão 005
dos modelos em inglês para gerar uma incorporação
com base numa string literal fornecida:text-embedding
SELECT embedding('text-embedding-005', 'AlloyDB is a managed, cloud-hosted SQL database service.');
Armazene incorporações
As incorporações geradas através da google_ml_integration
extensão são implementadas como matrizes de valores real
.
Estas incorporações geradas são transmitidas como entradas para as funções de extensão pgvector
.
Para armazenar este valor numa tabela, adicione uma coluna real[]
:
ALTER TABLE TABLE ADD COLUMN EMBEDDING_COLUMN real[DIMENSIONS];
Depois de criar uma coluna para armazenar incorporações, pode preenchê-la com base nos valores já armazenados noutra coluna na mesma tabela:
UPDATE TABLE SET EMBEDDING_COLUMN = embedding('MODEL_IDVERSION_TAG', SOURCE_TEXT_COLUMN);
Substitua o seguinte:
TABLE
: o nome da tabelaEMBEDDING_COLUMN
: o nome da coluna de incorporação
MODEL_ID
: o ID do modelo a consultar.Se estiver a usar o Model Garden da Vertex AI, especifique
text-embedding-005
como o ID do modelo. Estes são os modelos baseados na nuvem que o AlloyDB Omni pode usar para incorporações de texto. Para mais informações, consulte o artigo Incorporações de texto.Opcional:
VERSION_TAG
: a etiqueta de versão do modelo a consultar. Adicione@
antes da etiqueta.Se estiver a usar um dos
text-embedding
modelos em inglês com a Vertex AI, especifique uma das etiquetas de versão, por exemplo,text-embedding-005
, indicadas em Versões do modelo.A Google recomenda vivamente que especifique sempre a etiqueta de versão. Se não especificar a etiqueta de versão, o AlloyDB usa sempre a versão do modelo mais recente, o que pode gerar resultados inesperados.
SOURCE_TEXT_COLUMN
: o nome da coluna que armazena o texto a traduzir em incorporações
Fazer uma pesquisa de similaridade
Também pode usar a função embedding()
para traduzir o texto num vetor. Aplica o vetor ao operador de
vizinho mais próximo, <->
, para encontrar as linhas da base de dados com as incorporações semanticamente mais semelhantes.pgvector
Uma vez que embedding()
devolve uma matriz real
, tem de converter explicitamente a chamada embedding()
em vector
para usar estes valores com operadores pgvector
.
CREATE EXTENSION IF NOT EXISTS google_ml_integration;
CREATE EXTENSION IF NOT EXISTS vector;
SELECT * FROM TABLE
ORDER BY EMBEDDING_COLUMN::vector
<-> embedding('MODEL_IDVERSION_TAG', 'TEXT')::vector
LIMIT ROW_COUNT
Use etiquetas de versão do modelo para evitar erros
A Google recomenda vivamente que use sempre uma versão estável do modelo de incorporações escolhido. Para a maioria dos modelos, isto significa definir explicitamente uma etiqueta de versão.
Chamar a função embedding()
sem especificar a etiqueta de versão do modelo é sintaticamente válido, mas também é propenso a erros.
Se omitir a etiqueta de versão quando usar um modelo no Vertex AI Model Garden, o Vertex AI usa a versão mais recente do modelo. Esta pode não ser a versão estável mais recente. Para mais informações sobre as versões de modelos do Vertex AI disponíveis, consulte o artigo Versões de modelos.
Uma determinada versão do modelo da Vertex AI devolve sempre a mesma resposta a uma determinada entrada de texto.embedding()
Se não especificar as versões dos modelos nas suas chamadas para embedding()
, uma nova versão do modelo publicada pode alterar abruptamente o vetor devolvido para uma determinada entrada, o que causa erros ou outro comportamento inesperado nas suas aplicações.
Para evitar estes problemas, especifique sempre a versão do modelo.
Resolver problemas
ERRO: modelo não encontrado para model_id
Mensagem de erro
Quando tenta gerar uma incorporação através da função embedding()
ou google_ml.embedding()
, ocorre o seguinte erro:
ERROR: 'Model not found for model_id:
Correção recomendada
Atualize a extensão
google_ml_integration
e tente gerar novamente as incorporações.ALTER EXTENSION IF NOT EXISTS google_ml_integration UPDATE;
Também pode eliminar a extensão e, em seguida, criá-la novamente.
DROP extension google_ml_integration; CREATE EXTENSION google_ml_integration;
Se gerar incorporações através da função
google_ml.embedding()
, certifique-se de que o modelo está registado e que está a usar omodel_id
correto na consulta.