Spaces:
Configuration error
Configuration error
| # Quran RAG Agent System | |
| A comprehensive AI-powered system designed to provide deep, scholarly Tafsir (interpretations) of the Quran. Built using LangChain, OpenAI, and ChromaDB, the system employs a robust **Dual-Agent Architecture** to accurately extract Quranic references and contextualize interpretations from a diverse pool of authenticated scholarly works. | |
| ## Features | |
| - **Dual-Agent Workflow:** | |
| - **Contextualizing Agent (Quran Expert):** Precision-parses user queries to identify and extract exact Ayah (verse) references. | |
| - **RAG Agent (Tafsir Specialist):** Analyzes the localized embeddings and generates high-level scholarly responses grounded explicitly in the retrieved Tafsir chunks. | |
| - **Robust Fallback Logic:** Identifies potential model token-limit exceptions when evaluating multiple scattered verses, safely downgrading to single-verse analysis and alerting the user. | |
| - **Interactive UI:** A full Gradio-based web interface (`quran_rag_agent.py`). | |
| - **RESTful API:** A FastAPI backend (`quran_api.py`) for integration into external apps. | |
| ## Prerequisites | |
| To run this project, make sure you have [Conda](https://docs.conda.io/en/latest/) installed on your primary system. | |
| ## Installation & Setup | |
| All execution and dependency management must happen inside the `quran_llm` Conda environment. | |
| 1. **Create and activate the Conda Environment:** | |
| ```bash | |
| conda create -n quran_llm python=3.10 -y | |
| conda activate quran_llm | |
| ``` | |
| 2. **Install Dependencies:** | |
| ```bash | |
| pip install -r requirements.txt | |
| ``` | |
| 3. **Environment Variables:** | |
| Create a `.env` file in the project's root directory and add your OpenAI API key: | |
| ```env | |
| OPENAI_API_KEY=your_openai_api_key_here | |
| ``` | |
| ## Running the Project | |
| ### Option 1: Gradio Web Interface | |
| To interact directly with the Quran Expert assistant through a user-friendly Chat UI: | |
| ```bash | |
| conda activate quran_llm | |
| python quran_rag_agent.py | |
| ``` | |
| > The web app will generally launch on `http://127.0.0.1:7860`. | |
| ### Option 2: FastAPI Server | |
| To launch the RESTful backend endpoints (great for frontend/mobile app integrations): | |
| ```bash | |
| conda activate quran_llm | |
| uvicorn quran_api:app --reload --host 0.0.0.0 --port 8000 | |
| ``` | |
| > Explore the interactive API documentation at `http://127.0.0.1:8000/docs`. | |
| ### Initial Run & Vector Store Ingestion | |
| The first time you run the application, it will dynamically authenticate with HuggingFace, download the `MohamedRashad/Quran-Tafseer` dataset, convert all verses and interpretations using OpenAI's `text-embedding-3-small` model, and build the persistent ChromaDB index locally. **This will take time**. Once complete, the vector index will be saved to `./chromadb_quran_tafsir` for instant startup on future executions. | |
| ## Architecture Guidelines | |
| To modify the core Tafsir generation prompts, update the System Prompts contained within: | |
| - `agent1_system_prompt` (Ayah parsing logic) | |
| - `agent2_system_prompt` (Generation, restriction, hallucination-guarding logic) | |
| Within both `quran_rag_agent.py` and `quran_api.py`. | |