| ---
|
| 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.
|
|
|
| 
|
|
|
| ---
|
|
|
| ## β¨ 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.
|
|
|
| 
|
|
|
| ## βοΈ 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`.
|
| |