이 페이지에서는 벡터 임베딩을 생성하고 저장하는 방법을 설명합니다. 개요는 벡터 임베딩 스토리지를 참고하세요.
시작하기 전에
벡터 데이터베이스 플래그가 사용 설정된 Cloud SQL 인스턴스가 있어야 합니다.
행 데이터를 기반으로 벡터 임베딩 생성
Vertex AI 또는 OpenAI와 같은 텍스트 임베딩 API를 사용하여 지정된 행 데이터에 대해 벡터 임베딩을 생성할 수 있습니다. Cloud SQL 벡터 임베딩에는 모든 텍스트 임베딩 API를 사용할 수 있습니다. 하지만 쿼리 문자열 벡터 생성을 위해 동일한 텍스트 임베딩 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에 벡터 임베딩을 저장하기 위한 예시 문을 제공합니다.
벡터 임베딩 열로 새 테이블 만들기
VECTOR
데이터 유형을 사용하는 열에 CREATE TABLE
문을 사용합니다.
다음 구문을 사용하여 테이블을 만듭니다.
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
: 임베딩에 사용할 차원 수입니다.
다음 예에서 임베딩 열에는 3개의 측정기준이 있는 벡터가 있습니다. 이 열에 저장된 데이터의 데이터 유형은 VARBINARY
입니다.
CREATE TABLE books(
id INTEGER PRIMARY KEY AUTO_INCREMENT, title VARCHAR(60), embedding VECTOR(3) USING VARBINARY);
기존 테이블에 벡터 임베딩 열 추가
ALTER TABLE
문을 사용하여 기존 테이블에 벡터 임베딩 열을 추가합니다. 열은 VECTOR
데이터 유형을 사용하여 임베딩을 저장해야 합니다.
다음 예에서는 3차원 벡터가 있는 임베딩 열이 테이블에 삽입됩니다. 이 열에 저장된 데이터의 데이터 유형은 VARBINARY
입니다.
ALTER TABLE books
ADD COLUMN embedding
VECTOR(3)
USING VARBINARY;
벡터 임베딩 삽입
INSERT
를 string_to_vector
함수와 함께 사용하여 테이블에 벡터 임베딩 값을 삽입합니다.
다음 예에서는 3차원 벡터가 임베딩 열에 삽입됩니다.
INSERT INTO books
(
title,
embedding)
VALUES (('book title', string_to_vector('[1,2,3]')));
여러 벡터 임베딩 삽입
string_to_vector
함수와 함께 INSERT
를 사용하여 쉼표로 구분된 벡터 임베딩 목록을 삽입합니다.
다음 문에서 각 임베딩은 3차원 벡터를 포함하고 있으며 임베딩 열에 삽입됩니다.
INSERT INTO books
(
title,
embedding)
VALUES
(
(
'book title',
string_to_vector('[1,2,3]')),
('book title', string_to_vector('[4,5,6]')));
벡터 임베딩 삽입/업데이트(upsert)
string_to_vector
함수를 사용하여 테이블에 INSERT
또는 UPDATE
연산을 적용하여 다음 문법을 사용하여 벡터 임베딩 열을 추가합니다.
다음 문에서 upsert는 3차원 벡터가 포함된 임베딩으로 임베딩 열을 삽입하거나 업데이트하는 데 사용됩니다.
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]');
벡터 임베딩 업데이트
string_to_vector
함수와 함께 UPDATE
를 사용하여 벡터 임베딩을 업데이트합니다.
다음 문에서 UPDATE
는 임베딩 열을 3차원 벡터로 업데이트하는 데 사용됩니다.
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;
벡터 임베딩 삭제
string_to_vector
함수와 함께 DELETE
를 사용하여 테이블에서 벡터 임베딩을 삭제합니다. 벡터 색인이 있는 경우 먼저 삭제해야 합니다. 자세한 내용은 벡터 색인 삭제를 참고하세요.
다음 문에서 DELETE
는 임베딩 열의 값을 삭제하는 데 사용됩니다.
DELETE FROM books
WHERE embedding = string_to_vector('[1,2,3]');
다음 단계
- Cloud SQL의 벡터 검색에 관한 개요를 읽어보세요.
- 인스턴스에서 벡터 임베딩을 사용 설정 및 중지하는 방법을 알아보세요.
- 벡터 색인을 만드는 방법 알아보기
- 벡터 임베딩에서 검색하는 방법을 알아보세요.