Halaman ini memberikan contoh alur kerja yang menunjukkan cara kerja fungsi
embedding()
dengan data yang disimpan dalam tabel dan
pgvector
fungsi kueri.
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 PostgreSQL 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);
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 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 = embedding('text-embedding-005', complaints);
real[]
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
.
CREATE INDEX complaint_embed_idx ON items
USING hnsw (complaint_embedding vector_cosine_ops);
Untuk mengetahui informasi selengkapnya tentang cara membuat indeks jenis ini, lihat Membuat indeks tetangga terdekat. Selain itu, untuk mengetahui informasi selengkapnya tentang penyesuaian indeks dengan menetapkan parameter, lihat Mengirim kueri dan mengindeks sematan menggunakan pgvector
.
Menjalankan kueri yang didukung LLM dengan teks yang diberikan
Sekarang Anda dapat membuat kueri neighbor terdekat semantik pada tabel items
. Kueri
berikut menggunakan operator <->
yang pgvector
menyediakan
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 id, name FROM items
ORDER BY complaint_embedding
<-> embedding('text-embedding-005', 'It was the wrong color')::vector LIMIT 10;