Video-Rag / README.md
Hammad712's picture
Fix: Add required HF YAML metadata for Docker
a333428
metadata
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

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

# 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
  1. Create .env with your credentials (MongoDB, JWT secret, API keys).
  2. Run the app:
    uvicorn app.main:app --reload
    
  3. 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