A extensão google_ml_integration inclui funções de embedding em dois namespaces diferentes: public e google_ml. Esta página descreve como gerar embeddings de texto usando funções desses namespaces.
A função embedding() no esquema public pode ser usada com qualquer modelo de embedding da Plataforma de Agentes do Gemini Enterprise sem registrar o endpoint. Se você quiser transmitir informações personalizadas, como o tipo de tarefa, registre o endpoint e use a google_ml.embedding() função no esquema google_ml. Para mais informações sobre como registrar um endpoint, consulte Registrar um modelo.
Como os embeddings funcionam
Imagine um banco de dados em execução no AlloyDB com as seguintes características:
O banco de dados contém uma tabela,
items. Cada linha nesta tabela descreve um item que sua empresa vende.A tabela
itemscontém uma coluna,complaints. Essa colunaTEXTarmazena reclamações de compradores registradas sobre cada item.O banco de dados se integra ao Model Garden, concedendo acesso aos modelos em inglês
gemini-embedding-001.
Embora esse banco de dados armazene reclamações sobre itens, elas são armazenadas como texto simples, dificultando a consulta. Por exemplo, para saber quais itens têm mais reclamações de clientes que receberam a cor errada do produto, realize consultas SQL comuns na tabela, procurando várias correspondências de palavras-chave. No entanto, essa abordagem só corresponde a linhas que contêm essas palavras-chave exatas.
Por exemplo, uma consulta SQL básica, como SELECT * FROM item WHERE complaints LIKE
"%wrong color%", não retorna uma linha em que o campo complaints contém apenas
The picture shows a blue one, but the one I received was red.
Consultas SQL que usam embeddings com tecnologia LLM podem ajudar a retornar respostas semanticamente semelhantes para essas consultas. Ao
aplicar embeddings, é possível consultar a tabela neste exemplo para itens em que as
reclamações têm semelhança semântica com um determinado prompt de texto, como It was the
wrong color.
Para a geração básica de embeddings, selecione um dos esquemas a seguir.
Antes de começar
Para permitir que o AlloyDB gere embeddings, faça o seguinte:
- Conecte-se ao banco de dados usando
psqlou o AlloyDB para PostgreSQL Studio como o usuáriopostgres. Verifique se a extensão
google_ml_integrationestá instalada.Para verificar a versão da extensão com o seguinte comando:
SELECT extversion FROM pg_extension WHERE extname = 'google_ml_integration';Se você precisar atualizar a extensão, use o comando
ALTER EXTENSION google_ml_integration UPDATE;.Antes de gerar embeddings de um banco de dados do AlloyDB, configure o AlloyDB para funcionar com a Agent Platform. Para mais informações, consulte Integrar seu banco de dados à Plataforma de Agentes.
Conceda permissões aos usuários do banco de dados para gerar embeddings.
Para gerar embeddings, conceda a permissão
EXECUTEna funçãogoogle_ml.embeddingao usuário:\c 'DB_NAME'; GRANT EXECUTE ON FUNCTION google_ml.embedding TO 'USER_NAME';Substitua:
DB_NAME: o nome do banco de dados em que as permissões são concedidas.
USER_NAME: o nome do usuário para quem as permissões são concedidas.
Gerar embeddings
Use a função SQL google_ml.embedding() para chamar modelos de embedding de texto.
Para chamar o modelo e gerar embeddings, execute a seguinte consulta:
SELECT
google_ml.embedding(
model_id => 'MODEL_ID',
content => 'CONTENT');
Substitua:
MODEL_ID: o ID do modelo qualificado. Por exemplo,gemini-embedding-001.CONTENT: o texto a ser traduzido em um embedding de vetor.
Exemplos de geração de embeddings
Alguns exemplos de como gerar embeddings usando o endpoint de modelo registrado são listados nesta seção.
Modelos de embedding do Gemini
Para gerar embeddings para um endpoint de modelo gemini-embedding-001 registrado, execute a seguinte instrução:
SELECT
google_ml.embedding(
model_id => 'gemini-embedding-001',
content => 'AlloyDB is a managed, cloud-hosted SQL database service');
Se o cluster do AlloyDB e o endpoint da Plataforma de Agentes do Gemini Enterprise estiverem em projetos diferentes, siga estas etapas:
Execute a seguinte instrução
CALL.CALL google_ml.create_model( model_id => 'gemini-embedding-001', model_request_url => 'https://REGION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/REGION_ID/publishers/google/models/gemini-embedding-001:predict', model_provider => 'google', model_type => 'text_embedding', model_auth_type => 'alloydb_service_agent_iam', model_in_transform_fn => 'google_ml.vertexai_text_embedding_input_transform', model_out_transform_fn => 'google_ml.vertexai_text_embedding_output_transform' );Para gerar embeddings para um endpoint de modelo
gemini-embedding-001registrado, execute a seguinte instrução:SELECT google_ml.embedding( model_id => 'gemini-embedding-001', content => 'AlloyDB is a managed, cloud-hosted SQL database service');
Modelo de embedding do OpenAI
Para gerar embeddings para um endpoint de modelo registrado text-embedding-ada-002pelo OpenAI, execute a seguinte instrução:
SELECT
google_ml.embedding(
model_id => 'text-embedding-ada-002',
content => 'e-mail spam');
Para gerar embeddings para endpoints de modelo text-embedding-3-small ou text-embedding-3-large registrados pelo OpenAI, execute a seguinte instrução:
SELECT
google_ml.embedding(
model_id => 'text-embedding-3-small',
content => 'Vector embeddings in AI');
A seguir
- Executar pesquisas de semelhança vetorial.
- Aprenda a criar um assistente de compras inteligente com o AlloyDB, o pgvector e o gerenciamento de endpoints de modelo.
- Criar índices e vetores de consulta.
- Aprenda um exemplo de fluxo de trabalho de embedding.