# Digital Egypt Assistant | المساعد الرقمي لخدمات مصر
An AI-powered **Arabic-language chatbot** that helps citizens navigate Egypt's digital government services. Built with **Streamlit**, **LangChain**, and **RAG (Retrieval-Augmented Generation)** using a ChromaDB vector store and multilingual HuggingFace embeddings.
> اسألني عن أي خدمة رقمية متاحة على بوابة مصر الرقمية
---
## Features
- **Arabic-first** — Fully supports Arabic queries and responses using multilingual embeddings (`intfloat/multilingual-e5-large`)
- **RAG Architecture** — Retrieves relevant government service information from a local ChromaDB vector store before generating answers
- **Multi-LLM Support** — Switch between OpenAI GPT-4o, Together AI LLaMA 3, and Google Gemini from the sidebar
- **Session-aware Memory** — Conversation history is maintained across turns using `StreamlitChatMessageHistory`
- **Quick-access Service Buttons** — One-click buttons for the most commonly queried services (vehicle fines, social insurance, etc.)
- **Streaming Responses** — Answers are streamed chunk-by-chunk for a smooth experience
- **Self-contained** — No external web links; all answers are grounded in the internal knowledge base
---
## Tech Stack
| Component | Technology |
|---|---|
| Frontend | Streamlit |
| LLM Options | GPT-4o · LLaMA 3.3 70B · Gemini 2.0 Flash |
| LLM Framework | LangChain |
| Vector Store | ChromaDB |
| Embeddings | `intfloat/multilingual-e5-large` (HuggingFace) |
| RAG Chain | `create_retrieval_chain` + `create_stuff_documents_chain` |
| Memory | `StreamlitChatMessageHistory` |
---
## Project Structure
```
Digital-Egypt-Assistant/
├── app.py # Main Streamlit application
├── requirements.txt # Python dependencies
├── egypt_digital.pkl # Pickled data used to build the vector store
├── infloat/ # ChromaDB persistence directory
│ └── e5116b2d-.../ # Chroma collection files
└── README.md
```
---
## Getting Started
### Prerequi …