Rag-Model / README.md
Abhisingh-18's picture
Mirror of github.com/Abhisingh18/Rag-Model
9ce3455 verified
|
Raw
History Blame Contribute Delete
6.77 kB
# RAG Document Analysis System
![NDMA Logo](https://img.shields.io/badge/NDMA-Government%20of%20India-blue)
![SIH 2025](https://img.shields.io/badge/SIH-2025-green)
![Team](https://img.shields.io/badge/Team-JARVIS%20GGV-purple)
A comprehensive RAG (Retrieval-Augmented Generation) based document analysis system for analyzing disaster management training data. Built for the National Disaster Management Authority (NDMA) as part of Smart India Hackathon 2025.
## 🌟 Features
- **πŸ“€ Multi-Format Upload**: Support for PDF, Excel (.xlsx, .xls), and CSV files
- **πŸ€– AI-Powered Analysis**: Uses Google Gemini AI for intelligent data analysis
- **πŸ“Š Interactive Dashboard**: Beautiful visualizations with charts and metrics
- **πŸ“„ Government Reports**: Auto-generate professional PDF reports in government format
- **πŸ” RAG-based Q&A**: Ask questions about your uploaded documents
- **πŸ’Ύ Data Persistence**: MongoDB storage for analysis history
- **🎨 Modern UI**: Glassmorphism design with smooth animations
## πŸ—οΈ Architecture
```
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ React Frontend β”‚
β”‚ (Vite + UI) β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”‚
β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Express API β”‚
β”‚ (Node.js) β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”‚
β”Œβ”€β”€β”€β”€β”΄β”€β”€β”€β”€β”
β–Ό β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚MongoDB β”‚ β”‚Gemini AI β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
```
## πŸš€ Quick Start
### Prerequisites
- Node.js (v18 or higher)
- MongoDB (local or Atlas)
- Google Gemini API Key
### Installation
1. **Clone the repository**
```bash
cd "c:\Users\91979\OneDrive\Desktop\Rag Model"
```
2. **Setup Backend**
```bash
cd backend
npm install
```
3. **Configure Environment Variables**
Edit `backend/.env` and add your credentials:
```env
GEMINI_API_KEY=your_gemini_api_key_here
MONGODB_URI=mongodb://localhost:27017/rag-document-analysis
```
4. **Setup Frontend**
```bash
cd ../frontend
npm install
```
### Running the Application
1. **Start MongoDB** (if running locally)
```bash
mongod
```
2. **Start Backend Server**
```bash
cd backend
npm run dev
```
Backend will run on `http://localhost:5000`
3. **Start Frontend** (in a new terminal)
```bash
cd frontend
npm run dev
```
Frontend will run on `http://localhost:5173`
4. **Open in Browser**
Navigate to `http://localhost:5173`
## πŸ“– Usage Guide
### 1. Upload Training Data
- Click on the upload area or drag & drop your file
- Supported formats: PDF, Excel, CSV
- Maximum file size: 10MB
- Click "Upload & Analyze"
### 2. View Analysis Dashboard
- Automatic analysis using AI
- View key metrics (trainings, participants, completion rates)
- Interactive charts for theme and state distribution
- Gap analysis showing underserved areas
- Key insights and recommendations
### 3. Download Report
- Click on "Report" tab
- Preview the government-format report
- Download as PDF
- Share with stakeholders
## πŸ“ Project Structure
```
Rag Model/
β”œβ”€β”€ backend/
β”‚ β”œβ”€β”€ models/
β”‚ β”‚ └── Document.js # MongoDB schema
β”‚ β”œβ”€β”€ routes/
β”‚ β”‚ β”œβ”€β”€ upload.js # Upload endpoints
β”‚ β”‚ └── analysis.js # Analysis endpoints
β”‚ β”œβ”€β”€ services/
β”‚ β”‚ β”œβ”€β”€ documentParser.js # PDF/Excel/CSV parser
β”‚ β”‚ β”œβ”€β”€ ragEngine.js # RAG implementation
β”‚ β”‚ β”œβ”€β”€ analysisService.js # AI analysis logic
β”‚ β”‚ └── reportGenerator.js # PDF report generation
β”‚ β”œβ”€β”€ server.js # Express server
β”‚ └── package.json
β”‚
β”œβ”€β”€ frontend/
β”‚ β”œβ”€β”€ src/
β”‚ β”‚ β”œβ”€β”€ components/
β”‚ β”‚ β”‚ β”œβ”€β”€ FileUpload.jsx # Upload component
β”‚ β”‚ β”‚ β”œβ”€β”€ AnalysisDashboard.jsx # Dashboard
β”‚ β”‚ β”‚ └── ReportPreview.jsx # Report preview
β”‚ β”‚ β”œβ”€β”€ App.jsx # Main app
β”‚ β”‚ β”œβ”€β”€ main.jsx # Entry point
β”‚ β”‚ └── index.css # Styles
β”‚ β”œβ”€β”€ index.html
β”‚ β”œβ”€β”€ vite.config.js
β”‚ └── package.json
β”‚
└── README.md
```
## πŸ”§ API Endpoints
### Upload & Analysis
- `POST /api/upload` - Upload and analyze document
- `GET /api/upload/documents` - Get all documents
- `GET /api/upload/document/:id` - Get specific document
- `DELETE /api/upload/document/:id` - Delete document
### Analysis & Reports
- `POST /api/analysis/ask` - Ask question about document (RAG)
- `GET /api/analysis/report/:filename` - Download report
- `GET /api/analysis/stats` - Get aggregate statistics
## 🎨 Tech Stack
**Backend:**
- Node.js + Express
- MongoDB + Mongoose
- Google Gemini AI
- PDFKit (report generation)
- Multer (file uploads)
- pdf-parse, xlsx, csv-parser
**Frontend:**
- React 18
- Vite
- Recharts (data visualization)
- React Dropzone
- Lucide React (icons)
- Axios
## πŸ“Š Sample Data Format
### Excel/CSV Format
```csv
Training ID,Date,Location,State,Theme,Participants,Trainer,Duration,Completion Rate
TR001,2024-01-15,Delhi,Delhi,Earthquake,50,Dr. Sharma,2 days,95%
TR002,2024-01-20,Mumbai,Maharashtra,Flood,75,Mr. Patel,3 days,88%
```
### Analysis Output
```json
{
"totalTrainings": 150,
"totalParticipants": 5000,
"themeDistribution": {
"Earthquake": 40,
"Flood": 60,
"Cyclone": 30
},
"stateWiseCoverage": {
"Delhi": 20,
"Maharashtra": 35
},
"averageCompletionRate": "91%",
"gapAnalysis": {
"underservedStates": ["Nagaland", "Mizoram"],
"underservedThemes": ["Tsunami"]
},
"recommendations": [...]
}
```
## πŸ” Environment Variables
| Variable | Description | Required |
|----------|-------------|----------|
| `GEMINI_API_KEY` | Google Gemini API key | Yes |
| `MONGODB_URI` | MongoDB connection string | Yes |
| `PORT` | Backend server port | No (default: 5000) |
| `CLIENT_URL` | Frontend URL for CORS | No (default: http://localhost:5173) |
## 🀝 Contributing
This project was developed for Smart India Hackathon 2025 by Team JARVIS GGV.
## πŸ“ License
MIT License - Feel free to use for educational and government purposes.
## πŸ‘₯ Team JARVIS GGV
Smart India Hackathon 2025
Problem Statement ID: SIH25258
Theme: Disaster Management
---
**For Official Use by NDMA, Government of India**