Esta página mostra um exemplo de fluxo de trabalho que demonstra como a função embedding()
funciona com os dados armazenados na tabela e os recursos pgvector
. O exemplo
usa uma entrada de texto simples para buscar um resultado de um banco de dados que depende da análise semântica
de significado do texto orientada por modelo de linguagem grande (LLM).
Exemplo de cenário
Imagine um banco de dados em execução no AlloyDB com os seguintes aspectos:
O banco de dados contém uma tabela,
items
. Cada linha nesta tabela descreve um item que sua empresa vende.A tabela
items
contém uma coluna,complaints
. Essa colunaTEXT
armazena as reclamações do comprador registradas sobre cada item.O banco de dados se integra ao Model Garden da Vertex AI, concedendo acesso aos modelos em inglês do
text-embedding-005
.
Embora esse banco de dados armazene reclamações sobre itens, elas são armazenadas como texto simples, dificultando a consulta. Por exemplo, se você quiser 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 corresponde apenas às 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 preencher essa lacuna. 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 comando de texto, como "Era a cor errada".
As etapas a seguir mostram como ativar isso no exemplo de configuração descrito anteriormente.
Antes de começar
Verifique se você atende aos seguintes requisitos:
Extensão de banco de dados necessária
Verifique se as extensões abaixo estão instaladas no seu banco de dados do AlloyDB.
Extensão
google_ml_integration
, versão1.2
ou mais recenteExtensão
vector
, versão0.5.0.google-1
ou mais recente
Para mais informações sobre como instalar e gerenciar extensões, consulte Configurar extensões de banco de dados.
- 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 text-embedding-005
baseado na nuvem, você precisa
integrar seu banco de dados à Vertex AI.
Preparar a tabela
Antes de executar consultas baseadas em LLM no conteúdo da tabela items
, você precisa
preparar a tabela para armazenar e indexar embeddings com base nos seus dados
atuais.
Criar uma coluna para armazenar embeddings
Adicione uma coluna à tabela para armazenar os embeddings.
ALTER TABLE items ADD COLUMN complaint_embedding vector(768);
Este exemplo especifica 768
como um argumento, porque esse é o número de
dimensões aceitas pelos modelos em inglês text-embedding-005
. Para mais informações, consulte Gerar um embedding.
O exemplo aplica o tipo de dados vector
à coluna para facilitar o uso de funções e operadores pgvector
com os valores.
Preencha a nova coluna
Se você já tiver embeddings no formato CSV, siga as etapas em Armazenar embeddings de vetor para armazenar os embeddings.
Opcionalmente, use a função embedding()
para preencher essa nova coluna com embeddings caso você tenha texto armazenado na coluna complaints
. Neste
exemplo de configuração,
o AlloyDB gera os embeddings usando o
modelo text-embedding
, versão 005
.
UPDATE items SET complaint_embedding = embedding('text-embedding-005', complaints);
Este exemplo transmite implicitamente o valor de retorno real[]
de embedding()
em um valor vector
,
para armazenar o valor na coluna vector
criada anteriormente.
Criar 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 ivf (complaint_embedding vector_l2_ops)
WITH (lists = 20, quantizer = 'SQ8');
Para mais informações sobre como criar índices de vizinhos mais próximos aproximados, consulte Indexação.
Executar consultas com tecnologia de LLMs com texto fornecido
Agora é possível fazer consultas semânticas de vizinhos mais próximos na tabela items
. A consulta a seguir usa o operador <->
fornecido por pgvector
para classificar as linhas da tabela com base na proximidade semântica do texto It was the wrong color
e retornar as dez principais reclamações. A consulta mostra os valores id
e name
da primeira linha classificada.
SELECT id, name FROM items
ORDER BY complaint_embedding::vector
<-> embedding('text-embedding-005', 'It was the wrong color') LIMIT 10;
A seguir
- Saiba como criar apps com tecnologia de IA nos bancos de dados do Google Cloud usando pgvector, LLMs e LangChain.
- Aprenda a criar um assistente de compras inteligentes com o AlloyDB, o pgvector e o gerenciamento de endpoints do modelo.