Membangun Sistem Penelusuran berkualitas Google dengan Vertex AI

1. Sebelum memulai

Berikut beberapa hal yang perlu diperhatikan sebelum melanjutkan codelab ini.

Prasyarat

  • Pemahaman dasar tentang LLM
  • Pemahaman dasar tentang sistem RAG

Yang akan Anda pelajari

  • Cara membuat mesin telusur berkualitas Google yang dapat menjawab pertanyaan Anda dari data yang Anda upload
  • Cara membuat Vertex AI Datastore
  • Cara membuat Agen Vertex AI
  • Cara memanfaatkan CloudRun untuk men-deploy aplikasi

Yang Anda butuhkan

  • Akun Google Cloud
  • Project Google Cloud
  • IDE dengan terminal

Pengantar

Google Penelusuran adalah alat canggih yang menggunakan indeks halaman web dan konten lainnya dalam jumlah besar untuk memberikan hasil yang relevan terhadap kueri pengguna. Hal ini dimungkinkan oleh teknik yang disebut Retrieval Augmented Generation (RAG), yang merupakan teknik utama dalam AI modern.

RAG berfungsi dengan terlebih dahulu mengambil bagian yang relevan dari korpus dokumen. Hal ini dilakukan menggunakan berbagai metode, seperti pencocokan kata kunci, kemiripan semantik, dan machine learning. Setelah diambil, bagian yang relevan akan digunakan untuk membuat ringkasan atau jawaban atas kueri pengguna.

Manfaat utama RAG adalah memungkinkan model bahasa menghindari halusinasi. Halusinasi adalah istilah yang digunakan untuk menggambarkan pembuatan teks yang tidak didukung oleh bukti dalam korpus dokumen. Hal ini dapat terjadi jika model bahasa tidak dapat membedakan antara informasi yang relevan dan tidak relevan.

RAG membantu menghindari halusinasi dengan memastikan bahwa teks yang dihasilkan selalu didasarkan pada bukti dari korpus dokumen. Hal ini menjadikannya sumber informasi yang lebih andal dan tepercaya.

RAG adalah teknik canggih yang digunakan dalam berbagai aplikasi, termasuk mesin telusur, chatbot, dan sistem menjawab pertanyaan. Model tersebut kemungkinan akan memainkan peran yang semakin penting dalam AI pada tahun-tahun mendatang.

Berikut adalah beberapa contoh penggunaan RAG:

  • Banyak sistem penelusuran menggunakan RAG untuk menghasilkan hasil penelusuran yang relevan dengan kueri pengguna.
  • Chatbot menggunakan RAG untuk menghasilkan respons terhadap pertanyaan pengguna yang informatif dan menarik.
  • Sistem penjawaban pertanyaan menggunakan RAG untuk menghasilkan jawaban atas pertanyaan pengguna yang akurat dan komprehensif.

RAG adalah teknik serbaguna yang dapat digunakan untuk membuat teks di berbagai domain dan aplikasi. Ini adalah alat canggih yang membantu membuat AI lebih cerdas dan informatif.

Dalam codelab ini, kita akan membuat sistem RAG yang dapat membantu menjawab pertanyaan Anda dengan korpus yang disediakan seperti yang Anda upload. Platform RAG siap pakai yang disebut Vertex AI Search/Agent Builder membantu Anda mempercepat pembuatan sistem RAG sehingga Anda tidak perlu melakukan upaya manual untuk mengumpulkan dokumen, mengurai, mengelompokkan, membuat penyematan, memperluas kueri, mengambil & mengurutkan kandidat. Meskipun sistem RAG siap pakai membantu Anda memulai dengan cepat, Google Cloud juga menyediakan API terpisah untuk setiap proses dalam membangun sistem RAG DIY Anda sendiri, yang membantu meningkatkan kualitas sistem RAG Anda agar sesuai dengan kebutuhan bisnis.

Yang akan Anda bangun

Di akhir codelab ini, Anda akan men-deploy sistem RAG yang berfungsi dan dapat membantu menjawab pertanyaan Anda dengan informasi faktual, yang didasarkan dan dikutip dengan referensi yang tepat.

Anda juga akan memiliki pemahaman yang lebih baik tentang cara menggunakan Vertex AI Search API untuk membuat arsitektur RAG ini di Google Cloud. Selain itu, Anda juga akan mempelajari cara men-deploy aplikasi arsitektur RAG ini (dengan frontend dan backend) di CloudRun yang merupakan platform serverless untuk men-deploy aplikasi sebagai container di Google Cloud.

2d055ded874603a6.pngS

Cara kerja aplikasi

  • Upload data Anda: Pengguna dapat mengupload korpus data mereka sendiri, yaitu file PDF sebagai input.
  • Ajukan kueri di kotak penelusuran: Pengguna dapat mengajukan pertanyaan di kotak penelusuran berdasarkan korpus data yang diupload.
  • Mengambil jawaban: Pengguna dapat mengambil hasil penelusuran/kandidat dan memeriksa faktualitas/keabsahan jawaban yang diambil berdasarkan relevansi kueri.

2. Penyiapan Lingkungan

  1. Di Konsol Google Cloud, di halaman pemilih project, pilih atau buat project Google Cloud.
  2. Pastikan penagihan diaktifkan untuk project Google Cloud Anda. Pelajari cara memeriksa apakah penagihan telah diaktifkan pada suatu project.
  3. Anda akan menggunakan Cloud Shell, yakni lingkungan command line yang berjalan di Google Cloud. Untuk mengaksesnya, klik Aktifkan Cloud Shell di bagian atas konsol Google Cloud.

1829c3759227c19b.png

  1. Setelah terhubung ke Cloud Shell, Anda akan memeriksa bahwa Anda sudah diautentikasi dan project ditetapkan ke project ID Anda menggunakan perintah berikut:
gcloud auth list
  1. Jalankan perintah berikut di Cloud Shell untuk mengonfirmasi bahwa perintah gcloud mengetahui project Anda.
gcloud config list project
  1. Jika project Anda belum ditetapkan, gunakan perintah berikut untuk menetapkannya:
gcloud config set project <YOUR_PROJECT_ID>
  1. Pastikan API berikut diaktifkan:
  • Cloud Run
  • Vertex AI
  • Cloud Storage

Alternatif untuk menggunakan perintah gcloud adalah melalui konsol menggunakan link ini. Lihat dokumentasi untuk mempelajari perintah gcloud dan penggunaannya.

3. Langkah 1: Buat Bucket GCP

  • Buka konsol dan di kotak penelusuran, ketik Cloud Storage.
  • Pilih Cloud Storage dari hasil yang disarankan. 21d2bc910e71f7ec.png
  • Klik Create Bucket

adf5c0382f6c3540.png

  • Berikan nama yang unik secara global untuk bucket
  • Klik Lanjutkan
  • Di Location Type, pilih Multi-Region
  • Di menu drop-down, pastikan untuk memilih opsi us (multiple regions in United States)

731aead7d8497725.png

  • Klik Buat Bucket

f7ac409ed9c4af21.png

4. Langkah 2: Buat Datastore Vertex AI

  • Pada kotak penelusuran halaman konsol, ketik "Vertex AI Agent Builder"
  • Pilih produk pertama, "Agent Builder"

c4a67b92bb7900e3.png

  • Di halaman Agent Builder, klik "Data Stores" seperti yang ditampilkan di menu navigasi sebelah kiri

f86f67d344d398fb.png

  • Klik "Create Data Store"

e64e771f33543f46.png

  • Memilih Cloud Storage sebagai penyimpanan data
  • Klik "Pilih" di bawah ikon Cloud Storage

3a8d22888e7eedc2.png

  • Pada tab di bawah opsi "Folder", klik tombol "Jelajahi"
  • Pilih bucket yang Anda buat di Langkah 1
  • Pada opsi di bawah, pastikan untuk memilih "Dokumen tertaut yang tidak terstruktur (JSONL dengan metadata)"
  • Klik Lanjutkan

13876b5d12dbe1fb.png

  • Di halaman Konfigurasi, pilih "global" sebagai lokasi penyimpanan data Anda
  • Berikan nama yang dapat diidentifikasi ke penyimpanan data Anda
  • Klik Buat

618b7a456fbffad4.png

Brownie:

  • Tepat di atas tombol "Buat", Anda dapat melihat opsi pemrosesan dokumen.
  • Anda dapat mencoba berbagai parser seperti parser digital, OCR, atau tata letak
  • Anda juga dapat mengaktifkan pemotongan lanjutan dan memberikan batas ukuran potongan kustom Anda sendiri

38471c1d3411610d.png

5. Langkah 3: Buat Agen

  • Setelah penyimpanan data dibuat, klik aplikasi di menu navigasi sebelah kiri dan pilih "Aplikasi"
  • Klik tombol "Buat Aplikasi"
  • Pilih jenis aplikasi "Penelusuran" (Anda juga dapat membuat agen, bot percakapan, rekomendasi, dll.)

ae5294e33f63567c.png

  • Pastikan Anda memilih "Generik" di bagian Konten. Anda juga dapat memilih Media atau Rekomendasi berdasarkan penyimpanan data serta jenis data dan sistem yang ingin Anda buat.
  • Pastikan untuk mengaktifkan fitur Enterprise Edition dan LLM Lanjutan
  • Berikan nama aplikasi Anda
  • Masukkan nama perusahaan Anda

f8a41c9751f7a8d3.png

  • Pastikan untuk memilih region "global"
  • Klik "Lanjutkan" ed17b18e094ba59a.png
  • Di layar berikutnya, pilih penyimpanan data yang Anda buat di Langkah 2
  • Klik "Buat"

bc77006e0025ae9e.png

6. Langkah 4: Dockerisasi aplikasi Anda

  • Buka terminal di konsol Google Cloud
  • Clone repositori <sample_repository_link> menggunakan perintah berikut

git clone https://github.com/kkrishnan90/vertex-ai-search-agent-builder-demo

  • Ubah direktori dan buka repositori yang di-clone menggunakan perintah berikut

cd vertex-ai-search-agent-builder-demo

  • Struktur folder
  • Backend - Bagian ini akan menyimpan implementasi API berbasis python yang akan membantu membuat endpoint yang tenang untuk berinteraksi dengan frontend Anda.
  • Frontend - Ini akan menyimpan aplikasi berbasis react dan akan menayangkan UI. Ini juga akan berisi panggilan tingkat aplikasi yang diperlukan ke backend melalui endpoint rest
  • Dockerfile - File ini akan berisi semua perintah yang relevan untuk membuat penampung docker
  • Di root direktori repositori, jalankan perintah berikut yang akan membantu mem-build image docker (catatan: pastikan untuk menggunakan flag - - platform saat mem-build penampung docker di Macbook yang menggunakan chip Apple Silicon seperti M1, M2, dll. Flag ini tidak diperlukan jika Anda mem-build menggunakan komputer Windows atau jika arsitektur CPU Anda berbasis Intel)

docker build --platform linux/amd64 -t your-image-name .

  • Setelah build penampung Docker berhasil, jalankan perintah berikut untuk memberi tag pada penampung dengan tag yang tepat untuk memastikan Anda memberikan versi image. Ingat, mungkin ada beberapa versi aplikasi dan karenanya beberapa versi sebagai tag dalam container docker. Memastikan bahwa versi stabil terbaru selalu digunakan adalah pendekatan yang direkomendasikan dari perspektif devops.

docker tag your-image-name REGION-docker.pkg.dev/PROJECT-ID/REPOSITORY-NAME/IMAGE-NAME:TAG

  • Setelah pemberian tag pada image container docker berhasil, sekarang mari kita mengirim image ke Google Artifact Registry (GAR). GAR adalah platform yang terkelola sepenuhnya dari Google untuk membantu mengelola dan mengontrol versi container Docker Anda. Jalankan perintah berikut yang akan mendorong penampung yang diberi tag di atas ke GAR. Untuk informasi selengkapnya, lihat link berikut [ https://cloud.google.com/artifact-registry/docs/docker/pushing-and-pulling]

docker push REGION-docker.pkg.dev/PROJECT-ID/REPOSITORY-NAME/IMAGE-NAME:TAG

7. Langkah 5: Deploy aplikasi Anda di Cloud Run

  • Minimalkan terminal Anda. Di kotak penelusuran konsol Google Cloud, telusuri Cloud Run
  • Klik produk Cloud Run yang disarankan

592103eb61c16738.png

  • Klik "Create Service"
  • Di halaman berikutnya, pastikan "Deploy one revision from an existing container image" dipilih
  • Di bawah, klik "Pilih"
  • Anda sekarang akan melihat menu navigasi di sebelah kanan.
  • Pastikan untuk memeriksa apakah Artifact Registry dipilih sebagai tab
  • Pastikan untuk memeriksa apakah project dipilih dengan benar
  • Klik panah untuk meluaskan akordeon pada link image container yang telah di-deploy
  • Pilih tag penampung dan luaskan (selalu pilih tag terbaru yang di-deploy - dengan tag terbaru yang tepat, yaitu v1, v2, dll.)
  • Klik image container yang ditampilkan di bawah nama tag container

aac35d55d7dd874e.png

  • Di area Konfigurasi
  • Berikan nama layanan untuk aplikasi Cloud Run Anda (ini akan menjadi bagian dari URL saat Anda men-deploy aplikasi di Cloud Run)
  • Pilih region yang sesuai (dalam hal ini us-central1 atau apa pun pilihan Anda)
  • Di bagian Autentikasi
  • Pastikan "Allow unauthenticated invocations" dipilih
  • Di bagian Alokasi CPU dan Harga
  • Pilih "CPU hanya dialokasikan selama pemrosesan permintaan"
  • Ubah Penskalaan Otomatis Layanan menjadi 1 (untuk tujuan produksi, sebaiknya jalankan instance minimum untuk menangani traffic harian Anda, Anda bahkan dapat membiarkannya 0, yaitu Nol)
  • Setel "Kontrol Masuk" ke "Semua" untuk mengizinkan traffic dari internet mengakses aplikasi Anda
  • Klik "Buat"
  • Tindakan ini akan men-deploy instance Cloud Run dan penyediaan instance yang sama memerlukan waktu beberapa menit

b8b147265b8d457b.png

  • Setelah di-deploy, Anda akan dapat melihat URL yang tersedia secara publik yang dapat Anda gunakan untuk mengakses aplikasi web

1dfdb007c52581a1.pngS

8. Bagaimana cara kerja semuanya

  • Setelah berada di halaman beranda aplikasi, klik tombol "Upload Dokumen"
  • Upload file PDF
  • Setelah upload selesai
  • Klik Kotak Penelusuran di bagian atas halaman web
  • Mulai menelusuri kueri yang terkait dengan dokumen yang Anda upload
  • Setelah Anda mengetik kueri dan mengklik Telusuri, semua jawaban yang relevan dari dokumen yang baru saja Anda upload akan ditampilkan
  • Anda dapat bermain-main dengan melihat kode backend dan menambahkan lebih banyak konfigurasi seperti berikut
  • Menambahkan cuplikan
  • Menambahkan segmen ekstrak
  • Menambahkan jawaban
  • Menyesuaikan hasil top-k untuk membantu LLM meringkas jawaban (seperti Ringkasan AI di Google Penelusuran)
  • Sebagai add-on, Anda juga dapat menambahkan tag metadata saat mengupload dokumen. Hal ini akan membantu menghasilkan facet dan kategori yang dapat difilter

9. Pembersihan

Agar tidak menimbulkan biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam codelab ini, ikuti langkah-langkah berikut:

  1. Di konsol Google Cloud, buka halaman Manage resources.
  2. Dalam daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
  3. Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
  4. Atau, Anda dapat membuka Cloud Run di konsol, memilih layanan yang baru saja di-deploy, lalu menghapusnya.

10. Selamat

Selamat! Anda telah berhasil membuat sistem RAG siap pakai yang cepat menggunakan model canggih yang didukung oleh Google dan untuk memberikan hasil berkualitas Google ke kueri penelusuran Anda. Codelab ini hanya untuk tujuan demonstrasi. Lebih banyak keamanan dan pembatasan harus disiapkan untuk kasus penggunaan produksi. Link ke repositori lengkap ada di sini. Dengan memanfaatkan Google Cloud dan hanya dengan 5 langkah, kami dapat membuat sistem RAG end-to-end yang dapat langsung memberikan hasil berkualitas Google kepada Anda. Seiring berkembangnya AI generatif dan model bahasa besar, membuat sistem RAG tersebut juga membantu kita menghindari jebakan halusinasi dan informasi yang tidak dikutip yang ditampilkan.

Meskipun ini baru permulaan, kami dapat melakukan keajaiban dengan DIY RAG API yang dapat disesuaikan sepenuhnya. Dengan API ini, Anda akan mendapatkan transparansi, daya, dan efisiensi yang lebih baik untuk menangani setiap bagian proses pipeline secara efektif.