Welcome to the Find-A-Movie application, a powerful tool designed to recommend movies based on textual descriptions. Our app harnesses cutting-edge natural language processing technologies (RAG - Retrieval Augmented Generation) to provide an intuitive movie discovery experience.
Explore our live application: Find-A-Movie
- Introduction
- Features
- Technology Stack
- Project Structure
- Getting Started
- Usage
- Deployment
- Contributing
- License
- Acknowledgments
Find-A-Movie is a web application that matches users with movies that closely align with the descriptions they provide. Utilizing the power of language models and vector similarity, our system can parse and understand complex descriptions, making the search for the perfect movie as easy as typing a sentence.
- Natural Language Understanding: Leverage language models to parse and comprehend user input.
- Vector Similarity Search: Utilize vector databases for efficient and relevant recommendations.
- User-Friendly Interface: Experience a clean and simple web interface that is easy to navigate.
- Frontend: HTML, CSS, JavaScript
- Backend: Flask (Python), Gunicorn
- NLP Library: LangChain, HuggingFace Embeddings
- Database: Chroma Vector Database
- Deployment: Google Cloud Run
/
├── chroma_data/ # Vector database for movie descriptions
├── website/ # Static files for the frontend (HTML/CSS/JS)
├── Dockerfile # Container configuration for the Flask API
├── movies.py # Core recommendation algorithms
├── python_api.py # Flask API routes and server configuration
└── streamlit_app.py # Streamlit application
- Python 3.9 or later
- Docker (for containerization and deployment)
-
Clone the repository:
ssh git clone https://github.com/omaratef3221/find-a-movie.git cd find-a-movie
-
Install the required Python packages:
pip install Flask gunicorn pandas langchain flask-cors sentence-transformers chromadb langchain-community
-
Run the Streamlit app:
streamlit run streamlit_app.py
-
For Flask API, navigate to the `website/` folder and change the API address in the JavaScript files to `localhost`.
To find a movie, simply:
- Navigate to the web application.
- Enter a description of the movie you're thinking about in the text area.
- Click on the "Find Movie" button to see the recommendations.
To deploy using Docker:
-
Build the Docker image:
docker build -t find-a-movie .
-
Run the Docker container:
docker run -p 5000:5000 find-a-movie
We welcome contributions from the community! Please see our Contributing Guide for more details.
This project is licensed under the MIT License. See the LICENSE file for details.
We would like to thank the developers and researchers whose work made this project possible. Special thanks to the creators of LangChain, HuggingFace, and ChromaDB.
We hope you enjoy using Find-A-Movie! For any questions or feedback, please feel free to open an issue or contact us.