Nesta página, descrevemos como gerar e armazenar incorporações de vetores. Para uma visão geral, consulte Armazenamento de embeddings de vetor.
Antes de começar
É preciso ter uma instância do Cloud SQL com as flags de banco de dados vetorial ativadas.
Gere embeddings de vetor com base nos dados das linhas
É possível gerar um embedding de vetor para os dados de uma determinada linha usando uma API de embedding de texto, como a Vertex AI ou a OpenAI. É possível usar qualquer API de embedding de texto com embeddings de vetor do Cloud SQL. No entanto, é necessário usar a mesma API de embedding de texto para gerar vetores de string de consulta. Não é possível combinar diferentes APIs para vetorização de consultas e dados de origem.
Por exemplo, é possível gerar um embedding de vetor pela Vertex AI:
from vertexai.language_models import TextEmbeddingModel
def text_embedding() -> list:
"""Text embedding with a Large Language Model."""
model = TextEmbeddingModel.from_pretrained("text-embedding-004")
embeddings = model.get_embeddings(["What is life?"])
for embedding in embeddings:
vector = embedding.values
print(f"Length of Embedding Vector: {len(vector)}")
return vector
if __name__ == "__main__":
text_embedding()
Armazenar embeddings de vetores
Nesta seção, você verá exemplos de instruções para armazenar embeddings de vetor no Cloud SQL.
Criar uma nova tabela com uma coluna de embeddings de vetor
Use a instrução CREATE TABLE
com uma coluna que usa o tipo de dados VECTOR
.
Use a seguinte sintaxe para criar a tabela:
CREATE TABLE TABLE_NAME(
id INTEGER
PRIMARY KEY
AUTO_INCREMENT,
title VARCHAR(60),
EMBEDDING_COLUMN_NAME
VECTOR(VECTOR_DIMENSIONS)
USING VARBINARY);
Substitua os seguintes parâmetros:
TABLE_NAME
: o nome da tabela em que você quer armazenar as incorporações.EMBEDDING_COLUMN_NAME
: o nome da coluna que armazena o embedding.VECTOR_DIMENSIONS
: o número de dimensões a serem usadas para o embedding.
No exemplo a seguir, a coluna de embedding tem um vetor com três dimensões. Os dados armazenados nessa coluna têm o tipo VARBINARY
.
CREATE TABLE books(
id INTEGER PRIMARY KEY AUTO_INCREMENT, title VARCHAR(60), embedding VECTOR(3) USING VARBINARY);
Adicionar uma coluna de embeddings de vetor a uma tabela já existente
Use a instrução ALTER TABLE
para adicionar uma coluna de embeddings de vetor a uma tabela
existente. A coluna precisa usar o tipo de dados VECTOR
para armazenar o embedding.
No exemplo a seguir, uma coluna de embedding que tem um vetor com três dimensões é inserida na tabela. Os dados armazenados nessa coluna têm o tipo VARBINARY
.
ALTER TABLE books
ADD COLUMN embedding
VECTOR(3)
USING VARBINARY;
Inserir um embedding de vetor
Use INSERT
com a função string_to_vector
para inserir valores de incorporação de vetor em uma tabela.
No exemplo a seguir, um vetor com três dimensões é inserido na coluna de embedding.
INSERT INTO books
(
title,
embedding)
VALUES (('book title', string_to_vector('[1,2,3]')));
Inserir vários embeddings de vetor
Use INSERT
com a
função string_to_vector
para inserir uma lista de embeddings de vetor separados por vírgulas.
Na instrução a seguir, dois embeddings, cada um contendo um vetor com três dimensões, são inseridos na coluna de embedding.
INSERT INTO books
(
title,
embedding)
VALUES
(
(
'book title',
string_to_vector('[1,2,3]')),
('book title', string_to_vector('[4,5,6]')));
Fazer upsert de um embedding de vetor
Use uma operação INSERT
ou UPDATE
em uma tabela com a função string_to_vector
para adicionar uma coluna de embedding de vetor usando a seguinte sintaxe.
Na instrução a seguir, um upsert é usado para inserir ou atualizar a coluna de embedding com um embedding que contém um vetor com três dimensões.
INSERT INTO books
(
id,
title,
embedding)
VALUES
(
(
1,
'book title',
string_to_vector('[1,2,3]')))
ON DUPLICATE KEY UPDATE embedding = string_to_vector('[1,2,3]');
Atualizar um embedding de vetor
Use UPDATE
com a
função string_to_vector
para atualizar um embedding de vetor.
Na instrução a seguir, UPDATE
é usado para atualizar a coluna de embedding com um vetor de três dimensões.
UPDATE books
SET embedding = string_to_vector('[7,8,9]')
WHERE id = 1;
Recuperar embeddings de vetor
Para recuperar embeddings de vetor, use a função vector_to_string
do Cloud SQL
junto com o nome do embedding.
Na instrução a seguir, a coluna de embedding é recuperada para visualização.
SELECT vector_to_string(embedding) FROM books WHERE id = 1;
Excluir um embedding de vetor
Use DELETE
com a
função string_to_vector
para remover um embedding de vetor de uma tabela. Se houver um índice vetorial, primeiro exclua-o. Para mais informações, consulte
Remover um índice vetorial.
Na instrução a seguir, DELETE
é usado para excluir o valor na coluna de incorporação.
DELETE FROM books
WHERE embedding = string_to_vector('[1,2,3]');
A seguir
- Leia a visão geral sobre a pesquisa vetorial no Cloud SQL.
- Saiba como ativar e desativar embeddings de vetores na sua instância.
- Saiba como criar índices de vetor.
- Saiba como fazer pesquisas em embeddings de vetores.