本页介绍了如何生成和存储向量嵌入。如需大致了解,请参阅向量嵌入存储。
准备工作
您需要有一个启用了矢量数据库标志的 Cloud SQL 实例。
根据行数据生成向量嵌入
您可以使用文本嵌入 API(例如 Vertex AI 或 OpenAI)针对给定行的数据生成向量嵌入。您可以将任何文本嵌入 API 与 Cloud SQL 向量嵌入搭配使用。但是,您必须使用相同的文本嵌入 API 进行查询字符串向量生成。您不能将不同的 API 组合用于源数据和查询向量化。
例如,您可以通过 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()
存储向量嵌入
本部分提供了用于在 Cloud SQL 中存储向量嵌入的示例语句。
创建包含向量嵌入列的新表
将 CREATE TABLE
语句与使用 VECTOR
数据类型的列搭配使用。
使用以下语法创建表:
CREATE TABLE TABLE_NAME(
id INTEGER
PRIMARY KEY
AUTO_INCREMENT,
title VARCHAR(60),
EMBEDDING_COLUMN_NAME
VECTOR(VECTOR_DIMENSIONS)
USING VARBINARY);
替换以下参数:
TABLE_NAME
:您要存储嵌入的的表的名称。EMBEDDING_COLUMN_NAME
:存储嵌入的列的名称。VECTOR_DIMENSIONS
:要为嵌入使用的维度数。
在以下示例中,嵌入列包含一个三维向量。此列中存储的数据具有 VARBINARY
数据类型。
CREATE TABLE books(
id INTEGER PRIMARY KEY AUTO_INCREMENT, title VARCHAR(60), embedding VECTOR(3) USING VARBINARY);
将向量嵌入列添加到现有表中
使用 ALTER TABLE
语句将向量嵌入列添加到现有表中。该列必须使用 VECTOR
数据类型来存储嵌入。
在以下示例中,系统会将包含三维向量的嵌入列插入表中。此列中存储的数据具有 VARBINARY
数据类型。
ALTER TABLE books
ADD COLUMN embedding
VECTOR(3)
USING VARBINARY;
插入向量嵌入
将 INSERT
与 string_to_vector
函数结合使用,将矢量嵌入值插入表中。
在以下示例中,系统会将一个三维向量插入到嵌入列中。
INSERT INTO books
(
title,
embedding)
VALUES (('book title', string_to_vector('[1,2,3]')));
插入多个向量嵌入
将 INSERT
与 string_to_vector
函数结合使用,以插入以英文逗号分隔的向量嵌入列表。
在以下语句中,两个嵌入(每个嵌入包含一个三维向量)会被插入到嵌入列中。
INSERT INTO books
(
title,
embedding)
VALUES
(
(
'book title',
string_to_vector('[1,2,3]')),
('book title', string_to_vector('[4,5,6]')));
更新/插入向量嵌入
使用 string_to_vector
函数对表使用 INSERT
或 UPDATE
运算,以使用以下语法添加矢量嵌入列。
在以下语句中,更新/插入操作用于使用包含三维向量的嵌入插入或更新嵌入列。
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]');
更新向量嵌入
将 UPDATE
与 string_to_vector
函数搭配使用,以更新向量嵌入。
在以下语句中,UPDATE
用于使用三维向量更新嵌入列。
UPDATE books
SET embedding = string_to_vector('[7,8,9]')
WHERE id = 1;
检索向量嵌入
如需检索向量嵌入,请使用 Cloud SQL vector_to_string
函数以及嵌入的名称。
在以下语句中,系统会检索嵌入列以供查看。
SELECT vector_to_string(embedding) FROM books WHERE id = 1;
删除向量嵌入
将 DELETE
与 string_to_vector
函数搭配使用,可从表中移除向量嵌入。如果存在向量索引,您必须先将其删除。如需了解详情,请参阅删除矢量索引。
在以下语句中,DELETE
用于删除嵌入列中的值。
DELETE FROM books
WHERE embedding = string_to_vector('[1,2,3]');
后续步骤
- 阅读 Cloud SQL 上的向量搜索概览。
- 了解如何在实例中启用和停用向量嵌入。
- 了解如何创建矢量索引。
- 了解如何对向量嵌入执行搜索。