Salah satu alat terbaik untuk meningkatkan kualitas respons dari model bahasa besar (LLM) adalah retrieval-augmented generation (RAG). RAG adalah pola pengambilan data non-publik dan penggunaan data tersebut untuk mendukung perintah yang Anda kirimkan ke LLM. Dengan RAG, LLM dapat menghasilkan respons yang lebih akurat berdasarkan data yang disertakan dalam perintah.
Anda akan menggunakan AlloyDB, yakni database Google Cloud yang skalabel dan berperforma tinggi serta kompatibel dengan PostgreSQL, untuk menyimpan dan melakukan penelusuran berdasarkan jenis data vektor khusus yang disebut embedding vektor. Embedding vektor dapat diambil menggunakan penelusuran semantik, yang memungkinkan pengambilan data yang tersedia yang paling cocok dengan kueri bahasa alami pengguna. Data yang diambil kemudian diteruskan ke LLM dalam perintah.
Anda juga akan menggunakan Vertex AI, yakni platform pengembangan AI terpadu dan terkelola sepenuhnya dari Google Cloud untuk membangun dan menggunakan AI generatif. Aplikasi Anda menggunakan Gemini Pro, yakni model dasar multimodal yang mendukung penambahan file gambar, audio, video, dan PDF dalam perintah teks atau chat serta mendukung pemahaman konteks panjang.
Yang akan Anda pelajari
Di lab ini, Anda akan mempelajari:
Cara RAG meningkatkan kemampuan LLM dengan mengambil informasi yang relevan dari pusat informasi.
Cara AlloyDB dapat digunakan untuk menemukan informasi yang relevan menggunakan penelusuran semantik.
Cara menggunakan Vertex AI dan model dasar Google untuk memberikan kemampuan AI generatif yang canggih ke aplikasi.
Penyiapan dan persyaratan
Sebelum mengklik tombol Start Lab
Catatan: Baca petunjuk ini.
Lab memiliki timer dan Anda tidak dapat menjedanya. Timer yang dimulai saat Anda mengklik Start Lab akan menampilkan durasi ketersediaan resource Google Cloud untuk Anda.
Lab interaktif Qwiklabs ini dapat Anda gunakan untuk melakukan sendiri aktivitas lab di lingkungan cloud sungguhan, bukan di lingkungan demo atau simulasi. Untuk mengakses lab ini, Anda akan diberi kredensial baru yang bersifat sementara dan dapat digunakan untuk login serta mengakses Google Cloud selama durasi lab.
Yang Anda perlukan
Untuk menyelesaikan lab ini, Anda memerlukan:
Akses ke browser internet standar (disarankan browser Chrome).
Waktu untuk menyelesaikan lab.
Catatan: Jika Anda sudah memiliki akun atau project Google Cloud pribadi, jangan menggunakan akun atau project tersebut untuk lab ini.Catatan: Jika Anda menggunakan Pixelbook, buka di jendela Samaran untuk menjalankan lab ini.
Cara memulai lab dan login ke Console
Klik tombol Start Lab. Jika Anda perlu membayar lab, jendela pop-up akan terbuka untuk memilih metode pembayaran.
Di sebelah kiri terdapat panel berisi kredensial sementara yang harus Anda gunakan untuk lab ini.
Salin nama pengguna, lalu klik Open Google Console.
Lab akan menjalankan resource, lalu membuka tab lain yang menampilkan halaman Choose an account.
Tips: Buka tab di jendela terpisah secara berdampingan.
Di halaman Choose an account, klik Use Another Account. Halaman Login akan terbuka.
Tempel nama pengguna yang telah disalin dari panel Connection Details. Lalu, salin dan tempel sandinya.
Catatan: Anda harus menggunakan kredensial dari panel Connection Details. Jangan menggunakan kredensial Google Cloud Skills Boost. Jangan menggunakan akun Google Cloud pribadi Anda untuk lab ini agar terhindar dari tagihan.
Klik halaman berikutnya:
Setujui persyaratan dan ketentuan.
Jangan tambahkan opsi pemulihan atau autentikasi 2 langkah (karena ini akun sementara).
Jangan daftar uji coba gratis.
Setelah beberapa saat, Konsol Cloud akan terbuka di tab ini.
Catatan: Anda dapat melihat menu berisi daftar Produk dan Layanan Google Cloud dengan mengklik Navigation menu di kiri atas.
Mengaktifkan Google Cloud Shell
Google Cloud Shell adalah virtual machine yang dilengkapi dengan berbagai fitur pengembangan. Virtual machine ini menawarkan direktori beranda persisten berkapasitas 5 GB dan berjalan di Google Cloud.
Google Cloud Shell menyediakan akses command line untuk resource Google Cloud Anda.
Di Cloud Console, pada toolbar di kanan atas, klik tombol Open Cloud Shell.
Klik Continue.
Proses menyediakan dan menghubungkan ke lingkungan memerlukan waktu beberapa saat. Setelah terhubung, Anda sudah diautentikasi, dan project ditetapkan ke PROJECT_ID Anda. Contoh:
gcloud adalah alat command line untuk Google Cloud. Alat ini sudah terinstal di Cloud Shell dan mendukung pelengkapan command line.
Anda dapat menampilkan daftar nama akun yang aktif dengan perintah ini:
Setelah penginstalan selesai, Anda akan berada di lingkungan Python virtual, dengan prompt (.venv).
Jika sesi SSH VM habis waktunya atau tab ditutup, Anda dapat melakukan SSH ke VM lagi dan menggunakan perintah source ~/.venv/bin/activate untuk memulai ulang lingkungan Python virtual.
Untuk mengonfirmasi versi python, jalankan perintah berikut:
Untuk melihat model data, jalankan perintah berikut:
cd ~/genai-databases-retrieval-app
cat retrieval_service/models/models.py
Model data Python akan ditampilkan di sini. Model ini mencakup bandara, penerbangan, fasilitas di dalam terminal, kebijakan, dan tiket.
Untuk melihat contoh data bandara, jalankan perintah berikut:
head -1 data/airport_dataset.csv; grep SFO data/airport_dataset.csv
Perintah ini menampilkan header CSV yang menentukan nama kolom untuk set data bandara diikuti dengan baris untuk Bandara Internasional San Francisco (SFO). Data dalam model bandara dapat diambil berdasarkan kode International Air Transport Association (IATA), atau berdasarkan negara, kota, dan nama bandara. Anda dapat menggunakan penelusuran kata kunci untuk menemukan baris dalam tabel ini, sehingga tidak ada embedding vektor untuk data ini.
Untuk melihat contoh data penerbangan, jalankan perintah berikut:
head -1 data/flights_dataset.csv; grep -m10 "SFO" data/flights_dataset.csv
Perintah ini menampilkan header CSV yang menentukan nama kolom untuk set data penerbangan, diikuti dengan 10 baris pertama penerbangan ke atau dari SFO. Data dalam model penerbangan dapat diambil berdasarkan maskapai dan nomor penerbangan, atau menurut kode bandara keberangkatan dan kedatangan.
Untuk melihat contoh data fasilitas, jalankan perintah berikut:
head -2 data/amenity_dataset.csv
Perintah ini menampilkan header CSV yang menentukan nama kolom untuk set data fasilitas, diikuti dengan fasilitas pertama.
Anda akan melihat bahwa fasilitas pertama memiliki beberapa nilai sederhana, termasuk nama, deskripsi, lokasi, terminal, kategori, dan jam operasional. Nilai berikutnya adalah content, yang berisi nama, deskripsi, dan lokasi. Nilai terakhir adalah embedding, yaitu embedding vektor untuk baris.
Embedding adalah array berisi 768 angka yang digunakan saat melakukan penelusuran semantik. Embedding ini dihitung menggunakan model AI yang disediakan oleh Vertex AI. Saat pengguna memberikan kueri, embedding vektor dapat dibuat dari kueri tersebut, dan data dengan embedding vektor yang mirip dengan embedding penelusuran dapat diambil.
Data kebijakan juga menggunakan embedding vektor dengan cara yang serupa.
Catatan: Perhitungan embedding memerlukan waktu, jadi embedding telah disediakan. Skrip run_generate_embeddings.py dapat diperiksa untuk melihat cara pembuatan embedding.
Untuk membuat file konfigurasi database, jalankan perintah berikut:
export PGUSER={{{project_0.startup_script.gcp_alloydb_user | PG_USER}}}
export PGPASSWORD={{{project_0.startup_script.gcp_alloydb_password | PG_PASSWORD}}}
export PROJECT_ID=$(gcloud config get-value project)
export REGION={{{project_0.default_region | REGION }}}
export ADBCLUSTER={{{project_0.startup_script.gcp_alloydb_cluster_name | CLUSTER}}}
export INSTANCE_IP=$(gcloud alloydb instances describe $ADBCLUSTER-pr --cluster=$ADBCLUSTER --region=$REGION --format="value(ipAddress)")
cd ~/genai-databases-retrieval-app/retrieval_service
cp example-config.yml config.yml
sed -i s/127.0.0.1/$INSTANCE_IP/g config.yml
sed -i s/my-user/$PGUSER/g config.yml
sed -i s/my-password/$PGPASSWORD/g config.yml
sed -i s/my_database/assistantdemo/g config.yml
cat config.yml
File konfigurasi config.yml dibuat dengan alamat IP instance, nama pengguna, sandi, dan database yang diperbarui. File konfigurasi Anda sekarang akan terlihat seperti ini:
Perintah pertama akan menambahkan semua paket yang diperlukan ke lingkungan virtual Python, sedangkan perintah kedua akan mengisi database dengan data.
Mengisi database dengan set data contoh.
Tugas 5. Membuat akun layanan untuk layanan pengambilan
Dalam tugas ini, Anda akan membuat akun layanan untuk layanan pengambilan.
Layanan pengambilan bertanggung jawab untuk mengekstrak informasi yang relevan dari database. Layanan ini mengekstrak informasi yang diperlukan dari database berdasarkan permintaan dari aplikasi AI. Akun layanan ini digunakan sebagai identitas layanan Cloud Run tersebut.
Membuat akun layanan
Pengguna SSH tidak memiliki izin bagi instance project untuk dapat memberikan peran yang benar kepada akun layanan. Anda akan membuat akun layanan menggunakan tab Cloud Shell baru.
Di Cloud Shell, untuk membuka tab Cloud Shell baru, klik Open a new tab (+).
Untuk membuat akun layanan dan memberikan hak istimewa yang diperlukan kepada akun layanan, jalankan perintah berikut di tab baru:
Akun layanan ini diberi peran roles/aiplatform.user, yang memungkinkan layanan tersebut dapat memanggil Vertex AI.
Untuk menutup tab baru itu, jalankan perintah berikut:
exit
Membuat retrieval-identity akun layanan.
Tugas 6. Men-deploy layanan pengambilan ke Cloud Run
Dalam tugas ini, Anda akan men-deploy layanan pengambilan ke Cloud Run.
Untuk men-deploy layanan pengambilan, jalankan perintah berikut di tab Cloud Shell SSH VM:
export REGION={{{project_0.default_region | REGION }}}
cd ~/genai-databases-retrieval-app
gcloud alpha run deploy retrieval-service \
--source=./retrieval_service/\
--no-allow-unauthenticated \
--service-account retrieval-identity \
--region $REGION \
--network=default \
--quiet
Tunggu beberapa menit sampai deployment selesai.
Untuk memverifikasi layanan, jalankan perintah berikut:
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" $(gcloud run services list --filter="(retrieval-service)" --format="value(URL)")
Jika Anda melihat pesan "Halo Dunia", berarti layanan sudah aktif dan melayani permintaan.
Men-deploy layanan pengambilan.
Tugas 7. Mendaftarkan layar izin OAuth
Dalam tugas ini, Anda akan mendaftarkan layar izin OAuth yang ditampilkan kepada pengguna yang sedang login.
Saat Anda menggunakan OAuth 2.0 untuk otorisasi, Google akan menampilkan layar izin untuk meminta izin pengguna dalam berbagi data dengan aplikasi.
Di Konsol Google Cloud, pilih Navigation menu (), lalu pilih APIs & Services > OAuth consent screen.
Klik Get Started.
Untuk App name, masukkan Cymbal Air.
Klik User support email, lalu klik email siswa, kemudian klik Next.
Untuk Audience, pilih Internal, lalu klik Next.
Pengguna yang memiliki akses ke project seharusnya sudah dapat login ke aplikasi.
Di panel kiri petunjuk lab, salin Username.
Untuk Contact information, tempelkan nama pengguna yang disalin.
Klik Next.
Klik Checkbox untuk menyetujui Kebijakan Data Pengguna, lalu klik Continue, kemudian klik Create.
Layar izin kini sudah siap.
Tugas 8. Membuat client ID untuk aplikasi
Dalam tugas ini, Anda akan membuat client ID untuk aplikasi.
Aplikasi memerlukan client ID untuk menggunakan layanan OAuth Google. Anda akan mengonfigurasi origin yang diizinkan yang dapat membuat permintaan ini, dan mengonfigurasi URI pengalihan yang akan menjadi tujuan pengalihan aplikasi web setelah pengguna setuju untuk login.
Di Konsol Google Cloud, pilih Navigation menu (), lalu pilih APIs & Services > Credentials.
Klik + Create Credentials, lalu klik OAuth client ID.
Client ID digunakan untuk mengidentifikasi aplikasi tunggal ke server OAuth Google.
Untuk Application type, pilih Web application.
Untuk Name, masukkan Cymbal Air.
Anda dapat membuat origin JavaScript dan URI pengalihan menggunakan Cloud Shell.
Di Cloud Shell, untuk membuka tab Cloud Shell baru, klik Open a new tab (+).
Untuk mendapatkan URI origin dan pengalihan, jalankan perintah berikut di tab baru:
Dalam tugas ini, Anda akan menjalankan aplikasi chat contoh yang menggunakan layanan pengambilan.
Menjalankan aplikasi
Untuk menginstal persyaratan Python untuk aplikasi chat, jalankan perintah berikut di tab Cloud Shell SSH VM:
cd ~/genai-databases-retrieval-app/llm_demo
pip install -r requirements.txt
Sebelum memulai aplikasi, Anda perlu menyiapkan beberapa variabel lingkungan. Fungsi dasar aplikasi, termasuk membuat kueri penerbangan dan menampilkan fasilitas bandara, memerlukan variabel lingkungan bernama BASE_URL untuk menampung URL dasar layanan pengambilan.
Untuk menentukan URL dasar layanan pengambilan, jalankan perintah berikut:
export BASE_URL=$(gcloud run services list --filter="(retrieval-service)" --format="value(URL)")
echo $BASE_URL
URL dasar digunakan oleh aplikasi lokal untuk mengakses layanan pengambilan.
Untuk menjalankan aplikasi, jalankan perintah berikut:
python run_app.py
Respons Anda akan terlihat seperti ini:
(.venv) student-03-b2f40c6c89d6@app-vm:~/genai-databases-retrieval-app/llm_demo$ python run_app.py
INFO: Started server process [32894]
INFO: Waiting for application startup.
Loading application...
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:8081 (Press CTRL+C to quit)
Aplikasi kini berjalan.
Terhubung ke VM
Anda memiliki beberapa cara untuk terhubung ke aplikasi yang sedang dijalankan di VM. Misalnya, Anda dapat membuka port 8081 di VM menggunakan aturan firewall di VPC, atau membuat load balancer dengan IP publik. Di sini, Anda akan menggunakan tunnel SSH ke VM, yang menerjemahkan port 8080 Cloud Shell ke port 8081 VM.
Di Cloud Shell, untuk membuka tab Cloud Shell baru, klik Open a new tab (+).
Untuk membuat tunnel SSH ke port VM, jalankan perintah berikut di tab baru:
Perintah gcloud akan menghubungkan port 8080 di Cloud Shell dengan port 8081 di VM. Anda dapat mengabaikan error "Cannot assign requested address".
Untuk menjalankan aplikasi di browser web, klik Web Preview, lalu pilih Preview on port 8080.
Tab baru akan terbuka di browser, dan aplikasi akan berjalan. Aplikasi Cymbal Air akan menampilkan pesan "Selamat datang di Cymbal Air! Ada yang bisa kami bantu?"
Masukkan kueri berikut:
When is the next flight to Dallas?
Aplikasi akan merespons dengan penerbangan berikutnya dari SFO ke Dallas/Fort Worth.
Masukkan kueri berikut:
Which restaurants are near the departure gate?
Aplikasi akan memahami konteksnya, dan merespons dengan mencantumkan restoran di dekat gerbang keberangkatan di SFO.
Tugas 10. Login ke aplikasi (opsional)
Dalam tugas ini, Anda akan login ke aplikasi untuk memesan penerbangan.
Klik Login.
Jendela pop-up akan terbuka.
Di jendela pop-up, pilih siswa.
Akun siswa akan login.
Jika Anda diminta untuk mengonfirmasi bahwa Anda ingin login sebagai siswa, klik Konfirmasi.
Masukkan kueri berikut:
Please book that flight.
Aplikasi akan menampilkan penerbangan yang sedang dibahas.
Klik Sepertinya cocok. Pesan.
Tiket pesawat sudah dipesan.
Masukkan kueri berikut:
Which flights have I booked?
Penerbangan yang baru saja Anda pesan akan ditampilkan.
Aplikasi chat ini dapat membantu menjawab pertanyaan pengguna seperti:
Kapan penerbangan berikutnya ke Miami?
Apakah ada toko barang mewah di sekitar gerbang D50?
Di mana saya bisa mendapatkan kopi di dekat gerbang A6?
Aplikasi ini menggunakan model dasar Google terbaru untuk menghasilkan respons dan melengkapinya dengan informasi tentang penerbangan dan fasilitas dari database AlloyDB operasional. Anda dapat membaca informasi selengkapnya tentang aplikasi demo ini di halaman GitHub project.
Selamat!
Anda telah berhasil membangun aplikasi chat yang memanfaatkan model bahasa besar (LLM) dan retrieval-augmented generation (RAG) untuk menciptakan percakapan yang menarik dan informatif.
Setelah Anda menyelesaikan lab, klik Akhiri Lab. Google Cloud Skills Boost menghapus resource yang telah Anda gunakan dan membersihkan akun.
Anda akan diberi kesempatan untuk menilai pengalaman menggunakan lab. Pilih jumlah bintang yang sesuai, ketik komentar, lalu klik Submit.
Makna jumlah bintang:
1 bintang = Sangat tidak puas
2 bintang = Tidak puas
3 bintang = Netral
4 bintang = Puas
5 bintang = Sangat puas
Anda dapat menutup kotak dialog jika tidak ingin memberikan masukan.
Untuk masukan, saran, atau koreksi, gunakan tab Support.
Hak cipta 2024 Google LLC. Semua hak dilindungi undang-undang. Google dan logo Google adalah merek dagang dari Google LLC. Semua nama perusahaan dan produk lain mungkin adalah merek dagang masing-masing perusahaan yang bersangkutan.
Lab membuat project dan resource Google Cloud untuk jangka waktu tertentu
Lab memiliki batas waktu dan tidak memiliki fitur jeda. Jika lab diakhiri, Anda harus memulainya lagi dari awal.
Di kiri atas layar, klik Start lab untuk memulai
Gunakan penjelajahan rahasia
Salin Nama Pengguna dan Sandi yang diberikan untuk lab tersebut
Klik Open console dalam mode pribadi
Login ke Konsol
Login menggunakan kredensial lab Anda. Menggunakan kredensial lain mungkin menyebabkan error atau dikenai biaya.
Setujui persyaratan, dan lewati halaman resource pemulihan
Jangan klik End lab kecuali jika Anda sudah menyelesaikan lab atau ingin mengulanginya, karena tindakan ini akan menghapus pekerjaan Anda dan menghapus project
Konten ini tidak tersedia untuk saat ini
Kami akan memberi tahu Anda melalui email saat konten tersedia
Bagus!
Kami akan menghubungi Anda melalui email saat konten tersedia
Satu lab dalam satu waktu
Konfirmasi untuk mengakhiri semua lab yang ada dan memulai lab ini
Gunakan penjelajahan rahasia untuk menjalankan lab
Gunakan jendela Samaran atau browser pribadi untuk menjalankan lab ini. Langkah ini akan mencegah konflik antara akun pribadi Anda dan akun Siswa yang dapat menyebabkan tagihan ekstra pada akun pribadi Anda.
Di lab ini, Anda akan membuat aplikasi chat yang menggunakan Retrieval-Augmented Generation, atau RAG, untuk mendukung prompt dengan data yang diambil dari AlloyDB.