Welcome to MCA Pathfinder, a Real-time Augmented Generation (RAG)-based application designed to help students of APJ Abdul Kalam Technological University (KTU) easily access and explore their MCA syllabus. This application is built using Pathway, a robust framework for live Gen AI projects, and Docker for seamless containerization, ensuring it's production-ready and highly scalable.
MCA Pathfinder offers real-time updates, adapting to any changes in the syllabus or other educational resources stored as PDFs in the project's data folder. You can even integrate the app with shared Google Drive files, ensuring the information remains current when collaborators edit or update the files.
- What Problem It Solves
- Architecture Overview
- Getting Started
- Running the RAG Service
- Demo
- Contributing
- Contact Information
MCA Pathfinder solves the issue of accessing, navigating, and staying updated with the MCA syllabus for KTU students. Instead of manually searching through large PDFs, students can now ask questions like, "What are the subjects for Semester 1?" or "Is there a project submission for Semester 3?" and receive real-time responses.
With data stored as PDFs in the project’s data folder, the application fetches and processes syllabus details dynamically. Additionally, it has the capability to connect with shared Google Drives or 300+ other data sources, making the project highly flexible and adaptable. Explore the Pathway framework for more details here and access further Pathway app templates here.
The heart of the application, Pathway provides a powerful RAG framework that ensures real-time updates, in-memory scalable vector storage, and the ability to process new data on the go. It adapts to any changes in the PDFs within the data folder, updating the AI's knowledge base accordingly.
To ensure seamless deployment across various environments, the application is fully containerized using Docker. This makes the app easy to deploy, test, and manage, whether running on your local machine or in production.
The application ingests data stored as PDFs in the local data folder. These PDFs contain the latest MCA syllabus information, and the app dynamically processes them. You can extend the data ingestion capabilities by connecting to Google Drive, allowing the app to pull live updates when syllabus files are edited by collaborators.
Pip (check with "pip --version")
Git (check with "git --version")
Windows: Docker/WSL
OpenAI API key (or use alternatives like Google Gemini, (link unavailable), etc.)
VS Code (or any Python compatible IDE)git clone https://github.com/yadhukrishnx/projectname.git
cd projectnamedocker build -t raggem .(Make sure that Docker ENgine is Started)
In Windows
docker run -v "${PWD}/data:/app/data" -p 8000:8000 raggemIn Linux/Mac
docker run -v "$(pwd)/data:/app/data" -p 8000:8000 --env-file .env raggemcurl -X POST "http://localhost:8000/v1/pw_list_documents" -H "accept: */*" -H "Content-Type: application/json" curl -X POST "http://localhost:8000/v1/pw_ai_answer" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"prompt\": \"Subject in semester 1?\"}" streamlit run ui.pyIf you've already built a pipeline with Open AI, this is where things get slightly different. Configure your key in a .env file by providing it as follows:
GEMINI_API_KEY=******* Replace ******* with your actual Gemini API key. Save the file as .env in the demo-question-answering folder
20241013084934.mp4
A short demo video showcasing how the application responds to queries about the MCA syllabus.
1.What to learn in software engineering module 2 2.What is the outcome of Advanced Data Structure COurse 3.Do my syllabus cover git topics 4.In which subject will i learn git 5.which are the reference book for software engineering
I welcome contributions from developers to improve or extend this project! Please follow these guidelines:
Fork the repository. Create a new branch (git checkout -b feature-name). Make your changes and commit them (git commit -m 'Add new feature'). Push the branch (git push origin feature-name). Create a Pull Request. For any significant changes, please open an issue first to discuss what you would like to change.