Pencarian Film dengan API Gemini, Pencarian Vektor MongoDB, dan StreamLit UI
Keterangan:
Proyek ini mengimplementasikan aplikasi pencarian film yang memanfaatkan kekuatan:
- Google Gemini API: Untuk generasi embedding vektor yang efisien, menangkap makna semantik dari plot film.
- MongoDB Vector Search: Untuk mengambil film dengan plot secara semantik mirip dengan permintaan pencarian pengguna.
- StreamLit: Untuk membuat aplikasi web yang ramah pengguna dan interaktif.
Fitur:
- Pengguna dapat memasukkan permintaan pencarian untuk film.
- Aplikasi menggunakan API Gemini untuk menghasilkan representasi vektor dari kueri.
- Kemudian melakukan pencarian vektor di dalam MongoDB untuk menemukan film dengan embeddings plot yang serupa.
- Antarmuka pengguna menampilkan detail film yang diambil, termasuk judul, ringkasan plot (jika tersedia), dan secara opsional, poster (jika URL hadir dalam data).
Persyaratan:
- Python 3.x
- Perpustakaan yang Diperlukan:
-
google-generativeai (untuk Gemini API) -
pymongo (untuk interaksi MongoDB) -
streamlit (untuk pengembangan aplikasi web)
Instalasi:
- Kloning repositori ini.
- Buat lingkungan virtual (disarankan):
python -m venv env
source env/bin/activate # Windows: envScriptsactivate.bat
- Instal perpustakaan yang diperlukan:
pip install google-generativeai pymongo streamlit
Pengaturan:
- Konfigurasikan Gemini API:
- Dapatkan Proyek Google Cloud dan aktifkan API Gemini.
- Buat tombol API dan atur variabel lingkungan
GOOGLE_API_KEY .
- Sambungkan ke MongoDB:
- Siapkan database MongoDB dengan koleksi yang berisi data film. Koleksi harus mencakup dokumen dengan bidang seperti
title , plot (untuk pencarian vektor), dan poster opsional (untuk tampilan gambar). - Ganti placeholder di
connection_string.py dengan string koneksi mongoDB Anda dan nama database/koleksi.
Penggunaan:
- Jalankan aplikasi:
streamlit run movie_recs.py
- Masukkan kueri pencarian di bidang input teks dan tekan "Enter".
- Aplikasi ini akan menampilkan daftar film yang secara semantik cocok dengan kueri Anda, bersama dengan detailnya.