Codelab - Membuat Chatbot Rekomendasi Film menggunakan Neo4j dan Vertex AI
Tentang codelab ini
1. Ringkasan
Dalam codelab ini, Anda akan membuat chatbot rekomendasi film cerdas menggunakan kombinasi Neo4j, Vertex AI, dan Gemini. Chatbot menggunakan Grafik Pengetahuan Neo4j sebagai dasar untuk merepresentasikan film, aktor, sutradara, produser, genre, dll. Untuk meningkatkan pengalaman penelusuran, Anda akan membuat penyematan vektor dari ringkasan plot film menggunakan model text-embedding-004
Vertex AI.
Terakhir, Anda akan mengintegrasikan Gemini untuk mendukung antarmuka percakapan tempat pengguna dapat mengajukan pertanyaan dalam bahasa alami seperti "Apa yang harus saya tonton jika saya menyukai Interstellar?" dan menerima saran film yang dipersonalisasi berdasarkan kesamaan semantik dan konteks berbasis grafik.
Melalui codelab ini, Anda akan menggunakan pendekatan langkah demi langkah sebagai berikut:
- Membuat Pustaka Pengetahuan Neo4j dengan data terkait film
- Perkaya data film dengan membuat penyematan teks pada ringkasan/plot film menggunakan penyematan teks Vertex AI.
- Buat antarmuka chatbot Gradio yang didukung oleh Gemini untuk penelusuran dan pengambilan semantik dari Neo4j yang menyatukan semuanya.
- Atau, deploy di Google Cloud Run sebagai aplikasi web mandiri seperti yang ditunjukkan di bawah ini:
Yang akan Anda pelajari
- Cara membuat grafik pengetahuan film menggunakan Cypher dan Neo4j.
- Cara menggunakan Vertex AI untuk membuat embedding semantik untuk teks.
- Cara mengintegrasikan Neo4j dan Gemini untuk pengambilan berbasis vektor yang cerdas.
- Cara mem-build dan menjalankan UI chatbot percakapan dengan Gradio.
Yang Anda butuhkan
- Browser web Chrome
- Akun Gmail
- Project Google Cloud yang mengaktifkan penagihan
- Akun Neo4j Aura DB gratis
- Pemahaman dasar tentang perintah terminal dan Python
Codelab ini, yang dirancang untuk developer dari semua tingkat (termasuk pemula), menggunakan Python dan Neo4j dalam aplikasi contohnya. Meskipun pemahaman dasar tentang Python dan database grafik dapat membantu, Anda tidak memerlukan pengalaman sebelumnya untuk memahami konsep atau mengikutinya.
2. Menyiapkan Neo4j AuraDB
Neo4j adalah database grafik native terkemuka yang menyimpan data sebagai jaringan node (entity) dan hubungan (koneksi antar-entity), sehingga ideal untuk kasus penggunaan yang mengutamakan pemahaman koneksi — seperti rekomendasi, deteksi penipuan, pustaka pengetahuan, dan lainnya. Tidak seperti database relasional atau berbasis dokumen yang mengandalkan tabel kaku atau struktur hierarkis, model grafik fleksibel Neo4j memungkinkan representasi data yang kompleks dan saling terhubung secara intuitif dan efisien.
Daripada mengatur data dalam baris dan tabel seperti database relasional, Neo4j menggunakan model grafik, tempat informasi direpresentasikan sebagai node (entity) dan hubungan (koneksi antara entity tersebut). Model ini sangat intuitif untuk menangani data yang secara inheren tertaut — seperti orang, tempat, produk, atau, dalam kasus kami, film, aktor, dan genre.
Misalnya, dalam set data film:
- Node dapat mewakili
Movie
,Actor
, atauDirector
- Hubungan dapat berupa
ACTED_IN
atauDIRECTED
Struktur ini memungkinkan Anda mengajukan pertanyaan seperti:
- Film apa yang pernah dibintangi aktor ini?
- Siapa yang pernah bekerja sama dengan Christopher Nolan?
- Apa saja film serupa berdasarkan aktor atau genre yang sama?
Neo4j dilengkapi dengan bahasa kueri yang canggih bernama Cypher, yang dirancang khusus untuk membuat kueri grafik. Cypher memungkinkan Anda mengekspresikan pola dan koneksi yang kompleks dengan cara yang ringkas dan mudah dibaca.
Neo4j menawarkan beberapa opsi deployment bergantung pada kebutuhan Anda:
- Dikelola sendiri: Jalankan Neo4j di infrastruktur Anda sendiri menggunakan Neo4j Desktop atau sebagai image Docker (di lokal atau di cloud Anda sendiri).
- Dikelola cloud: Men-deploy Neo4j di penyedia cloud populer menggunakan penawaran marketplace.
- Terkelola sepenuhnya: Gunakan Neo4j AuraDB, database-as-a-service cloud Neo4j yang terkelola sepenuhnya, yang menangani penyediaan, penskalaan, pencadangan, dan keamanan untuk Anda.
Dalam codelab ini, kita akan menggunakan Neo4j AuraDB Free, paket AuraDB tanpa biaya. Layanan ini menyediakan instance database grafik yang dikelola sepenuhnya dengan penyimpanan dan fitur yang cukup untuk membuat prototipe, mempelajari, dan mem-build aplikasi kecil — sangat cocok untuk sasaran kami dalam membuat chatbot rekomendasi film yang didukung GenAI.
Anda akan membuat instance AuraDB gratis, menghubungkannya ke aplikasi menggunakan kredensial koneksi, dan menggunakannya untuk menyimpan serta membuat kueri grafik pengetahuan film di seluruh lab ini.
Mengapa Menggunakan Grafik?
Dalam database relasional tradisional, menjawab pertanyaan seperti "Film mana yang mirip dengan Inception berdasarkan pemeran atau genre yang sama?" akan melibatkan operasi JOIN yang kompleks di beberapa tabel. Seiring bertambahnya kedalaman hubungan, performa dan keterbacaan akan menurun.
Namun, database grafik seperti Neo4j dibuat untuk menelusuri hubungan secara efisien, sehingga cocok untuk sistem rekomendasi, penelusuran semantik, dan asisten cerdas. Model ini membantu menangkap konteks dunia nyata — seperti jaringan kolaborasi, alur cerita, atau preferensi penonton — yang mungkin sulit direpresentasikan menggunakan model data tradisional.
Dengan menggabungkan data terhubung ini dengan LLM seperti Gemini dan penyematan vektor dari Vertex AI, kita dapat meningkatkan kualitas pengalaman chatbot — memungkinkannya untuk bernalar, mengambil, dan merespons dengan cara yang lebih relevan dan dipersonalisasi.
Pembuatan Gratis Neo4j AuraDB
- Buka https://console.neo4j.io
- Login dengan Akun Google atau email Anda.
- Klik "Create Free Instance".
- Saat instance disediakan, jendela pop-up akan muncul yang menampilkan kredensial koneksi untuk database Anda.
Pastikan untuk mendownload dan menyimpan detail berikut dengan aman dari pop-up — detail ini penting untuk menghubungkan aplikasi Anda ke Neo4j:
NEO4J_URI=neo4j+s://<your-instance-id>.databases.neo4j.io
NEO4J_USERNAME=neo4j
NEO4J_PASSWORD=<your-generated-password>
AURA_INSTANCEID=<your-instance-id>
AURA_INSTANCENAME=<your-instance-name>
Anda akan menggunakan nilai ini untuk mengonfigurasi file .env di project untuk mengautentikasi dengan Neo4j pada langkah berikutnya.
Neo4j AuraDB Free sangat cocok untuk pengembangan, eksperimen, dan aplikasi skala kecil seperti codelab ini. Layanan ini menawarkan batas penggunaan yang besar, yang mendukung hingga 200.000 node dan 400.000 hubungan. Meskipun menyediakan semua fitur penting yang diperlukan untuk membuat dan membuat kueri grafik pengetahuan, alat ini tidak mendukung konfigurasi lanjutan seperti plugin kustom atau penyimpanan yang ditingkatkan. Untuk workload produksi atau set data yang lebih besar, Anda dapat mengupgrade ke paket AuraDB tingkat lebih tinggi yang menawarkan kapasitas, performa, dan fitur kelas perusahaan yang lebih besar.
Tindakan ini akan menyelesaikan bagian untuk menyiapkan backend Neo4j AuraDB. Pada langkah berikutnya, kita akan membuat project Google Cloud, meng-clone repositori, dan mengonfigurasi variabel lingkungan yang diperlukan untuk menyiapkan lingkungan pengembangan Anda sebelum memulai codelab.
3. Sebelum memulai
Membuat project
- Di Konsol Google Cloud, di halaman pemilih project, pilih atau buat project Google Cloud.
- Pastikan penagihan diaktifkan untuk project Cloud Anda. Pelajari cara memeriksa apakah penagihan telah diaktifkan pada suatu project .
- Anda akan menggunakan Cloud Shell, lingkungan command line yang berjalan di Google Cloud yang telah dilengkapi dengan bq. Klik Aktifkan Cloud Shell di bagian atas konsol Google Cloud.
- 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
- Jalankan perintah berikut di Cloud Shell untuk mengonfirmasi bahwa perintah gcloud mengetahui project Anda.
gcloud config list project
- Jika project Anda belum ditetapkan, gunakan perintah berikut untuk menetapkannya:
gcloud config set project <YOUR_PROJECT_ID>
- Aktifkan API yang diperlukan melalui perintah yang ditampilkan di bawah. Tindakan ini mungkin memerlukan waktu beberapa menit, jadi harap bersabar.
gcloud services enable cloudresourcemanager.googleapis.com \
servicenetworking.googleapis.com \
run.googleapis.com \
cloudbuild.googleapis.com \
cloudfunctions.googleapis.com \
aiplatform.googleapis.com
Setelah perintah berhasil dieksekusi, Anda akan melihat pesan yang mirip dengan yang ditampilkan di bawah ini:
Operation "operations/..." finished successfully.
Alternatif untuk perintah gcloud adalah melalui konsol dengan menelusuri setiap produk atau menggunakan link ini.
Jika ada API yang terlewat, Anda dapat mengaktifkannya kapan saja selama implementasi.
Baca dokumentasi untuk mempelajari perintah gcloud dan penggunaannya.
Meng-clone repositori dan menyiapkan setelan lingkungan
Langkah berikutnya adalah meng-clone repositori contoh yang akan kita referensikan di bagian codelab lainnya. Dengan asumsi bahwa Anda berada di Cloud Shell, berikan perintah berikut dari direktori utama:
git clone https://github.com/sidagarwal04/neo4j-vertexai-codelab.git
Untuk meluncurkan editor, klik Buka Editor di toolbar jendela Cloud Shell. Klik panel menu di sudut kiri atas, lalu pilih File → Buka Folder seperti yang ditunjukkan di bawah ini:
Pilih folder neo4j-vertexai-codelab
dan Anda akan melihat folder terbuka dengan file berikut seperti yang ditunjukkan di bawah ini:
Selanjutnya, kita perlu menyiapkan variabel lingkungan yang akan digunakan di seluruh codelab. Klik file example.env
dan Anda akan melihat konten seperti yang ditunjukkan di bawah ini:
NEO4J_URI=
NEO4J_USER=
NEO4J_PASSWORD=
NEO4J_DATABASE=
PROJECT_ID=
LOCATION=
Sekarang, buat file baru bernama .env
di folder yang sama dengan file example.env
dan salin konten file example.env yang ada. Sekarang, perbarui variabel berikut:
NEO4J_URI
,NEO4J_USER
,NEO4J_PASSWORD
, danNEO4J_DATABASE
:- Isi nilai ini menggunakan kredensial yang diberikan selama pembuatan instance Neo4j AuraDB Free di langkah sebelumnya.
NEO4J_DATABASE
biasanya ditetapkan ke neo4j untuk AuraDB Free.PROJECT_ID
danLOCATION
:- Jika menjalankan codelab dari Google Cloud Shell, Anda dapat mengosongkan kolom ini, karena kolom tersebut akan otomatis disimpulkan dari konfigurasi project aktif Anda.
- Jika Anda menjalankannya secara lokal atau di luar Cloud Shell, perbarui
PROJECT_ID
dengan ID project Google Cloud yang Anda buat sebelumnya, dan tetapkanLOCATION
ke region yang Anda pilih untuk project tersebut (misalnya, us-central1).
Setelah Anda mengisi nilai ini, simpan file .env
. Konfigurasi ini akan memungkinkan aplikasi Anda terhubung ke layanan Neo4j dan Vertex AI.
Langkah terakhir dalam menyiapkan lingkungan pengembangan adalah membuat lingkungan virtual Python dan menginstal semua dependensi yang diperlukan yang tercantum dalam file requirements.txt
. Dependensi ini mencakup library yang diperlukan untuk bekerja dengan Neo4j, Vertex AI, Gradio, dan lainnya.
Pertama, buat lingkungan virtual bernama .venv dengan menjalankan perintah berikut:
python -m venv .venv
Setelah lingkungan dibuat, kita harus mengaktifkan lingkungan yang dibuat dengan perintah berikut
source .venv/bin/activate
Anda akan melihat (.venv) di awal perintah terminal, yang menunjukkan bahwa lingkungan aktif. Contoh: (.venv) yourusername@cloudshell:
Sekarang, instal dependensi yang diperlukan dengan menjalankan:
pip install -r requirements.txt
Berikut adalah ringkasan dependensi utama yang tercantum dalam file:
gradio>=4.0.0
neo4j>=5.0.0
numpy>=1.20.0
python-dotenv>=1.0.0
google-cloud-aiplatform>=1.30.0
vertexai>=0.0.1
Setelah semua dependensi berhasil diinstal, lingkungan Python lokal Anda akan dikonfigurasi sepenuhnya untuk menjalankan skrip dan chatbot di codelab ini.
Bagus! Sekarang kita siap untuk melanjutkan ke langkah berikutnya — memahami set data dan menyiapkannya untuk pembuatan grafik dan pengayaan semantik.
4. Menyiapkan set data Film
Tugas pertama kita adalah menyiapkan set data Film yang akan kita gunakan untuk membuat grafik pengetahuan dan mendukung chatbot rekomendasi. Daripada memulai dari awal, kita akan menggunakan set data terbuka yang ada dan mem-build-nya.
Kita menggunakan The Movies Dataset oleh Rounak Banik, set data publik terkenal yang tersedia di Kaggle. Set data ini mencakup metadata untuk lebih dari 45.000 film dari TMDB, termasuk pemeran, kru, kata kunci, rating, dan banyak lagi.
Untuk membuat Chatbot Rekomendasi Film yang andal dan efektif, Anda harus memulai dengan data yang bersih, konsisten, dan terstruktur. Meskipun Set Data Film dari Kaggle adalah referensi yang kaya dengan lebih dari 45.000 data film dan metadata mendetail—termasuk genre, pemeran, kru, dan lainnya—set data ini juga berisi derau, inkonsistensi, dan struktur data bertingkat yang tidak ideal untuk pemodelan grafik atau penyematan semantik.
Untuk mengatasi hal ini, kami telah memproses dan menormalisasi set data untuk memastikan set data tersebut cocok untuk membuat grafik pengetahuan Neo4j dan menghasilkan penyematan berkualitas tinggi. Proses ini melibatkan:
- Menghapus duplikat dan data yang tidak lengkap
- Menstandarkan kolom utama (misalnya, nama genre, nama orang)
- Meratakan struktur bertingkat yang kompleks (misalnya, pemeran dan kru) menjadi CSV terstruktur
- Memilih subset perwakilan dari ~12.000 film agar tetap berada dalam batas Neo4j AuraDB Free
Data berkualitas tinggi yang dinormalisasi membantu memastikan:
- Kualitas data: Meminimalkan error dan inkonsistensi untuk rekomendasi yang lebih akurat
- Performa kueri: Struktur yang disederhanakan meningkatkan kecepatan pengambilan dan mengurangi redundansi
- Akurasi penyematan: Input yang bersih menghasilkan embedding vektor yang lebih bermakna dan kontekstual
Anda dapat mengakses set data yang telah dibersihkan dan dinormalisasi di folder normalized_data/
di repo GitHub ini. Set data ini juga dicerminkan di bucket Google Cloud Storage untuk memudahkan akses dalam skrip Python mendatang.
Setelah data dibersihkan dan siap, kita sekarang siap memuat data tersebut ke Neo4j dan mulai membuat grafik pengetahuan film.
5. Membuat Pustaka Pengetahuan Film
Untuk mendukung chatbot rekomendasi film yang dilengkapi GenAI, kita perlu menyusun set data film dengan cara yang menangkap jaringan koneksi yang kaya antara film, aktor, sutradara, genre, dan metadata lainnya. Di bagian ini, kita akan membuat Peta Pengetahuan Film di Neo4j menggunakan set data yang dibersihkan dan dinormalisasi yang Anda siapkan sebelumnya.
Kita akan menggunakan kemampuan LOAD CSV
Neo4j untuk menyerap file CSV yang dihosting di bucket Google Cloud Storage (GCS) publik. File ini mewakili berbagai komponen set data film, seperti film, genre, pemeran, kru, perusahaan produksi, dan rating pengguna.
Langkah 1: Buat Batasan dan Indeks
Sebelum mengimpor data, sebaiknya buat batasan dan indeks untuk menerapkan integritas data dan mengoptimalkan performa kueri.
CREATE CONSTRAINT unique_tmdb_id IF NOT EXISTS FOR (m:Movie) REQUIRE m.tmdbId IS UNIQUE;
CREATE CONSTRAINT unique_movie_id IF NOT EXISTS FOR (m:Movie) REQUIRE m.movieId IS UNIQUE;
CREATE CONSTRAINT unique_prod_id IF NOT EXISTS FOR (p:ProductionCompany) REQUIRE p.company_id IS UNIQUE;
CREATE CONSTRAINT unique_genre_id IF NOT EXISTS FOR (g:Genre) REQUIRE g.genre_id IS UNIQUE;
CREATE CONSTRAINT unique_lang_id IF NOT EXISTS FOR (l:SpokenLanguage) REQUIRE l.language_code IS UNIQUE;
CREATE CONSTRAINT unique_country_id IF NOT EXISTS FOR (c:Country) REQUIRE c.country_code IS UNIQUE;
CREATE INDEX actor_id IF NOT EXISTS FOR (p:Person) ON (p.actor_id);
CREATE INDEX crew_id IF NOT EXISTS FOR (p:Person) ON (p.crew_id);
CREATE INDEX movieId IF NOT EXISTS FOR (m:Movie) ON (m.movieId);
CREATE INDEX user_id IF NOT EXISTS FOR (p:Person) ON (p.user_id);
Langkah 2: Mengimpor Metadata dan Hubungan Film
Mari kita lihat cara mengimpor metadata film menggunakan perintah LOAD CSV. Contoh ini membuat node Film dengan atribut utama seperti judul, ringkasan, bahasa, dan runtime:
LOAD CSV WITH HEADERS FROM "https://storage.googleapis.com/neo4j-vertexai-codelab/normalized_movies.csv" AS row
WITH row, toInteger(row.tmdbId) AS tmdbId
WHERE tmdbId IS NOT NULL
WITH row, tmdbId
LIMIT 12000
MERGE (m:Movie {tmdbId: tmdbId})
ON CREATE SET m.title = coalesce(row.title, "None"),
m.original_title = coalesce(row.original_title, "None"),
m.adult = CASE
WHEN toInteger(row.adult) = 1 THEN 'Yes'
ELSE 'No'
END,
m.budget = toInteger(coalesce(row.budget, 0)),
m.original_language = coalesce(row.original_language, "None"),
m.revenue = toInteger(coalesce(row.revenue, 0)),
m.tagline = coalesce(row.tagline, "None"),
m.overview = coalesce(row.overview, "None"),
m.release_date = coalesce(row.release_date, "None"),
m.runtime = toFloat(coalesce(row.runtime, 0)),
m.belongs_to_collection = coalesce(row.belongs_to_collection, "None");
Perintah Cypher serupa dapat digunakan untuk mengimpor entitas terkait seperti genre, perusahaan produksi, bahasa, negara, pemeran, kru, dan rating.
Memuat Grafik Lengkap melalui Python
Daripada menjalankan beberapa kueri Cypher secara manual, sebaiknya gunakan skrip Python otomatis yang disediakan dalam codelab ini.
Skrip graph_build.py
memuat seluruh set data dari GCS ke instance Neo4j AuraDB menggunakan kredensial dalam file .env
.
python graph_build.py
Skrip ini akan memuat semua CSV yang diperlukan secara berurutan, membuat node dan hubungan, serta menyusun grafik pengetahuan film lengkap Anda.
Memvalidasi Grafik
Setelah dimuat, Anda dapat memvalidasi grafik dengan menjalankan kueri Cypher sederhana seperti:
MATCH (m:Movie) RETURN m LIMIT 5;
MATCH (a:Actor)-[:ACTED_IN]->(m:Movie) RETURN a.name, m.title LIMIT 5;
Sekarang Anda akan melihat grafik yang diisi dengan film, orang, genre, dan lainnya — siap untuk diperkaya secara semantik di langkah berikutnya.
6. Membuat dan Memuat Embedding untuk melakukan Penelusuran Kemiripan Vektor
Untuk mengaktifkan penelusuran semantik di chatbot, kita perlu membuat embedding vektor untuk ringkasan film. Embedding ini mengubah data tekstual menjadi vektor numerik yang dapat dibandingkan kesamaannya, sehingga chatbot dapat mengambil film yang relevan meskipun kuerinya tidak sama persis dengan judul atau deskripsi.
⚠️ Catatan tentang Performa
Membuat penyematan untuk ribuan deskripsi film secara real time membutuhkan waktu dan resource yang banyak. Agar codelab ini efisien dan mudah diakses, kami telah melakukan prakomputasi penyematan untuk semua ~12.000 ringkasan film menggunakan
text-embedding-004
dan menyimpannya dalam file CSV yang tersedia secara publik.
Opsi 1: Memuat Penyematan yang Dihitung Sebelumnya melalui Cypher
Untuk melampirkan penyematan dengan cepat ke node Movie
yang sesuai di Neo4j, jalankan perintah Cypher berikut di Browser Neo4j:
LOAD CSV WITH HEADERS FROM 'https://storage.googleapis.com/neo4j-vertexai-codelab/movie_embeddings.csv' AS row
WITH row
MATCH (m:Movie {tmdbId: toInteger(row.tmdbId)})
SET m.embedding = apoc.convert.fromJsonList(row.embedding)
Perintah ini membaca vektor penyematan dari CSV dan melampirkan vektor tersebut sebagai properti (m.embedding
) di setiap node Movie
.
Opsi 2: Memuat Penyematan Menggunakan Python
Anda juga dapat memuat penyematan secara terprogram menggunakan skrip Python yang disediakan. Pendekatan ini berguna jika Anda bekerja di lingkungan Anda sendiri atau ingin mengotomatiskan prosesnya:
python load_embeddings.py
Skrip ini membaca CSV yang sama dari GCS dan menulis penyematan ke Neo4j menggunakan driver Neo4j Python.
[Opsional] Buat Embedding Sendiri (untuk Eksplorasi)
Jika ingin memahami cara pembuatan penyematan, Anda dapat mempelajari logika dalam skrip generate_embeddings.py
itu sendiri. Aplikasi ini menggunakan Vertex AI untuk menyematkan setiap teks ringkasan film menggunakan model text-embedding-004
.
Untuk mencobanya sendiri, buka dan jalankan bagian pembuatan penyematan kode. Jika menjalankan di Cloud Shell, Anda dapat mengomentari baris berikut, karena Cloud Shell sudah diautentikasi melalui akun aktif Anda:
# os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "./service-account.json"
⚠️ Menjalankan proses pembuatan penyematan lengkap akan menghabiskan kuota Vertex AI dan dapat memerlukan waktu yang cukup lama, terutama dengan ribuan data.
Setelah embedding dimuat ke Neo4j, pustaka pengetahuan film Anda menjadi berbasis semantik — siap mendukung penelusuran bahasa alami yang efektif menggunakan kemiripan vektor.
7. Chatbot Rekomendasi Film
Setelah pustaka pengetahuan dan penyematan Anda siap, saatnya menggabungkan semuanya ke dalam antarmuka percakapan — Chatbot Rekomendasi Film Anda.
Chatbot diimplementasikan menggunakan Python dan Gradio, framework ringan untuk membuat UI berbasis web. Logika utama berada di skrip chatbot.py
, yang terhubung ke instance Neo4j AuraDB dan melakukan penelusuran kemiripan vektor pada penyematan film berdasarkan perintah bahasa alami.
Chatbot menggunakan Gemini untuk meningkatkan pengalaman pengguna dengan menyaring kueri dan memformat respons. Hasil penelusuran ditampilkan dari Neo4j menggunakan kombinasi konteks grafik dan kemiripan vektor.
Menjalankan Chatbot secara lokal
Untuk meluncurkan chatbot, aktifkan lingkungan virtual Anda (jika belum dilakukan), lalu jalankan:
python chatbot.py
Anda akan melihat output yang mirip dengan berikut ini:
Old index dropped
Creating new vector index
Vector index created successfully
* Running on local URL: http://127.0.0.1:7860
To create a public link, set `share=True` in `launch()`.
💡 Jika Anda melihat peringatan penghentian penggunaan terkait allow_flagging, Anda dapat mengabaikannya untuk saat ini — aplikasi akan tetap berjalan.
Berinteraksi dengan Chatbot
Setelah berjalan, buka URL yang ditampilkan di terminal Anda, biasanya: 👉 http://127.0.0.1:7860
Anda akan disambut dengan antarmuka chat sederhana tempat Anda dapat mengetik kueri bahasa alami seperti:
- "Rekomendasikan thriller sci-fi seperti Inception"
- "Sarankan film romantis dengan Tom Hanks"
- "Saya ingin menonton drama keluarga yang menyenangkan"
Chatbot memproses kueri, melakukan penelusuran vektor semantik pada ringkasan film, dan menampilkan daftar film yang paling relevan — termasuk judul, ringkasan, dan tahun rilisnya.
Setiap rekomendasi dirender dalam tata letak bergaya kartu dengan hasil yang diformat dengan rapi.
Dengan chatbot yang berjalan secara lokal, Anda kini memiliki sistem rekomendasi film yang didukung GenAI dan berfungsi penuh yang menggabungkan grafik pengetahuan, LLM (Gemini), dan penelusuran semantik terbaik menggunakan penyematan Vertex AI.
8. (Opsional) Men-deploy ke Google Cloud Run
Jika ingin membuat Chatbot Rekomendasi Film dapat diakses secara publik di web, Anda dapat men-deploy-nya ke Google Cloud Run — platform serverless yang terkelola sepenuhnya dan otomatis menskalakan aplikasi Anda.
Sebelum men-deploy, pastikan file berikut ada di project Anda (file tersebut sudah disertakan dalam repo ini):
requirements.txt
– mencantumkan semua dependensi Python yang diperlukan untuk menjalankan aplikasi, termasuk Neo4j dan Vertex AI.Dockerfile
– menentukan lingkungan penampung, termasuk image dasar, penginstalan dependensi, dan cara aplikasi diluncurkan.
Langkah 1: Menyiapkan Variabel Lingkungan
Di terminal, tetapkan variabel lingkungan berikut (ganti nilai placeholder dengan setelan project Anda yang sebenarnya):
# Set your Google Cloud project ID
export GCP_PROJECT='your-project-id' # Change this
# Set your preferred deployment region
export GCP_REGION='us-central1'
Langkah 2: Buat Artifact Registry dan Build Container
# Artifact Registry repo and service name
export AR_REPO='your-repo-name' # Change this
export SERVICE_NAME='movies-chatbot' # Or any name you prefer
# Create the Artifact Registry repository
gcloud artifacts repositories create "$AR_REPO" \
--location="$GCP_REGION" \
--repository-format=Docker
# Authenticate Docker with Artifact Registry
gcloud auth configure-docker "$GCP_REGION-docker.pkg.dev"
# Build and submit the container image
gcloud builds submit \
--tag "$GCP_REGION-docker.pkg.dev/$GCP_PROJECT/$AR_REPO/$SERVICE_NAME"
Perintah ini memaketkan aplikasi Anda menggunakan Dockerfile
dan mengupload image container ke Google Cloud Artifact Registry.
Langkah 3: Deploy ke Cloud Run
Sebelum men-deploy, pastikan semua variabel lingkungan yang diperlukan (misalnya, Kredensial Neo4j, setelan project) tercantum dalam file .env
Anda.
Gunakan cuplikan berikut untuk mengonversi file .env
secara dinamis menjadi format yang kompatibel dengan flag --set-env-vars
:
ENV_VARS=$(grep -v '^#' .env | sed 's/ *= */=/g' | xargs -I{} echo -n "{},")
ENV_VARS=${ENV_VARS%,}
Sekarang, deploy aplikasi Anda:
gcloud run deploy "$SERVICE_NAME" \
--port=8080 \
--image="$GCP_REGION-docker.pkg.dev/$GCP_PROJECT/$AR_REPO/$SERVICE_NAME" \
--allow-unauthenticated \
--region=$GCP_REGION \
--platform=managed \
--project=$GCP_PROJECT \
--set-env-vars="GCP_PROJECT=$GCP_PROJECT,GCP_REGION=$GCP_REGION,$ENV_VARS"
Mengakses Chatbot
Setelah di-deploy, Cloud Run akan menampilkan URL layanan publik dalam format:
https://movies-chatbot-[UNIQUE_ID].${GCP_REGION}.run.app
Buka URL di browser Anda untuk mengakses chatbot. Anda akan melihat UI Gradio yang sama yang berjalan di cloud, yang dapat menerima kueri dan merespons dengan rekomendasi film.
Catatan & Tips
- Pastikan
Dockerfile
Anda menjalankanpip install -r requirements.txt
selama build. - Jika tidak menggunakan Cloud Shell, Anda harus mengautentikasi lingkungan menggunakan Akun Layanan dengan izin Vertex AI dan Artifact Registry.
- Anda dapat memantau log dan metrik deployment dari Konsol Google Cloud > Cloud Run.
Anda juga dapat membuka Cloud Run dari konsol Google Cloud dan akan melihat daftar layanan di Cloud Run. Layanan movies-chatbot
harus menjadi salah satu layanan (jika bukan satu-satunya) yang tercantum di sana.
Anda dapat melihat detail layanan seperti URL, konfigurasi, log, dan lainnya dengan mengklik nama layanan tertentu (movies-chatbot
dalam kasus kami).
Dengan demikian, Chatbot Rekomendasi Film Anda kini di-deploy, skalabel, dan dapat dibagikan. 🎉
9. Pembersihan
Agar tidak menimbulkan biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam postingan ini, ikuti langkah-langkah berikut:
- Di konsol Google Cloud, buka halaman Manage resources.
- Dalam daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
10. Selamat
Anda telah berhasil mem-build dan men-deploy chatbot rekomendasi film yang didukung grafik dan ditingkatkan dengan AI Generatif menggunakan Neo4j, Vertex AI, dan Gemini. Dengan menggabungkan kemampuan pemodelan ekspresif Neo4j dengan kecanggihan semantik penyematan Vertex AI dan kecerdasan percakapan Gemini, Anda telah membuat sistem intuitif dan cerdas yang memahami kueri bahasa alami dan menampilkan rekomendasi film yang relevan secara kontekstual.
Sepanjang codelab ini, Anda akan:
- Membuat pustaka pengetahuan yang kaya dan saling terhubung dari set data film dunia nyata
- Embedding vektor yang dihasilkan dan terintegrasi untuk memungkinkan penelusuran kemiripan semantik
- Memanfaatkan Gemini untuk mendukung interaksi bahasa alami
- Membuat antarmuka chatbot yang sederhana namun canggih menggunakan Gradio
- Secara opsional men-deploy aplikasi menggunakan Google Cloud Run untuk skalabilitas dan akses
Pendekatan ini tidak terbatas pada film — arsitektur yang sama dapat diperluas ke buku, musik, produk, makalah akademis, atau domain apa pun yang memerlukan hubungan dan semantik. Seiring model GenAI multimodal seperti Gemini terus berkembang, Anda dapat memperkaya aplikasi dengan pemahaman yang lebih mendalam, interaksi yang dipersonalisasi, dan output multi-format.
Teruslah bereksplorasi, teruslah membangun — dan jangan lupa untuk terus mendapatkan info terbaru dari Neo4j, Vertex AI, dan Google Cloud untuk meningkatkan kualitas aplikasi cerdas Anda.