Contoh alur kerja penyematan

Pilih versi dokumentasi:

Halaman ini memberikan contoh alur kerja yang menunjukkan cara kerja fungsi embedding() bersama dengan data yang disimpan dalam tabel dan fitur pgvector. Contoh menggunakan input teks biasa untuk mengambil hasil dari database yang mengandalkan penguraian semantik berbasis model bahasa besar (LLM) atas 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 items berisi kolom, complaints. Kolom TEXT ini menyimpan keluhan pembeli yang dicatat tentang setiap item.

  • Database ini terintegrasi dengan Model Garden Vertex AI, sehingga memberikan akses ke model berbahasa Inggris text-embedding.

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 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 yang kolom complaints-nya hanya berisi The picture shows a blue one, but the one I received was red.

Kueri SQL 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 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 diinstal di database AlloyDB Anda.

    • google_ml_integration ekstensi

    • ekstensi vector, versi 0.5.0.google-1 atau 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_support ke off.

Menyiapkan akses model

Sebelum dapat membuat embedding dari database AlloyDB, Anda harus mengonfigurasi AlloyDB agar berfungsi dengan model embedding teks.

Untuk menggunakan model text-embedding-005 berbasis cloud, Anda perlu mengintegrasikan database Anda 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 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 berbahasa Inggris text-embedding-005. Untuk mengetahui informasi selengkapnya, lihat Membuat embedding.

Contoh ini menerapkan jenis data vector ke kolom agar lebih mudah menggunakan fungsi dan operator pgvector dengan nilainya.

Isi kolom baru

Jika Anda 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 text-embedding, versi 005.

UPDATE items SET complaint_embedding = embedding('text-embedding-005', complaints);

Contoh ini secara implisit melakukan transmisi nilai yang ditampilkan 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 scann (complaint_embedding l2)
  WITH (num_leaves=20);

Untuk mengetahui informasi selengkapnya tentang cara membuat indeks ScaNN, lihat Membuat indeks dan vektor kueri.

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 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('text-embedding-005', 'It was the wrong color') LIMIT 10;

Langkah berikutnya