Esta página mostra como usar o AlloyDB como uma ferramenta de modelo de linguagem grande (LLM) e gerar embeddings de vetor com base em um LLM.
Para mais informações sobre como usar modelos de ML com o AlloyDB Omni, consulte Criar aplicativos de IA generativa.
O AlloyDB permite usar um LLM hospedado pela Vertex AI para traduzir uma string de texto em uma embedding, 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 da Vertex AI para embeddings de texto, consulte Embeddings de texto.
Antes de começar
Para permitir que o AlloyDB gere embeddings, verifique se você atende aos seguintes requisitos:
Restrições regionais
É possível gerar embeddings em regiões em que a IA generativa na Vertex AI está disponível. Para uma lista de regiões, consulte IA generativa em locais da Vertex AI .
Para o AlloyDB, verifique se o cluster do AlloyDB e o modelo da Vertex AI que você está consultando estão na mesma região.
Extensão de banco de dados necessária
Verifique se a extensão
google_ml_integration
está instalada no seu banco de dados do AlloyDB.CREATE EXTENSION google_ml_integration;
Essa extensão está incluída no AlloyDB. É possível instalá-lo em qualquer banco de dados no cluster.
Defina a flag do banco de dados
google_ml_integration.enable_model_support
comooff
.
Configurar o acesso ao modelo
Antes de gerar embeddings de um banco de dados do AlloyDB, configure o AlloyDB para funcionar com um modelo de embedding de texto.
Para trabalhar com o modelo de textembeddings-gecko
baseado na nuvem, você precisa
integrar seu banco de dados à
Vertex AI.
Conceder acesso aos usuários do banco de dados para gerar embeddings
Conceda permissão para que os usuários do banco de dados executem a função embedding
para executar previsões:
Conecte um cliente
psql
à instância principal do cluster, conforme descrito em Conectar um clientepsql
a uma instância.No prompt de comando psql, conecte-se ao banco de dados e conceda permissões:
\c DB_NAME GRANT EXECUTE ON FUNCTION embedding TO USER_NAME;
Substitua:
DB_NAME: o nome do banco de dados em que as permissões precisam ser concedidas
USER_NAME: o nome do usuário para quem as permissões serão concedidas
Gerar um embedding
O AlloyDB fornece uma função que permite traduzir texto em um
embedding de vetor. Em seguida, é possível armazenar esse embedding em seu banco de dados como dados vetoriais e, opcionalmente, usar funções pgvector
para basear consultas nele.
Para gerar um embedding usando o AlloyDB, use a função embedding()
fornecida pela extensão google_ml_integration
:
SELECT embedding( 'MODEL_IDVERSION_TAG', 'TEXT');
Substitua:
MODEL_ID
: o ID do modelo a ser consultado.Se você estiver usando o Model Garden da Vertex AI, especifique
textembedding-gecko@003
como o ID do modelo. Esses são os modelos baseados na nuvem que o AlloyDB pode usar para embeddings de texto. Para mais informações, consulte Embeddings de texto.Opcional:
VERSION_TAG
: a tag da versão do modelo a ser consultada. Adicione@
ao início da tag.Se você estiver usando um dos modelos
textembedding-gecko
em inglês com a Vertex AI, especifique uma das tags de versão, por exemplo,textembedding-gecko@003
, listada em Versões de modelo.O Google recomenda que você sempre especifique a tag de versão. Se você não especificar a tag de versão, o AlloyDB sempre vai usar a versão mais recente do modelo, o que pode levar a resultados inesperados.
TEXT
: o texto a ser traduzido em um embedding vetorial.
O exemplo a seguir usa a versão 003
dos modelos em inglês textembedding-gecko
para gerar um embedding
com base em uma string literal fornecida:
SELECT embedding('textembedding-gecko@003', 'AlloyDB is a managed, cloud-hosted SQL database service.');
Armazenar embeddings
Os embeddings gerados usando a extensão google_ml_integration
são implementados como matrizes de valores real
.
Esses embeddings gerados são transmitidos como entradas para funções de extensão
pgvector
.
Para armazenar esse valor em uma tabela, adicione uma coluna real[]
:
ALTER TABLE TABLE ADD COLUMN EMBEDDING_COLUMN real[DIMENSIONS];
Depois de criar uma coluna para armazenar embeddings, é possível preenchê-la com base nos valores já armazenados em outra coluna na mesma tabela:
UPDATE TABLE SET EMBEDDING_COLUMN = embedding('MODEL_IDVERSION_TAG', SOURCE_TEXT_COLUMN);
Substitua:
TABLE
: o nome da tabelaEMBEDDING_COLUMN
: o nome da coluna de embedding
MODEL_ID
: o ID do modelo a ser consultado.Se você estiver usando o Model Garden da Vertex AI, especifique
textembedding-gecko@003
como o ID do modelo. Esses são os modelos baseados na nuvem que o AlloyDB pode usar para embeddings de texto. Para mais informações, consulte Embeddings de texto.Opcional:
VERSION_TAG
: a tag da versão do modelo a ser consultada. Adicione@
ao início da tag.Se você estiver usando um dos modelos
textembedding-gecko
em inglês com a Vertex AI, especifique uma das tags de versão, por exemplo,textembedding-gecko@003
, listada em Versões de modelo.O Google recomenda que você sempre especifique a tag de versão. Se você não especificar a tag de versão, o AlloyDB sempre vai usar a versão mais recente do modelo, o que pode levar a resultados inesperados.
SOURCE_TEXT_COLUMN
: o nome da coluna que armazena o texto a ser convertido em embeddings
Realizar pesquisa de similaridade
Você também pode usar a função embedding()
para converter o texto em um vetor. Você aplica o vetor ao operador vizinho mais próximo pgvector
, <->
, para encontrar as linhas do banco de dados com os embeddings mais semanticamente semelhantes.
Como embedding()
retorna uma matriz real
, é necessário transmitir a chamada
embedding()
para vector
para usar esses valores com operadores
pgvector
.
CREATE EXTENSION google_ml_integration;
CREATE EXTENSION IF NOT EXISTS vector;
SELECT * FROM TABLE
ORDER BY EMBEDDING_COLUMN::vector
<-> embedding('MODEL_IDVERSION_TAG', 'TEXT')
LIMIT ROW_COUNT
Usar tags de versão do modelo para evitar erros
O Google recomenda que você sempre use uma versão estável do modelo de embeddings escolhido. Na maioria dos modelos, isso significa definir explicitamente uma tag de versão.
Chamar a função embedding()
sem especificar a tag de versão do
modelo é sintaticamente válido, mas também é propenso a erros.
Se você omitir a tag de versão ao usar um modelo no Model Garden da Vertex AI, a Vertex AI usará 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 modelo da Vertex AI disponíveis, consulte Versões de modelo.
Uma determinada versão de modelo da Vertex AI sempre retorna a mesma
resposta embedding()
para uma determinada entrada de texto. Se você não especificar versões de modelo
nas chamadas para embedding()
, uma nova versão de modelo publicada
poderá mudar abruptamente o vetor retornado para uma determinada entrada,
causando erros ou outros comportamentos inesperados nos seus apps.
Para evitar esses problemas, sempre especifique a versão do modelo.
Resolver problemas
ERRO: modelo não encontrado para model_id
Mensagem de erro
Quando você tenta gerar uma incorporação usando a função embedding()
ou google_ml.embedding()
, ocorre o seguinte erro:
ERROR: 'Model not found for model_id:
Correção recomendada
Faça upgrade da extensão
google_ml_integration
e tente gerar as inclusões novamente.ALTER EXTENSION google_ml_integration UPDATE;
Você também pode excluir a extensão e criar novamente.
DROP extension google_ml_integration; CREATE EXTENSION google_ml_integration;
Se você gerar embeddings usando a função
google_ml.embedding()
, verifique se o modelo está registrado e se você está usando omodel_id
correto na consulta.