Membuat dan mengelola embedding vektor

Halaman ini menjelaskan cara membuat dan menyimpan sematan vektor. Untuk ringkasan, lihat Penyimpanan embedding vektor.

Sebelum memulai

Anda harus memiliki instance Cloud SQL dengan flag database vektor diaktifkan.

Membuat embedding vektor berdasarkan data baris

Anda dapat membuat embedding vektor untuk data baris tertentu menggunakan API embedding teks seperti Vertex AI atau OpenAI. Anda dapat menggunakan API embedding teks apa pun dengan embedding vektor Cloud SQL. Namun, Anda harus menggunakan Text Embedding API yang sama untuk pembuatan vektor string kueri. Anda tidak dapat menggabungkan API yang berbeda untuk data sumber dan vektorisasi kueri.

Misalnya, Anda dapat membuat penyematan vektor dari 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()

Menyimpan embedding vektor

Bagian ini memberikan contoh pernyataan untuk menyimpan embedding vektor di Cloud SQL.

Membuat tabel baru dengan kolom penyematan vektor

Gunakan pernyataan CREATE TABLE dengan kolom yang menggunakan jenis data VECTOR.

Gunakan sintaksis berikut untuk membuat tabel:

CREATE TABLE TABLE_NAME(
  id INTEGER
  PRIMARY KEY
    AUTO_INCREMENT,
    title VARCHAR(60),
    EMBEDDING_COLUMN_NAME
      VECTOR(VECTOR_DIMENSIONS)
  USING VARBINARY);

Ganti parameter berikut:

  • TABLE_NAME: nama tabel tempat Anda ingin menyimpan penyematan.
  • EMBEDDING_COLUMN_NAME: nama kolom yang menyimpan penyematan.
  • VECTOR_DIMENSIONS: jumlah dimensi yang akan digunakan untuk embedding.

Dalam contoh berikut, kolom embedding memiliki vektor dengan tiga dimensi. Data yang disimpan dalam kolom ini memiliki jenis data VARBINARY.

CREATE TABLE books(
  id INTEGER PRIMARY KEY AUTO_INCREMENT, title VARCHAR(60), embedding VECTOR(3) USING VARBINARY);

Menambahkan kolom sematan vektor ke tabel yang ada

Gunakan pernyataan ALTER TABLE untuk menambahkan kolom penyematan vektor ke tabel yang ada. Kolom harus menggunakan jenis data VECTOR untuk menyimpan penyematan.

Dalam contoh berikut, kolom embedding yang memiliki vektor dengan tiga dimensi disisipkan ke dalam tabel. Data yang disimpan dalam kolom ini memiliki jenis data VARBINARY.

ALTER TABLE books
ADD COLUMN embedding
  VECTOR(3)
USING VARBINARY;

Menyisipkan embedding vektor

Gunakan INSERT dengan fungsi string_to_vector untuk menyisipkan nilai sematan vektor ke dalam tabel.

Dalam contoh berikut, vektor dengan tiga dimensi disisipkan ke dalam kolom embedding.

INSERT INTO books
  (
    title,
    embedding)
VALUES (('book title', string_to_vector('[1,2,3]')));

Menyisipkan beberapa embedding vektor

Gunakan INSERT dengan fungsi string_to_vector untuk menyisipkan daftar embedding vektor yang dipisahkan koma.

Dalam pernyataan berikut, dua penyematan, yang masing-masing berisi vektor dengan tiga dimensi dan dimasukkan ke dalam kolom penyematan.

INSERT INTO books
  (
    title,
    embedding)
VALUES
  (
    (
      'book title',
      string_to_vector('[1,2,3]')),
    ('book title', string_to_vector('[4,5,6]')));

Meng-upsert embedding vektor

Gunakan operasi INSERT atau UPDATE pada tabel dengan fungsi string_to_vector untuk menambahkan kolom penyematan vektor, menggunakan sintaksis berikut.

Dalam pernyataan berikut, upsert digunakan untuk menyisipkan atau mengupdate kolom embedding dengan embedding yang berisi vektor dengan tiga dimensi.

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]');

Memperbarui embedding vektor

Gunakan UPDATE dengan fungsi string_to_vector untuk memperbarui penyematan vektor.

Dalam pernyataan berikut, UPDATE digunakan untuk memperbarui kolom penyematan dengan vektor tiga dimensi.

UPDATE books
SET embedding = string_to_vector('[7,8,9]')
WHERE id = 1;

Mengambil embedding vektor

Untuk mengambil embedding vektor, gunakan fungsi vector_to_string Cloud SQL bersama dengan nama embedding.

Dalam pernyataan berikut, kolom penyematan diambil untuk dilihat.

SELECT vector_to_string(embedding) FROM books WHERE id = 1;

Menghapus penyematan vektor

Gunakan DELETE dengan fungsi string_to_vector untuk menghapus penyematan vektor dari tabel. Jika ada indeks vektor, Anda harus menghapusnya terlebih dahulu. Untuk mengetahui informasi selengkapnya, lihat Menghapus indeks vektor.

Dalam pernyataan berikut, DELETE digunakan untuk menghapus nilai di kolom embedding.

DELETE FROM books
WHERE embedding = string_to_vector('[1,2,3]');

Langkah berikutnya