Pengantar embedding dan penelusuran vektor
Dokumen ini memberikan ringkasan tentang embedding dan penelusuran vektor di BigQuery. Penelusuran vektor adalah teknik untuk membandingkan objek serupa menggunakan embedding, dan digunakan untuk mendukung produk Google, termasuk Google Penelusuran, YouTube, dan Google Play. Anda dapat menggunakan penelusuran vektor untuk melakukan penelusuran semantik dalam skala besar, atau Anda dapat melakukan penelusuran hybrid yang menggabungkan penelusuran semantik dengan penelusuran leksikal (kata kunci). Saat menggunakan indeks vektor dengan penelusuran vektor, Anda dapat memanfaatkan teknologi dasar seperti pengindeksan file terbalik (IVF) dan algoritma ScaNN.
Penelusuran vektor dibuat berdasarkan embedding. Embedding adalah vektor numerik berdimensi tinggi yang merepresentasikan entity tertentu, seperti teks atau file audio. Model machine learning (ML) menggunakan embedding untuk mengenkode semantik tentang entity tersebut agar lebih mudah untuk dipahami dan dibandingkan. Misalnya, operasi umum dalam model pengelompokan, klasifikasi, dan rekomendasi adalah mengukur jarak antara vektor dalam ruang embedding untuk menemukan item yang paling mirip secara semantik.
Konsep kesamaan semantik dan jarak dalam ruang embedding ini ditunjukkan secara visual saat Anda mempertimbangkan bagaimana berbagai item dapat diplot. Misalnya, istilah-istilah seperti cat, dog, dan lion, yang semuanya mewakili jenis-jenis hewan, dikelompokkan berdekatan dalam ruang ini karena karakteristik semantik yang mereka miliki. Demikian pula, istilah seperti mobil, truk, dan istilah yang lebih umum kendaraan akan membentuk cluster lain. Hal ini ditunjukkan dalam gambar berikut:
Anda dapat melihat bahwa cluster hewan dan kendaraan diposisikan berjauhan satu sama lain. Pemisahan antara grup menggambarkan prinsip bahwa semakin dekat objek dalam ruang embedding, semakin mirip secara semantik, dan jarak yang lebih jauh menunjukkan perbedaan semantik yang lebih besar.
Kasus penggunaan
Kombinasi pembuatan embedding dan penelusuran vektor memungkinkan banyak kasus penggunaan yang menarik. Beberapa kemungkinan kasus penggunaan adalah sebagai berikut:
- Retrieval-augmented generation (RAG): Mengurai dokumen, melakukan penelusuran vektor pada konten, dan menghasilkan jawaban yang diringkas untuk pertanyaan bahasa alami menggunakan model Gemini, semuanya dalam BigQuery. Untuk notebook yang mengilustrasikan skenario ini, lihat Membangun aplikasi Penelusuran Vektor menggunakan BigQuery DataFrames.
- Merekomendasikan pengganti produk atau produk yang cocok: Tingkatkan aplikasi e-commerce dengan menyarankan alternatif produk berdasarkan perilaku pelanggan dan kesamaan produk.
- Analisis log: Membantu tim melakukan triase anomali dalam log secara proaktif dan mempercepat investigasi. Anda juga dapat menggunakan kemampuan ini untuk memperkaya konteks LLM, guna meningkatkan alur kerja deteksi ancaman, forensik, dan pemecahan masalah. Untuk notebook yang mengilustrasikan skenario ini, lihat Log Deteksi Anomali & Investigasi dengan Embedding Teks + Penelusuran Vektor BigQuery.
- Pengelompokan dan penargetan: Buat segmentasi audiens dengan presisi. Misalnya, jaringan rumah sakit dapat mengelompokkan pasien menggunakan catatan bahasa alami dan data terstruktur, atau pemasar dapat menargetkan iklan berdasarkan niat kueri. Untuk notebook yang mengilustrasikan skenario ini, lihat Create-Campaign-Customer-Segmentation.
- Resolusi entitas dan penghapusan duplikat: Bersihkan dan gabungkan data. Misalnya, perusahaan periklanan dapat menghapus duplikat data informasi identitas pribadi (PII), atau perusahaan real estate dapat mengidentifikasi alamat surat yang cocok.
Membuat embedding
Bagian berikut menjelaskan fungsi yang ditawarkan BigQuery untuk membantu Anda membuat atau menggunakan embedding.
Membuat embedding tunggal
Anda dapat menggunakan
fungsi AI.EMBED
dengan model embedding Gemini Enterprise Agent Platform untuk menghasilkan satu embedding
dari input Anda.
Fungsi AI.EMBED mendukung jenis input berikut:
- Data teks.
- Data gambar yang diwakili oleh nilai
ObjectRef.
Membuat tabel embedding
Anda dapat menggunakan
AI.GENERATE_EMBEDDING
untuk membuat tabel yang memiliki embedding untuk semua data dalam kolom tabel input Anda. Untuk semua jenis model yang didukung, AI.GENERATE_EMBEDDING
bekerja dengan data terstruktur dalam
tabel standar. Untuk model embedding multimodal, AI.GENERATE_EMBEDDING juga berfungsi dengan konten visual dari kolom tabel standar yang berisi nilai ObjectRef, atau dari tabel objek.
Untuk model jarak jauh, semua inferensi terjadi di Agent Platform. Untuk jenis model lainnya, semua inferensi terjadi di BigQuery. Hasilnya disimpan di BigQuery.
Gunakan topik berikut untuk mencoba pembuatan embedding di BigQuery ML:
- Buat teks,
gambar, atau
video menggunakan
fungsi
AI.GENERATE_EMBEDDING. - Membuat dan menelusuri embedding multimodal
- Melakukan penelusuran semantik dan retrieval-augmented generation
Pembuatan embedding otonom
Anda dapat menggunakan pembuatan embedding otonom untuk menyederhanakan proses pembuatan, pemeliharaan, dan pembuatan kueri embedding. BigQuery mengelola kolom embedding di tabel Anda berdasarkan kolom sumber. Saat Anda menambahkan atau mengubah data di kolom sumber, BigQuery akan otomatis membuat atau memperbarui kolom embedding untuk data tersebut menggunakan model embedding Agent Platform. Hal ini berguna jika Anda ingin mengizinkan BigQuery mengelola embedding saat data sumber diperbarui secara berkala.
Telusuri
Anda dapat menggunakan fungsi penelusuran berikut untuk melakukan penelusuran vektor semantik, atau penelusuran hybrid yang menggabungkan penelusuran semantik dengan penelusuran kata kunci leksikal:
VECTOR_SEARCH: Lakukan penelusuran vektor semantik atau penelusuran hibrid menggunakan SQL.AI.SEARCH: Lakukan penelusuran semantik atau hybrid untuk hasil yang mendekati string yang Anda berikan. Anda dapat menggunakan fungsi ini jika tabel Anda telah mengaktifkan pembuatan embedding otonom.AI.SIMILARITY: Membandingkan dua input dengan menghitung kemiripan kosinus antara embedding-nya. Fungsi ini berfungsi dengan baik jika Anda ingin melakukan sedikit perbandingan dan belum melakukan pra-komputasi embedding apa pun. Anda harus menggunakanVECTOR_SEARCHsaat performa sangat penting dan Anda bekerja dengan banyak embedding. Bandingkan fungsinya untuk memilih fungsi terbaik bagi kasus penggunaan Anda.
Secara opsional, Anda dapat membuat indeks vektor menggunakan pernyataan CREATE VECTOR INDEX.
Saat indeks vektor digunakan, fungsi VECTOR_SEARCH dan AI.SEARCH menggunakan teknik penelusuran Approximate Nearest Neighbor untuk meningkatkan performa penelusuran vektor, dengan konsekuensi mengurangi recall sehingga menampilkan hasil yang lebih mendekati. Tanpa indeks vektor, fungsi ini menggunakan penelusuran brute force untuk mengukur jarak setiap data. Anda juga dapat memilih untuk menggunakan brute force guna mendapatkan
hasil yang akurat meskipun indeks vektor tersedia.
Menangani penghentian penggunaan model embedding
Jika model embedding tidak digunakan lagi, Anda harus memigrasikan alur kerja ke model pengganti yang didukung sebelum model yang tidak digunakan lagi dinonaktifkan. Model berikut memiliki tanggal penghentian 1 April 2027:
text-embedding-005text-embeding-004text-multilingual-embedding-002multimodalembedding@001
Untuk mengetahui informasi selengkapnya tentang tanggal penghentian penggunaan model dan model pengganti, lihat Versi dan siklus proses model.
Embedding yang dihasilkan oleh model yang berbeda, atau oleh versi berbeda dari model yang sama, berada di ruang embedding yang terpisah dan umumnya tidak kompatibel secara matematis. Ketidakcocokan ini berlaku meskipun vektor memiliki jumlah dimensi yang sama. Membandingkan embedding dari berbagai model akan menghasilkan hasil penelusuran dan kesamaan yang tidak akurat.
Untuk bermigrasi ke model embedding pengganti, selesaikan langkah-langkah berikut:
- Buat ulang embedding dalam tabel yang ada menggunakan model pengganti sehingga semua embedding yang disimpan memiliki ruang embedding yang sama.
- Jika Anda menggunakan fungsi
AI.EMBEDatauAI.GENERATE_EMBEDDING, perbarui kueri atau model jarak jauh Anda untuk menggunakan model pengganti, lalu buat ulang embedding tabel Anda. - Jika Anda menggunakan pembuatan embedding otonom, hapus kolom embedding yang dihasilkan yang ada dan tambahkan kolom embedding yang dihasilkan yang menggunakan model pengganti.
- Jika Anda menggunakan fungsi
- Perbarui kueri atau pipeline yang menghasilkan embedding pada waktu penelusuran untuk menggunakan model pengganti yang sama dengan embedding tabel Anda.
- Setelah Anda membuat ulang embedding dalam tabel, buat ulang atau bangun ulang indeks vektor apa pun di kolom embedding.
Harga
Fungsi VECTOR_SEARCH dan AI.SEARCH serta pernyataan CREATE VECTOR INDEX menggunakan harga komputasi BigQuery.
Fungsi
VECTOR_SEARCHdanAI.SEARCH: Anda dikenai biaya untuk penelusuran kesamaan, menggunakan harga on-demand atau edisi.- On-demand: Anda akan dikenai biaya untuk jumlah byte yang dipindai dalam tabel dasar, indeks, dan kueri penelusuran.
Harga edisi: Anda akan dikenai biaya untuk slot yang diperlukan untuk menyelesaikan tugas dalam edisi pemesanan Anda. Penghitungan kesamaan yang lebih besar dan lebih kompleks akan dikenai biaya lebih besar.
Pernyataan
CREATE VECTOR INDEX: Pemrosesan yang diperlukan untuk membangun dan memuat ulang indeks vektor tidak dikenai biaya, selama ukuran total data tabel yang diindeks berada di bawah batas per organisasi. Untuk mendukung pengindeksan di luar batas ini, Anda harus menyediakan pemesanan sendiri untuk menangani tugas pengelolaan indeks.
Penyimpanan juga menjadi pertimbangan untuk embedding dan indeks. Jumlah byte yang disimpan sebagai embedding dan indeks akan dikenai biaya penyimpanan aktif.
- Indeks vektor akan dikenai biaya penyimpanan saat aktif.
- Anda dapat menemukan ukuran penyimpanan indeks menggunakan
tampilan
INFORMATION_SCHEMA.VECTOR_INDEXES. Jika indeks vektor belum mencapai cakupan 100%, Anda tetap akan dikenakan biaya untuk apa pun yang telah diindeks. Anda dapat memeriksa cakupan indeks menggunakan tampilanINFORMATION_SCHEMA.VECTOR_INDEXES.
Kuota dan batas
Untuk mengetahui informasi selengkapnya, lihat Batas indeks vektor dan batas fungsi AI generatif.
Batasan
- Kueri yang berisi fungsi
VECTOR_SEARCHatauAI.SEARCHtidak akan dipercepat oleh BigQuery BI Engine. - Pemangkasan data pemfilteran di awal dalam kueri
VECTOR_SEARCHdanAI.SEARCHhanya dioptimalkan saat memfilter di kolom yang dipartisi atau kolom yang disimpan, bukan di kolom yang dikelompokkan. Menggunakan kolom pengelompokan yang tidak disimpan dalam subkueri pemfilteran di awal akan menghasilkan pemindaian tabel lengkap. Untuk mengetahui informasi selengkapnya, lihat Batasan pemfilteran di awal.
Langkah berikutnya
- Pelajari lebih lanjut cara membuat indeks vektor dan menggunakan indeks vektor dengan penelusuran campuran.
- Pelajari cara melakukan penelusuran semantik atau hybrid menggunakan fungsi
VECTOR_SEARCH. - Pelajari cara melakukan penelusuran semantik atau hybrid menggunakan
fungsi
AI.SEARCH. - Pelajari lebih lanjut pembuatan embedding otonom.
- Coba tutorial Menelusuri embedding dengan penelusuran vektor untuk mempelajari cara membuat indeks vektor, lalu melakukan penelusuran vektor untuk embedding dengan dan tanpa indeks.
Coba tutorial Melakukan penelusuran semantik dan retrieval-augmented generation untuk mempelajari cara melakukan tugas berikut:
- Membuat embedding teks.
- Membuat indeks vektor pada embedding.
- Lakukan penelusuran vektor dengan embedding untuk menelusuri teks yang serupa.
- Melakukan retrieval-augmented generation (RAG) menggunakan hasil penelusuran vektor untuk memperkaya input perintah dan meningkatkan hasil.
Coba tutorial Mengurai PDF dalam pipeline retrieval-augmented generation untuk mempelajari cara membuat pipeline RAG berdasarkan konten PDF yang diurai.
Anda juga dapat melakukan penelusuran vektor menggunakan BigQuery DataFrames di Python. Untuk notebook yang mengilustrasikan pendekatan ini, lihat Membangun aplikasi Penelusuran Vektor menggunakan BigQuery DataFrames.