| --- |
| title: Video Rag |
| emoji: π₯ |
| colorFrom: blue |
| colorTo: indigo |
| sdk: docker |
| app_port: 7860 |
| pinned: false |
| --- |
| |
|
|
| # Video RAG System Project |
|
|
| This FastAPI-based Video RAG (Retrieval-Augmented Generation) system provides endpoints to: |
|
|
| 1. **Register & Authenticate** users |
| 2. **Transcribe** YouTube or uploaded videos |
| 3. **Query** the RAG system |
| 4. **Manage** sessions (list, view, delete) |
|
|
| --- |
|
|
| ## Endpoint Flow |
|
|
| ```mermaid |
| graph TD |
| A[POST /register] --> B[POST /token] |
| B --> C[POST /transcribe] |
| B --> D[POST /upload] |
| C --> E[Start RAG session] |
| D --> E |
| E --> F[POST /query] |
| E --> G[GET /sessions] |
| G --> H[GET /sessions/{session_id}] |
| H --> F |
| G --> I[DELETE /sessions/{session_id}] |
| ``` |
|
|
| 1. **User Registration & Login** |
| - **POST /register**: Create a new user. |
| - **POST /token**: Obtain JWT access token. |
|
|
| 2. **Video Transcription** |
| - **POST /transcribe** (YouTube URL): Transcribe via Google GenAI β split & store chunks β initialize chat history β return `session_id`. |
| - **POST /upload** (Multipart Form Video): Upload & transcribe file β split & store chunks β initialize chat history β return `session_id`. |
|
|
| 3. **Query RAG System** |
| - **POST /query** with `{ session_id, query }`: |
| β’ Rebuild FAISS retriever from MongoDB chunks |
| β’ Invoke ConversationalRetrievalChain |
| β’ Append messages to chat history |
| β’ Return `{ answer, session_id, source_documents }` |
| |
| 4. **Session Management** |
| - **GET /sessions**: List all sessions for current user. |
| - **GET /sessions/{session_id}**: Get full transcription & Q&A history. |
| - **DELETE /sessions/{session_id}**: Remove metadata, chunks, chat history, and video files. |
|
|
| --- |
|
|
| ## README.md |
|
|
| ```markdown |
| # Video RAG System |
| |
| ## Overview |
| A FastAPI application that: |
| |
| - Authenticates users (JWT) |
| - Transcribes videos (YouTube or upload) via Google GenAI |
| - Stores transcription chunks in MongoDB |
| - Builds a FAISS retriever on demand |
| - Provides a conversational retrieval endpoint |
| - Manages sessions and associated data |
| |
| ## API Endpoints |
| |
| | Method | Path | Auth Required | Description | |
| |--------|----------------------------|---------------|-----------------------------------------------| |
| | POST | /register | No | Create a new user | |
| | POST | /token | No | Login and return JWT token | |
| | POST | /transcribe | Yes | Transcribe YouTube video and init session | |
| | POST | /upload | Yes | Upload & transcribe video file | |
| | POST | /query | Yes | Run Q&A against a session | |
| | GET | /sessions | Yes | List all user sessions | |
| | GET | /sessions/{session_id} | Yes | Get session transcription & chat history | |
| | DELETE | /sessions/{session_id} | Yes | Delete session & all associated data | |
| |
| ## Usage |
| 1. Clone repo & install dependencies: |
| ```bash |
| pip install -r requirements.txt |
| ``` |
| 2. Create `.env` with your credentials (MongoDB, JWT secret, API keys). |
| 3. Run the app: |
| ```bash |
| uvicorn app.main:app --reload |
| ``` |
| 4. Interact via HTTP clients (curl, Postman) following the flow above. |
| |
| ## Folder Structure |
| ``` |
| rag_system/ |
| βββ app/ |
| β βββ main.py |
| β βββ config.py |
| β βββ dependencies.py |
| β βββ models/ |
| β βββ db/ |
| β βββ services/ |
| β βββ routes/ |
| β βββ utils/ |
| βββ temp_videos/ |
| βββ .env |
| βββ requirements.txt |
| βββ README.md |
| ``` |
| ``` |
| ``` |
| |