Esta página apresenta um exemplo de fluxo de trabalho que demonstra como a função embedding()
funciona em conjunto com os dados armazenados em tabelas e a funcionalidade pgvector
. O exemplo usa a entrada de texto simples para obter um resultado de uma base de dados que se baseia na análise semântica do significado do texto orientada por um modelo de linguagem (conteúdo extenso).
Um cenário de exemplo
Imagine uma base de dados em execução no AlloyDB com os seguintes aspetos:
A base de dados contém uma tabela,
items
. Cada linha nesta tabela descreve um item que a sua empresa vende.A tabela
items
contém uma coluna,complaints
. Esta colunaTEXT
armazena as queixas dos compradores registadas sobre cada artigo.A base de dados integra-se com o Model Garden do Vertex AI, o que lhe dá acesso aos modelos em
text-embedding
inglês.
Apesar de esta base de dados armazenar queixas sobre artigos, estas queixas são armazenadas como texto simples, o que dificulta a consulta. Por exemplo, se quiser ver que artigos têm o maior número de reclamações de clientes que receberam a cor errada da mercadoria, pode executar consultas SQL normais na tabela, procurando várias correspondências de palavras-chave. No entanto, esta abordagem só corresponde a linhas que contenham essas palavras-chave exatas.
Por exemplo, uma consulta SQL básica, como SELECT * FROM item WHERE complaints LIKE
"%wrong color%"
, não devolve uma linha cujo campo complaints
contenha apenas The picture shows a blue one, but the one I received was red
.
As consultas SQL que usam incorporações com tecnologia de MDIs podem ajudar a colmatar esta lacuna. Ao aplicar incorporações, pode consultar a tabela neste exemplo para artigos cujas queixas tenham semelhança semântica com um comando de texto específico, como "Era a cor errada".
Os passos seguintes mostram como ativar esta opção na configuração de exemplo descrita anteriormente.
Antes de começar
Certifique-se de que cumpre os seguintes requisitos.
Extensão da base de dados necessária
Certifique-se de que as seguintes extensões estão instaladas na sua base de dados do AlloyDB.
Extensão
google_ml_integration
vector
, versão0.5.0.google-1
ou posterior
Para mais informações sobre a instalação e a gestão de extensões, consulte o artigo Configure extensões de base de dados.
- 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 do AlloyDB, tem de configurar o AlloyDB 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.
Prepare a tabela
Antes de executar consultas baseadas em MDIs no conteúdo da tabela items
, tem de preparar a tabela para armazenar e indexar incorporações com base nos seus dados existentes.
Crie uma coluna para armazenar incorporações
Adicione uma coluna à tabela para armazenar incorporações.
ALTER TABLE items ADD COLUMN complaint_embedding vector(768);
Este exemplo especifica 768
como argumento, porque esse é o número de dimensões suportadas pelos modelos em inglês text-embedding-005
. Para mais informações, consulte o artigo
Gere uma incorporação.
O exemplo aplica o tipo de dados vector
à coluna para facilitar a utilização de funções e operadores pgvector
com os respetivos valores.
Preencha a nova coluna
Se já tiver incorporações em formato CSV, siga os passos em Armazene incorporações de vetores para armazenar as suas incorporações.
Opcionalmente, use a função embedding()
para preencher esta nova coluna com incorporações, caso tenha texto armazenado na coluna complaints
. Neste exemplo de configuração, o AlloyDB gera as incorporações através do modelo text-embedding
, versão 005
.
UPDATE items SET complaint_embedding = embedding('text-embedding-005', complaints);
Este exemplo converte implicitamente o valor de retorno de real[]
embedding()
num valor vector
para armazenar o valor na coluna vector
criada anteriormente.
Crie um índice
Para melhorar o desempenho, adicione um índice a items
que use as técnicas de quantização escalar.
CREATE INDEX complaint_embed_idx ON items
USING scann (complaint_embedding l2)
WITH (num_leaves=20);
Para mais informações sobre como criar um índice ScaNN, consulte o artigo Crie índices e consulte vetores.
Executar consultas com tecnologia de MDIs/CEs com texto fornecido
Agora, pode fazer consultas semânticas de vizinhos mais próximos na tabela items
. A consulta seguinte usa o operador <->
fornecido por pgvector
para ordenar as linhas da tabela com base na proximidade semântica do texto It was the wrong color
e devolve as dez principais reclamações. A consulta apresenta os valores id
e name
da primeira linha ordenada.
SELECT id, name FROM items
ORDER BY complaint_embedding::vector
<-> embedding('text-embedding-005', 'It was the wrong color') LIMIT 10;
O que se segue?
- Para ver outro exemplo de fluxo de trabalho que envolve o AlloyDB e o
pgvector
, consulte o artigo Criar apps baseadas em IA em Google Cloud bases de dados com o pgvector, os MDIs e o LangChain.