Halaman ini memberikan contoh alur kerja yang menunjukkan cara kerja fungsi embedding()
bersama dengan data yang disimpan dalam tabel dan fitur pgvector
. Contoh ini
menggunakan input teks biasa untuk mengambil hasil dari database yang mengandalkan penguraian semantik yang didorong oleh
model bahasa besar (LLM) dari makna teks.
Contoh skenario
Bayangkan database yang berjalan di AlloyDB dengan aspek berikut:
Database berisi tabel,
items
. Setiap baris dalam tabel ini menjelaskan item yang dijual oleh bisnis Anda.Tabel
items
berisi kolom,complaints
. KolomTEXT
ini menyimpan keluhan pembeli yang dicatat tentang setiap item.Database ini terintegrasi dengan Model Garden Vertex AI, sehingga memberinya akses ke model bahasa Inggris
textembedding-gecko
.
Meskipun database ini menyimpan keluhan tentang item, keluhan ini disimpan sebagai teks biasa, sehingga sulit untuk dikueri. Misalnya, jika ingin melihat item mana yang paling banyak menerima keluhan dari pelanggan yang menerima merchandise dengan warna yang salah, Anda dapat menjalankan kueri SQL biasa pada tabel, 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 yang kolom complaints
-nya hanya berisi
The picture shows a blue one, but the one I received was red
.
Kueri SQL yang menggunakan penyematan yang didukung LLM dapat membantu menjembatani kesenjangan ini. Dengan menerapkan penyematan, Anda dapat membuat kueri tabel dalam contoh ini untuk item yang keluhannya memiliki kesamaan semantik dengan perintah teks tertentu, seperti "Warnanya salah".
Langkah-langkah berikut menunjukkan cara mengaktifkannya dalam contoh penyiapan yang dijelaskan sebelumnya.
Sebelum memulai
Pastikan Anda memenuhi persyaratan berikut:
Ekstensi database yang diperlukan
Pastikan ekstensi berikut telah diinstal di database AlloyDB Anda.
google_ml_integration
ekstensiEkstensi
vector
, versi0.5.0.google-1
atau yang lebih baru
Untuk informasi selengkapnya tentang cara menginstal dan mengelola ekstensi, lihat Mengonfigurasi ekstensi database.
- Tetapkan flag database
google_ml_integration.enable_model_support
keoff
.
Menyiapkan akses model
Sebelum dapat membuat penyematan dari database AlloyDB, Anda harus mengonfigurasi AlloyDB agar berfungsi dengan model penyematan teks.
Untuk menggunakan model textembeddings-gecko
berbasis cloud, Anda perlu
mengintegrasikan database dengan
Vertex AI.
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 penyematan
Tambahkan kolom ke tabel untuk menyimpan penyematan.
ALTER TABLE items ADD COLUMN complaint_embedding vector(768);
Contoh ini menentukan 768
sebagai argumen, karena itu adalah jumlah dimensi yang didukung oleh model bahasa Inggris textembedding-gecko
. Untuk mengetahui informasi selengkapnya, lihat
Membuat penyematan.
Contoh ini menerapkan jenis data vector
ke kolom untuk memudahkan penggunaan
fungsi dan operator pgvector
dengan nilainya.
Isi kolom baru
Jika Anda sudah memiliki penyematan dalam format CSV
, ikuti langkah-langkah di Menyimpan penyematan vektor untuk menyimpan penyematan.
Secara opsional, gunakan fungsi embedding()
untuk mengisi kolom baru ini dengan
penyematan jika Anda memiliki teks yang disimpan di kolomcomplaints
. Dalam
contoh penyiapan ini,
AlloyDB membuat penyematan menggunakan
model textembedding-gecko
, versi 003
.
UPDATE items SET complaint_embedding = embedding('textembedding-gecko@003', complaints);
Contoh ini secara implisit mentransmisikan nilai return real[]
dari embedding()
menjadi nilai vector
,
untuk menyimpan nilai ke dalam kolom vector
yang dibuat sebelumnya.
Membuat indeks
Untuk meningkatkan performa, tambahkan indeks ke items
yang menggunakan
teknik kuantisasi skalar.
CREATE INDEX complaint_embed_idx ON items
USING ivf (complaint_embedding vector_l2_ops)
WITH (lists = 20, quantizer = 'SQ8');
Untuk informasi selengkapnya tentang cara membuat indeks perkiraan tetangga terdekat, lihat Pengindeksan.
Menjalankan kueri yang didukung LLM dengan teks yang disediakan
Anda kini dapat membuat kueri tetangga terdekat semantik di tabel items
. Kueri
berikut menggunakan operator <->
yang disediakan oleh pgvector
untuk mengurutkan
baris tabel berdasarkan kedekatan semantik dengan teks It was the wrong color
dan menampilkan sepuluh keluhan teratas. Kueri menampilkan nilai id
dan name
dari baris pertama yang diurutkan.
SELECT id, name FROM items
ORDER BY complaint_embedding::vector
<-> embedding('textembedding-gecko@003', 'It was the wrong color') LIMIT 10;
Langkah selanjutnya
- Untuk contoh alur kerja lain yang melibatkan AlloyDB dan
pgvector
, lihat Mem-build aplikasi yang didukung teknologi AI di database Google Cloud menggunakan pgvector, LLM, dan LangChain.