Memahami contoh alur kerja penyematan

Halaman ini memberikan contoh alur kerja yang menunjukkan cara kerja fungsi mysql.ml_embedding() dengan data yang disimpan dalam tabel Anda dan fungsi kueri mysql vector. Contoh menggunakan input teks biasa untuk mengambil hasil dari database yang mengandalkan penguraian semantik berbasis model bahasa besar (LLM) atas makna teks.

Contoh skenario alur kerja penyematan

Bayangkan database yang berjalan di Cloud SQL untuk MySQL dengan aspek berikut:

  • Database berisi tabel: items. Setiap baris dalam tabel ini menjelaskan item yang dijual bisnis Anda.

  • Tabel items berisi kolom: complaints. Kolom ini menyimpan keluhan pembeli yang dicatat tentang setiap item sebagai teks biasa.

  • Database ini terintegrasi dengan Vertex AI Model Garden, sehingga memberikan akses ke LLM textembedding-gecko.

Meskipun database ini menyimpan keluhan tentang item, keluhan ini disimpan sebagai teks biasa, sehingga sulit untuk membuat kueri. Misalnya, jika Anda ingin melihat item mana yang paling banyak dikeluhkan oleh pelanggan yang menerima warna barang yang salah, Anda dapat melakukan kueri SQL biasa pada tabel, dengan mencari berbagai kecocokan kata kunci. Namun, pendekatan ini hanya mencocokkan baris yang berisi kata kunci persis tersebut.

Misalnya, kueri SQL dasar seperti SELECT * FROM item WHERE complaints LIKE "%wrong color%" tidak menampilkan baris dengan kolom complaints yang hanya berisi The picture shows a blue one, but the one I received was red.

Kueri SQL yang menggunakan embedding yang didukung LLM dapat membantu menjembatani kesenjangan ini. Dengan menerapkan penyematan, Anda dapat membuat kueri tabel dalam contoh ini untuk item yang keluhannya memiliki kemiripan semantik dengan perintah teks tertentu, seperti "Warnanya salah".

Langkah-langkah berikut menunjukkan cara mengaktifkannya dalam contoh skenario yang dijelaskan sebelumnya.

Menyiapkan tabel

Sebelum menjalankan kueri berbasis LLM pada konten tabel items, Anda harus menyiapkan tabel untuk menyimpan dan mengindeks penyematan berdasarkan data yang ada.

Membuat kolom untuk menyimpan embedding

Tambahkan kolom ke tabel untuk menyimpan embedding.

sql ALTER TABLE items ADD COLUMN complaint_embedding vector(768) using varbinary;

Contoh ini menentukan 768 sebagai argumen karena itulah jumlah dimensi yang didukung LLM textembedding-gecko. Untuk mengetahui informasi selengkapnya, lihat Membuat embedding.

Contoh ini menerapkan jenis data vector ke kolom untuk menyederhanakan penggunaan fungsi dan operator pgvector dengan nilai kolom.

Mengisi kolom baru

Gunakan fungsi mysql.ml_embedding() untuk mengisi kolom baru ini dengan embedding berdasarkan nilai teks setiap baris yang muncul di kolom complaints. Dalam contoh ini, Cloud SQL membuat sematan menggunakan LLM dengan ID textembedding-gecko, versi 004.

UPDATE items SET complaint_embedding = mysql.ml_embedding('text-embedding-005', complaints);
Contoh ini melakukan transmisi nilai hasil biner dari mysql.ml_embedding() menjadi nilai vector secara implisit untuk menyimpan nilai di kolom vector yang Anda buat di Membuat kolom untuk menyimpan penyematan.

Membuat indeks

Untuk meningkatkan performa, tambahkan indeks ke tabel items.

CREATE VECTOR INDEX complaint_embed_idx ON items(complaint_embedding)
  USING SCANN DISTANCE_MEASURE=COSINE;

Untuk mengetahui informasi selengkapnya tentang cara membuat indeks jenis ini, lihat Membuat indeks tetangga terdekat. Selain itu, untuk mengetahui informasi selengkapnya tentang menyetel indeks dengan menetapkan parameter, lihat Menyematkan kueri dan indeks.

Menjalankan kueri yang didukung LLM dengan teks yang diberikan

Sekarang Anda dapat membuat kueri neighbor terdekat semantik pada tabel items. Kueri berikut menggunakan fungsi approx_distance untuk menyelesaikan tindakan berikut:

  • Urutkan baris tabel berdasarkan kedekatan semantik dengan teks It was the wrong color.
  • Menampilkan sepuluh keluhan teratas.

Kueri menampilkan nilai id dan name dari baris pertama yang diurutkan.

SELECT mysql.ML_EMBEDDING('text-embedding-005', 'It was the wrong color') into @query_vector;

select id, name from items order by approx_distance(complaint_embedding , @query_vector,'distance_measure=cosine') limit 10;

Langkah berikutnya