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 membangun mesin telusur berkualitas Google yang dapat menjawab pertanyaan Anda dari data yang diupload
  • Cara membuat Vertex AI Datastore
  • Cara membuat Agen Vertex AI
  • Cara memanfaatkan CloudRun untuk men-deploy aplikasi

Yang akan 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 dengan kueri pengguna. Hal ini dimungkinkan oleh teknik yang disebut Retrieval Augmented Generation (RAG), yang merupakan teknik utama dalam AI modern.

RAG bekerja dengan terlebih dahulu mengambil bagian yang relevan dari korpus dokumen. Hal ini dilakukan dengan menggunakan berbagai metode, seperti pencocokan kata kunci, kesamaan semantik, dan machine learning. Setelah diambil, bagian yang relevan 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 ketika 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 membuatnya menjadi sumber informasi yang lebih andal dan tepercaya.

RAG adalah teknik canggih yang digunakan dalam berbagai aplikasi, termasuk mesin telusur, chatbot, dan sistem penjawaban 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 memberikan 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 menghasilkan teks di berbagai domain dan aplikasi. Alat canggih yang membantu menjadikan AI lebih cerdas dan informatif.

Dalam codelab ini, kita akan membangun 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 pembangunan sistem RAG sehingga menghindari Anda dengan upaya manual dalam mengumpulkan dokumen, mengurai, memotong, menghasilkan embedding, perluasan kueri, pengambilan & pemeringkatan 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 memiliki sistem RAG yang berfungsi dan dapat membantu menjawab pertanyaan Anda dengan informasi faktual, didasarkan, dan dikutip dengan referensi yang tepat.

Anda juga akan memiliki pemahaman yang lebih baik tentang cara menggunakan Vertex AI Search API untuk membangun 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 Activate Cloud Shell di bagian atas konsol Google Cloud.

1829c3759227c19b.pngS

  1. Setelah terhubung ke Cloud Shell, Anda harus memastikan 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 sudah diaktifkan:
  • Cloud Run
  • Vertex AI
  • Cloud Storage

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

3. Langkah 1: Buat Bucket GCP

  • Buka konsol, lalu ketik Cloud Storage di kotak penelusuran.
  • Pilih Cloud Storage dari hasil yang disarankan. 21d2bc910e71f7ec.pngS
  • 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.pngS

  • Klik Create Bucket

f7ac409ed9c4af21.png

4. Langkah 2: Buat Vertex AI Datastore

  • 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 Anda
  • Klik "Pilih" di bawah ikon Cloud Storage

3a8d22888e7eedc2.pngS

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

13876b5d12dbe1fb.pngS

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

618b7a456fbffad4.pngS

Brownie:

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

38471c1d3411610d.pngS

5. Langkah 3: Buat Agen

  • Setelah penyimpanan data dibuat, klik aplikasi pada menu navigasi di sebelah kiri, lalu pilih "Aplikasi"
  • Klik tombol "Buat Aplikasi"
  • Pilih jenis aplikasi untuk "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 bangun.
  • Pastikan Anda mengaktifkan fitur Enterprise Edition dan LLM Advanced
  • Masukkan nama aplikasi Anda
  • Masukkan nama perusahaan Anda

f8a41c9751f7a8d3.png

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

bc77006e0025ae9e.png

6. Langkah 4: Dockerisasi aplikasi Anda

  • Membuka terminal Anda 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 menampung aplikasi berbasis reaksi dan akan menyajikan UI. Panggilan ini juga akan berisi panggilan tingkat aplikasi yang diperlukan ke backend melalui endpoint lainnya
  • Dockerfile - File ini akan berisi semua perintah yang relevan untuk membuat container docker
  • Di root direktori repositori, jalankan perintah berikut yang akan membantu membangun image Docker (catatan: pastikan untuk menggunakan flag - - platform saat membangun container docker di Macbook yang menggunakan chip Apple Silicon seperti M1, M2, dll. Flag ini tidak diperlukan jika Anda membangun menggunakan mesin Windows atau jika arsitektur CPU Anda berbasis Intel)

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

  • Setelah build container Docker berhasil, jalankan perintah berikut untuk memberi tag pada container dengan tag yang tepat guna memastikan Anda memberikan versi image Anda. Ingat, mungkin ada beberapa versi aplikasi dan karenanya beberapa versi sebagai tag dalam container docker. Memastikan versi stabil terbaru selalu digunakan adalah pendekatan yang direkomendasikan yang baik 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 mengirimkan 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.pngS

  • Klik "Create Service"
  • Di halaman berikutnya, pastikan "Deploy one revision from an existing container image" dipilih
  • Di bawah, klik "Pilih"
  • Sekarang Anda akan diminta dengan 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 perluas (selalu pilih tag terbaru yang di-deploy - dengan tag terbaru yang tepat, yaitu v1, v2, dll.)
  • Klik image penampung yang ditampilkan di bawah nama tag penampung

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 Authentication
  • Pastikan "Allow unauthenticated invocations" dipilih
  • Di bagian Alokasi CPU dan Harga
  • Pilih "CPU is only allocated selama pemrosesan permintaan"
  • Ubah Penskalaan Otomatis Layanan menjadi 1 (untuk tujuan produksi, sebaiknya jalankan instance minimum untuk menangani traffic harian, 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 dapat melihat URL yang tersedia secara publik di mana Anda dapat mengakses aplikasi web dari

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 telusuri kueri terkait 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 ekstraktif
  • 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. Ini akan membantu menghasilkan faset 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 resource.
  2. Dalam daftar project, pilih project yang ingin dihapus, 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 dan dihapus.

10. Selamat

Selamat! Anda telah berhasil membuat sistem RAG cepat siap pakai menggunakan model tercanggih yang didukung oleh Google dan memberikan hasil berkualitas Google untuk kueri penelusuran Anda. Codelab ini hanya untuk tujuan demonstrasi, lebih banyak keamanan dan batasan yang 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 dengan berkembangnya AI generatif dan model bahasa besar (LLM), membangun sistem RAG seperti itu juga membantu kita menghindari munculnya halusinasi dan informasi yang tidak dikutip.

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.