Membuat dan mengelola embedding vektor

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

Sebelum memulai

Anda harus memiliki instance Cloud SQL dengan flag database vektor yang 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 penyematan teks apa pun dengan penyematan vektor Cloud SQL. Namun, Anda harus menggunakan API penyematan teks 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 penyematan 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 penyematan.

Dalam contoh berikut, kolom penyematan memiliki vektor dengan tiga dimensi. Data yang disimpan di 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 penyematan 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 penyematan yang memiliki vektor dengan tiga dimensi disisipkan ke dalam tabel. Data yang disimpan di 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 penyematan vektor ke dalam tabel.

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

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, masing-masing berisi vektor dengan tiga dimensi dan disisipkan 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]')));

Memperbarui dan menyisipkan 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 memperbarui 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 dengan tiga dimensi.

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

Mengambil embedding vektor

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

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 penyematan.

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

Langkah berikutnya