Codelab - Membuat Chatbot Rekomendasi Film menggunakan Neo4j dan Vertex AI

1. Ringkasan

Dalam codelab ini, Anda akan membuat chatbot rekomendasi film cerdas dengan menggabungkan kecanggihan Neo4j, Google Vertex AI, dan Gemini. Inti dari sistem ini adalah Grafik Pengetahuan Neo4j yang membuat model film, aktor, sutradara, genre, dan lainnya melalui jaringan yang kaya dengan node dan hubungan yang saling terhubung.

Untuk meningkatkan pengalaman pengguna dengan pemahaman semantik, Anda akan membuat penyematan vektor dari ringkasan plot film menggunakan model text-embedding-004 Vertex AI (atau yang lebih baru). Penyematan ini diindeks di Neo4j untuk pengambilan cepat berbasis kemiripan.

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:

  1. Membuat Pustaka Pengetahuan Neo4j dengan entity dan hubungan terkait film
  2. Membuat/Memuat penyematan teks untuk ringkasan film menggunakan Vertex AI
  3. Mengimplementasikan antarmuka chatbot Gradio yang didukung oleh Gemini yang menggabungkan penelusuran vektor dengan eksekusi Cypher berbasis grafik
  4. (Opsional) Men-deploy aplikasi ke Cloud Run sebagai aplikasi web mandiri

Yang akan Anda pelajari

  • Cara membuat dan mengisi grafik pengetahuan film menggunakan Cypher dan Neo4j
  • Cara menggunakan Vertex AI untuk membuat dan menggunakan penyematan teks semantik
  • Cara menggabungkan LLM dan Pustaka Pengetahuan untuk pengambilan cerdas menggunakan GraphRAG
  • Cara mem-build antarmuka chat yang mudah digunakan menggunakan Gradio
  • Cara men-deploy secara opsional di Google Cloud Run

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 (sangat membantu, tetapi tidak wajib)

Codelab ini, yang dirancang untuk developer dari semua level (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.

a194b635f913211b.png

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, atau Director
  • Hubungan dapat berupa ACTED_IN atau DIRECTED

Struktur ini memungkinkan Anda mengajukan pertanyaan seperti:

  • Dalam film apa aktor ini pernah tampil?
  • 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). 397a3c535b52d3f6.png
  • 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, kami dapat meningkatkan kualitas pengalaman chatbot — memungkinkannya untuk bernalar, mengambil, dan merespons dengan cara yang lebih relevan dan dipersonalisasi.

Pembuatan Gratis Neo4j AuraDB

  1. Buka https://console.neo4j.io
  2. Login dengan Akun Google atau email Anda.
  3. Klik "Create Free Instance".
  4. 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.

a1e29e56e6c412fc.png

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

  1. Di Konsol Google Cloud, di halaman pemilih project, pilih atau buat project Google Cloud.
  2. Pastikan penagihan diaktifkan untuk project Cloud Anda. Pelajari cara memeriksa apakah penagihan telah diaktifkan pada suatu project .
  3. 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.

Gambar tombol Aktifkan Cloud Shell

  1. Setelah terhubung ke Cloud Shell, Anda akan memeriksa apakah 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. 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: "Operasi .... berhasil diselesaikan".

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 proses penerapan.

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 Anda:

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:

66221fd0d0e5202f.png

Pilih folder neo4j-vertexai-codelab dan Anda akan melihat folder terbuka dengan struktur yang agak mirip seperti yang ditunjukkan di bawah ini:

e49542efd70de22e.png

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, dan NEO4J_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 dan LOCATION:
  • 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 tetapkan LOCATION 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.

9e3a1dc4c286af1b.png

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_data/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 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 penyematan vektor untuk ringkasan film. Embedding ini mengubah data tekstual menjadi vektor numerik yang dapat dibandingkan kemiripannya, sehingga chatbot dapat mengambil film yang relevan meskipun kuerinya tidak sama persis dengan judul atau deskripsi.

bcca07eaee60787b.png

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"

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 vektor Anda diterapkan, sekarang saatnya menggabungkan semuanya ke dalam antarmuka percakapan yang berfungsi penuh — Chatbot Rekomendasi Film yang didukung GenAI.

Chatbot ini diimplementasikan di Python menggunakan Gradio, framework web ringan untuk membuat antarmuka pengguna yang intuitif. Logika inti berada di app.py, yang terhubung ke instance Neo4j AuraDB Anda dan menggunakan Google Vertex AI dan Gemini untuk memproses dan merespons kueri natural language.

Cara Kerjanya

  1. Pengguna mengetik kueri bahasa alamimisalnya, "Rekomendasikan film thriller fiksi ilmiah seperti Interstellar"
  2. Buat embedding vektor untuk kueri menggunakan model text-embedding-004 Vertex AI
  3. Melakukan penelusuran vektor di Neo4j untuk mengambil film yang secara semantik mirip
  4. Gunakan Gemini untuk:
  • Menafsirkan kueri dalam konteks
  • Membuat kueri Cypher kustom berdasarkan hasil penelusuran vektor dan skema Neo4j
  • Jalankan kueri untuk mengekstrak data grafik terkait (misalnya, aktor, sutradara, genre)
  • Merangkum hasil secara percakapan untuk pengguna

c628f853e86ff61b.png

Pendekatan campuran ini, yang dikenal sebagai GraphRAG (Graph Retrieval-Augmented Generation), menggabungkan pengambilan semantik dan penalaran terstruktur untuk menghasilkan rekomendasi yang lebih akurat, kontekstual, dan dapat dijelaskan.

Menjalankan Chatbot secara lokal

Aktifkan lingkungan virtual Anda (jika belum aktif), lalu luncurkan chatbot dengan:

python app.py

Anda akan melihat output yang mirip dengan berikut ini:

Vector index 'overview_embeddings' already exists. No need to create a new one.
* Running on local URL:  http://0.0.0.0:8080
To create a public link, set `share=True` in `launch()`.

💡 Untuk membagikan chatbot secara eksternal, tetapkan share=True dalam fungsi launch() di app.py.

Berinteraksi dengan Chatbot

Buka URL lokal yang ditampilkan di terminal Anda (biasanya 👉 http://0.0.0.0:8080) untuk mengakses antarmuka chatbot.

Coba ajukan pertanyaan seperti:

  • "Apa yang harus saya tonton jika saya menyukai Interstellar?"
  • "Sarankan film romantis yang disutradarai oleh Nora Ephron"
  • "Saya ingin menonton film keluarga dengan Tom Hanks"
  • "Temukan film thriller yang melibatkan kecerdasan buatan"

a194b635f913211b.png

Chatbot akan:

✅ Memahami kueri

✅ Menemukan plot film yang mirip secara semantik menggunakan embedding

✅ Buat dan jalankan kueri Cypher untuk mengambil konteks grafik terkait

✅ Menampilkan rekomendasi yang ramah dan dipersonalisasi — semuanya dalam hitungan detik

Yang Anda Miliki Sekarang

Anda baru saja membuat chatbot film yang didukung GraphRAG yang menggabungkan:

  • Penelusuran vektor untuk relevansi semantik
  • Penalaran grafik pengetahuan dengan Neo4j
  • Kemampuan LLM melalui Gemini
  • Antarmuka chat yang lancar dengan Gradio

Arsitektur ini membentuk fondasi yang dapat Anda perluas ke sistem penelusuran, rekomendasi, atau penalaran yang lebih canggih yang didukung oleh GenAI.

8. (Opsional) Men-deploy ke Google Cloud Run

a194b635f913211b.png

Jika ingin membuat Chatbot Rekomendasi Film dapat diakses secara publik, Anda dapat men-deploy-nya ke Google Cloud Run — platform serverless yang terkelola sepenuhnya yang menskalakan aplikasi secara otomatis dan memisahkan semua masalah infrastruktur.

Deployment ini menggunakan:

  • requirements.txt — untuk menentukan dependensi Python (Neo4j, Vertex AI, Gradio, dll.)
  • Dockerfile — untuk memaketkan aplikasi
  • .env.yaml — untuk meneruskan variabel lingkungan dengan aman saat runtime

Langkah 1: Siapkan .env.yaml

Buat file bernama .env.yaml di direktori utama Anda dengan konten seperti:

NEO4J_URI: "neo4j+s://<your-aura-db-uri>"
NEO4J_USER: "neo4j"
NEO4J_PASSWORD: "<your-password>"
PROJECT_ID: "<your-gcp-project-id>"
LOCATION: "<your-gcp-region>"  # e.g. us-central1

💡 Format ini lebih disukai daripada --set-env-vars karena lebih skalabel, dapat dikontrol versi, dan dapat dibaca.

Langkah 2: 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

Sekarang, deploy aplikasi Anda menggunakan file .env.yaml untuk konfigurasi runtime:

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 \
  --env-vars-file=.env.yaml

Mengakses Chatbot

Setelah di-deploy, Cloud Run akan memberikan URL publik seperti:

https://movies-reco-[UNIQUE_ID].${GCP_REGION}.run.app

Buka URL ini di browser Anda untuk mengakses antarmuka chatbot Gradio yang di-deploy — siap menangani rekomendasi film menggunakan GraphRAG, Gemini, dan Neo4j.

Catatan & Tips

  • Pastikan Dockerfile Anda menjalankan pip 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.

bccf390b7099e73b.png

Anda dapat melihat detail layanan seperti URL, konfigurasi, log, dan lainnya dengan mengklik nama layanan tertentu (movies-chatbot dalam kasus kami).

3709b596167cdaa0.png

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:

  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.

10. Selamat

Anda telah berhasil mem-build dan men-deploy chatbot rekomendasi film yang didukung GraphRAG dan ditingkatkan dengan AI Generatif menggunakan Neo4j, Vertex AI, dan Gemini. Dengan menggabungkan kemampuan pemodelan native grafik Neo4j dengan penelusuran semantik melalui Vertex AI dan penalaran bahasa alami melalui Gemini, Anda telah membuat sistem cerdas yang lebih dari sekadar penelusuran dasar — sistem ini memahami niat pengguna, menalar berdasarkan data yang terhubung, dan merespons secara percakapan.

Dalam codelab ini, Anda telah mencapai hal berikut:

Membuat Grafik Pengetahuan film dunia nyata di Neo4j untuk membuat model film, aktor, genre, dan hubungan

Embedding vektor yang dihasilkan untuk ringkasan plot film menggunakan model penyematan teks Vertex AI

Menerapkan GraphRAG, yang menggabungkan penelusuran vektor dan kueri Cypher yang dihasilkan LLM untuk penalaran multi-hop yang lebih mendalam

Gemini terintegrasi untuk menafsirkan pertanyaan pengguna, membuat kueri Cypher, dan meringkas hasil grafik dalam bahasa alami

Membuat antarmuka chat yang intuitif menggunakan Gradio

Secara opsional men-deploy chatbot ke Google Cloud Run untuk hosting tanpa server yang skalabel

Apa Langkah Selanjutnya?

Arsitektur ini tidak terbatas pada rekomendasi film — dapat diperluas ke:

  • Platform penemuan buku dan musik
  • Asisten riset akademis
  • Mesin rekomendasi produk
  • Asisten pengetahuan kesehatan, keuangan, dan hukum

Di mana pun Anda memiliki hubungan kompleks + data teks yang kaya, kombinasi Knowledge Graph + LLM + penyematan semantik ini dapat mendukung aplikasi cerdas generasi berikutnya.

Seiring berkembangnya model GenAI multimodal seperti Gemini, Anda akan dapat menggabungkan konteks, gambar, ucapan, dan personalisasi yang lebih kaya untuk membuat sistem yang benar-benar berfokus pada manusia.

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. Jelajahi tutorial grafik pengetahuan langsung lainnya di Neo4j GraphAcademy.

Dokumen referensi