|
| 1 | +# nexREC: Graph-Based Movie Recommendation Engine 🎬 |
| 2 | + |
| 3 | + |
| 4 | +## The Story Behind nexREC |
| 5 | + |
| 6 | +nexREC was born out of a final-year academic project that took us on an incredible journey through the world of recommendation systems. What started as a simple idea evolved into a sophisticated graph-based recommendation engine that truly understands user preferences. |
| 7 | + |
| 8 | +### The Journey |
| 9 | + |
| 10 | +The path to building nexREC wasn't straightforward. We began by exploring traditional recommendation systems, diving deep into content-based filtering and collaborative filtering. However, we quickly realized that user preferences are incredibly diverse and complex - influenced by social circles, trends, and personal experiences. |
| 11 | + |
| 12 | +This realization led us to explore Graph Neural Networks (GNNs), a less-researched but promising area that could capture these complex relationships. After countless sleepless nights, hundreds of research papers, and numerous experiments, we developed a system that could instinctively respond to user needs. |
| 13 | + |
| 14 | +## Technical Implementation |
| 15 | + |
| 16 | +### Core Technologies |
| 17 | + |
| 18 | +- **Backend Framework**: Django & Django Rest Framework |
| 19 | +- **Frontend**: Remix |
| 20 | +- **Vector Database**: Milvus |
| 21 | +- **Relational Database**: PostgreSQL |
| 22 | +- **Machine Learning**: |
| 23 | + - Sentence Transformers (SBERT) |
| 24 | + - PyTorch |
| 25 | + - PyTorch Geometric |
| 26 | +- **Deployment**: |
| 27 | + - AWS Lightsail (Backend & Milvus) |
| 28 | + - Aiven Cloud (PostgreSQL) |
| 29 | + - HuggingFace (Models) |
| 30 | + - Vercel (Frontend) |
| 31 | + |
| 32 | +### Model Architecture |
| 33 | + |
| 34 | +We experimented with various GNN architectures including: |
| 35 | +- SAGEConv |
| 36 | +- GAT (Graph Attention Networks) |
| 37 | +- GATv2 |
| 38 | + |
| 39 | +After extensive hyperparameter tuning and optimization, we achieved an RMSE loss between 0.94 and 1.21, which is quite solid considering real-world rating deviations and data skewness. |
| 40 | + |
| 41 | +## Data Processing |
| 42 | + |
| 43 | +The project involved processing approximately 10k movies with user reviews. We used PySpark for efficient data cleaning and processing, which was a significant challenge in itself. The data distribution analysis and sampling experiments were crucial in achieving our final results. |
| 44 | + |
| 45 | +## Team |
| 46 | + |
| 47 | +This project wouldn't have been possible without the incredible teamwork of: |
| 48 | +- Basanta Shrestha |
| 49 | +- Pawan Shah |
| 50 | +- Suwash Shrestha |
| 51 | + |
| 52 | +## Getting Started |
| 53 | + |
| 54 | +### Prerequisites |
| 55 | + |
| 56 | +- Python 3.8+ |
| 57 | +- PostgreSQL |
| 58 | +- Milvus |
| 59 | + |
| 60 | + |
| 61 | + |
| 62 | +## Acknowledgments |
| 63 | + |
| 64 | +Special thanks to Sushan Kattel for the invaluable guidance in PySpark and data processing. |
| 65 | + |
| 66 | +--- |
| 67 | + |
| 68 | +*Note: The deployed version is currently offline due to AWS billing considerations. We're working on making it available again soon!* |
0 commit comments