Halaman ini memberikan contoh alur kerja yang menunjukkan cara kerja fungsi embedding()
dengan data yang disimpan dalam tabel Anda dan pgvector
fungsi kueri. Contoh
menggunakan input teks biasa untuk mengambil hasil dari database yang
penguraian semantik berbasis model bahasa (LLM) berdasarkan makna teks.
Contoh skenario alur kerja penyematan
Bayangkan database yang berjalan di Cloud SQL untuk PostgreSQL dengan aspek berikut:
Database berisi tabel:
items
. Setiap baris dalam tabel ini mendeskripsikan yang dijual oleh 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, yang memberinya akses ke LLM
textembedding-gecko
.
Meskipun {i>database<i} ini menyimpan keluhan tentang item, keluhan ini disimpan sebagai teks biasa, sehingga membuatnya sulit untuk dikueri. Misalnya, jika Anda ingin untuk melihat item mana yang paling banyak dikeluhkan oleh pelanggan yang menerima salah warna barang dagangan, maka Anda dapat melakukan kueri SQL biasa pada tabel, mencari berbagai kecocokan kata kunci. Namun, pendekatan ini hanya cocok baris yang berisi kata kunci yang sama persis tersebut.
Misalnya, kueri SQL dasar seperti SELECT * FROM item WHERE complaints LIKE
"%wrong color%"
tidak menampilkan baris yang hanya berisi kolom complaints
The picture shows a blue one, but the one I received was red
.
Kueri SQL yang menggunakan embeddings yang didukung LLM dapat membantu menjembatani kesenjangan ini. Menurut menerapkan embedding, Anda dapat melakukan kueri tabel dalam contoh ini keluhan memiliki kemiripan semantik dengan perintah teks tertentu, seperti "Ini adalah salah warna".
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 embeddings berdasarkan
layanan otomatis dan data skalabel.
Membuat kolom untuk menyimpan embeddings
Menambahkan kolom ke tabel untuk menyimpan embeddings.
ALTER TABLE items ADD COLUMN complaint_embedding vector(768);
Contoh ini menggunakan 768
sebagai argumen karena itulah jumlah dimensi yang didukung LLM textembedding-gecko
. Untuk informasi selengkapnya, lihat
Membuat embedding.
Contoh ini menerapkan jenis data vector
ke kolom untuk menyederhanakan penggunaan fungsi dan operator pgvector
dengan nilai kolom.
Isi kolom baru
Gunakan fungsi embedding()
untuk mengisi kolom baru ini dengan penyematan berbasis
nilai teks setiap baris yang muncul di kolom complaints
. Dalam contoh ini,
Cloud SQL menghasilkan embeddings menggunakan LLM dengan ID
textembedding-gecko
, versi 001
.
UPDATE items SET complaint_embedding = embedding('textembedding-gecko@001', complaints);
Contoh ini mentransmisikan nilai real[]
yang ditampilkan dari 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
. Indeks ini menggunakan atribut
teknik kuantisasi skalar yang ditunjukkan dalam artikel Membuat indeks tetangga terdekat yang dioptimalkan.
CREATE INDEX complaint_embed_idx ON items
USING ivf (complaint_embedding vector_l2_ops)
WITH (lists = 20, quantizer = 'SQ8');
Untuk informasi selengkapnya tentang membuat indeks perkiraan tetangga terdekat, lihat Mengindeks.
Menjalankan kueri yang didukung LLM dengan teks yang disediakan
Anda sekarang dapat membuat kueri semantik tetangga terdekat pada tabel items
. Tujuan
Kueri berikut menggunakan operator <->
yang disediakan oleh pgvector
untuk menyelesaikan tindakan berikut:
- Urutkan baris tabel pada kedekatan semantik dengan teks
It was the wrong color
. - Kembalikan sepuluh keluhan teratas.
Kueri menampilkan nilai id
dan name
dari baris pertama yang diurutkan.
SELECT id, name FROM items
ORDER BY complaint_embedding
<-> embedding('textembedding-gecko@001', 'It was the wrong color')::vector LIMIT 10;