本頁說明如何產生及儲存向量嵌入項目。如需總覽,請參閱「向量嵌入儲存空間」。
事前準備
您必須擁有 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]')));
更新/插入向量嵌入
使用 INSERT
或 UPDATE
運算,搭配 string_to_vector
函式在資料表中新增向量嵌入欄,請使用下列語法。
在下列陳述式中,使用了上插/上修陳述式,以包含三個維度的向量嵌入資料,插入或更新嵌入資料欄。
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 向量搜尋簡介。
- 瞭解如何在執行個體上啟用及停用向量嵌入項目。
- 瞭解如何建立向量索引。
- 瞭解如何針對向量嵌入執行搜尋。