--- title: veun app_file: app.py sdk: gradio sdk_version: 5.41.0 --- # ๐ŸŽฅ AI Video Chat Assistant with RAG Knowledge System An intelligent, multi-modal chatbot that can analyze video content, answer your questions, and remember past interactions using a sophisticated Retrieval-Augmented Generation (RAG) system. ![Demo Video](https://place-hold.it/800x450/667eea/ffffff?text=App+Screenshot+Here&fontsize=40) --- ## โœจ Features - **Intelligent Video Analysis**: Upload a video, and the assistant will use the Gemini 1.5 Flash model to understand its content. - **Multi-Modal Chat**: Ask questions about the uploaded video, and receive detailed, context-aware answers. - **Persistent Memory**: - **Short-Term Memory**: Uses **ChromaDB** to remember the conversation history within a single session. - **Long-Term Knowledge**: Uses a **FAISS Vector Store** to create a persistent, searchable knowledge base from all interactions (video analyses, Q&A), enabling cross-session insights. - **RAG-Powered Context**: Follow-up questions are enhanced with relevant context retrieved from both the current conversation and the long-term knowledge base. - **Interactive UI**: A user-friendly interface built with **Gradio**, featuring distinct sections for video interaction and knowledge base management. - **Robust Backend**: Powered by **FastAPI**, providing a scalable and efficient API. - **Debugging & Management**: The UI includes tools to directly query the knowledge base, add test data, and view system statistics. --- ## ๐Ÿ—๏ธ Architecture The application operates on a decoupled frontend-backend model. The Gradio UI serves as a pure client, making HTTP requests to the FastAPI backend, which houses all the AI logic, data processing, and state management. The core of the architecture is its **Dual-Memory System**: 1. **ChromaDB for Conversational Context**: Provides fast, session-specific memory. It answers the question, "What have we been talking about *right now*?". 2. **FAISS for Enduring Knowledge**: Creates a permanent, long-term knowledge base from key insights. It answers the question, "What has the assistant learned from *all past interactions*?". ### System Flow Diagram This diagram illustrates how a user request flows through the system, interacting with the dual-memory stores and the Gemini AI model. ![System Flow Diagram](https://raw.githubusercontent.com/HEMANT2027/Vuen_Code_Hackathon/fe52de20f0e4cbd6f90ce446018ed9631a1d6f90/Model_Architecture.png) ## โš™๏ธ Setup and Installation Follow these steps to get the application running on your local machine. ### 1. Prerequisites - Python 3.8 or higher - Git ### 2. Clone the Repository ```bash git clone [https://github.com/your-username/ai-video-chat-assistant.git](https://github.com/your-username/ai-video-chat-assistant.git) cd ai-video-chat-assistant ``` ### 3. Create a Virtual Environment It's highly recommended to use a virtual environment. ```bash # For Windows python -m venv venv venv\Scripts\activate # For macOS/Linux python3 -m venv venv source venv/bin/activate ``` ### 4. Install Dependencies Install all the required packages from the `requirements.txt` file. ```bash pip install -r requirements.txt ``` ### 5. Set Up Environment Variables Create a file named `.env` in the root directory of the project. This file will hold your Gemini API key. ``` # .env GEMINI_API_KEY="YOUR_GEMINI_API_KEY_HERE" ``` --- ## ๐Ÿš€ Running the Application Once the setup is complete, you can start the application with a single command: ```bash python app/main.py ``` You will see output indicating that the FastAPI backend and Gradio frontend are running: ``` ๐Ÿš€ Starting AI Video Chat Assistant... ๐Ÿ“Š FastAPI Backend: [http://127.0.0.1:8000](http://127.0.0.1:8000) ๐ŸŽจ Gradio Frontend: [http://127.0.0.1:7860](http://127.0.0.1:7860) ๐Ÿง  RAG System: with RAG Integration ====================================================================== ``` - Open your web browser and navigate to **`http://127.0.0.1:7860`** to use the application. --- ## ๐Ÿ“– How to Use 1. **Upload a Video**: Click the "๐ŸŽฌ Click to Upload Video" button and select a video file. 2. **Ask a Question**: Once the video is uploaded, the text box will become active. Type a question about the video (e.g., "What is happening in this video?") and press Enter or click "Send ๐Ÿš€". 3. **Chat**: The AI will respond. You can ask follow-up questions. The system will remember the context of the current conversation. 4. **Explore the Knowledge Base**: - Click the **"๐Ÿง  Knowledge Base"** tab. - **Search**: Type a query into the search box to find relevant information from all past interactions. - **Debug**: Use the **"๐ŸŽฏ Add Test Data"** button to populate the RAG store for testing and **"๐Ÿ“Š Show Stats"** to see its current state. 5. **Start a New Conversation**: Click the **"๐Ÿ”„ New Conversation"** button to clear the current state and start fresh with a new session ID. --- ## ๐Ÿ“ก API Endpoints The FastAPI backend exposes several endpoints. You can test them at `http://127.0.0.1:8000/docs`. | Method | Endpoint | Description | |--------|------------------------|-----------------------------------------------------------------------------| | `POST` | `/chat/video` | Main endpoint to chat with a video. Requires a video file and a prompt. | | `POST` | `/chat/text` | Handles text-only follow-up questions. | | `POST` | `/rag/query` | Directly queries the FAISS RAG knowledge base. | | `GET` | `/rag/stats` | Retrieves comprehensive statistics about the RAG system. | | `POST` | `/rag/debug` | Adds pre-defined test data to the RAG vector store. | | `POST` | `/rag/reinitialize` | Forces a re-initialization of the RAG vector store. | | `GET` | `/health` | A simple health check endpoint to verify system status. | --- ## ๐Ÿงช Debugging and Testing The project includes standalone scripts for testing the RAG system independently. - **`scripts/debug_rag.py`**: A comprehensive test suite that checks imports, adds data, runs test queries, and offers an interactive query mode. Run it with `python scripts/debug_rag.py`. - **`scripts/query_rag.py`**: A simple script to perform a similarity search on the RAG vector store. Modify the `query` variable inside the script and run with `python scripts/query_rag.py`.