1
embedding()
bekerja bersama
dengan data yang disimpan dalam tabel dan pgvector
fitur. Contoh ini menggunakan input teks biasa untuk mengambil hasil dari database yang mengandalkan penguraian semantik berbasis model bahasa besar (LLM) terhadap 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 bisnis Anda.Tabel
itemsberisi kolom,complaints. KolomTEXTini menyimpan keluhan pembeli yang dicatat tentang setiap item.Database terintegrasi dengan Vertex AI Model Garden, sehingga memberikan 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 Anda ingin melihat item mana yang paling banyak dikeluhkan pelanggan yang menerima merchandise dengan warna yang salah, Anda dapat menjalankan kueri SQL biasa pada tabel, dengan mencari berbagai kecocokan kata kunci. Namun, pendekatan ini hanya cocok dengan baris yang berisi kata kunci yang sama persis.
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 embedding yang didukung LLM dapat membantu mengatasi kesenjangan ini. Dengan menerapkan embedding, Anda dapat mengkueri tabel dalam contoh ini untuk item yang keluhannya memiliki kemiripan semantik dengan perintah teks tertentu, seperti "It was the wrong color".
Langkah-langkah berikut menunjukkan cara mengaktifkan hal ini dalam penyiapan contoh yang dijelaskan sebelumnya.
Sebelum memulai
Pastikan Anda memenuhi persyaratan berikut:
Ekstensi database yang diperlukan
Pastikan ekstensi berikut diinstal di database AlloyDB Anda.
Ekstensi
google_ml_integrationEkstensi
vector, versi0.5.0.google-1atau yang lebih baru
Untuk mengetahui informasi selengkapnya tentang cara menginstal dan mengelola ekstensi, lihat Mengonfigurasi ekstensi database.
- Tetapkan flag database
google_ml_integration.enable_model_supportkeoff.
Menyiapkan akses model
Sebelum dapat membuat embedding dari database AlloyDB, Anda harus mengonfigurasi AlloyDB agar dapat menggunakan model embedding teks.
Untuk menggunakan model textembeddings-gecko berbasis cloud, Anda harus
mengintegrasikan database dengan
dengan Vertex AI.
Menyiapkan tabel
Sebelum menjalankan kueri berbasis LLM pada konten tabel items, Anda harus menyiapkan tabel untuk menyimpan dan mengindeks embedding berdasarkan data yang ada.
Membuat kolom untuk menyimpan embedding
Tambahkan kolom ke tabel untuk menyimpan embedding.
ALTER TABLE items ADD COLUMN complaint_embedding vector(768);
Contoh ini menentukan 768 sebagai argumen, karena itulah jumlah dimensi yang didukung oleh model bahasa Inggris textembedding-gecko. Untuk mengetahui informasi selengkapnya, lihat
Membuat embedding.
Contoh ini menerapkan jenis data vector ke kolom untuk memudahkan penggunaan
pgvector fungsi dan operator dengan nilainya.
Mengisi kolom baru
Jika sudah memiliki embedding dalam format CSV, ikuti
langkah-langkah di Menyimpan embedding vektor untuk menyimpan embedding Anda.
Secara opsional, gunakan fungsi embedding() untuk mengisi kolom baru ini dengan embedding jika Anda memiliki teks yang disimpan di kolom complaints. Dalam penyiapan contoh ini, AlloyDB membuat embedding menggunakan model textembedding-gecko, versi 003.
UPDATE items SET complaint_embedding = embedding('textembedding-gecko@003', complaints);
Contoh ini secara implisit mentransmisikan nilai hasil real[] dari embedding() ke nilai vector, untuk menyimpan nilai ke 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 mengetahui informasi selengkapnya tentang cara membuat indeks tetangga terdekat perkiraan, lihat Pengindeksan.
Menjalankan kueri yang didukung LLM dengan teks yang disediakan
Anda kini dapat membuat kueri tetangga terdekat semantik pada 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 yang diurutkan pertama.
SELECT id, name FROM items
ORDER BY complaint_embedding::vector
<-> embedding('textembedding-gecko@003', 'It was the wrong color') LIMIT 10;
Langkah berikutnya
- Untuk contoh alur kerja lain yang melibatkan AlloyDB dan
pgvector, lihat Membangun aplikasi yang didukung AI di Google Cloud database menggunakan pgvector, LLM, dan LangChain.