FAWZY.AI
FAWZY.AI is a Retrieval-Augmented Generation (RAG) chatbot embedded in this portfolio. It answers questions about projects/skills using a FAISS vector index over local knowledge files plus content synced from the Django database. It also includes admin operations (maintenance mode, tracking, and knowledge refresh) to make it safe to run publicly.
Demo: use the Fawzy chat page.
Project Details
Technologies
Key Metrics
FAISS (k=6)
Retrieval
all-MiniLM-L6-v2
Embeddings
Groq (Llama)
LLM
On/Off + Refresh
Admin controls
The Problem
Static portfolios force visitors to hunt for the right page. Common questions (e.g., "What is AnemoCare?", "What can Ahmed build?") take multiple clicks.
The goal was to add a conversational entry point that stays on-brand, links to the correct case studies, and can be temporarily disabled during updates.
The Solution
Built a RAG pipeline:
- Index: split knowledge into chunks, embed with Hugging Face, store in FAISS.
- Retrieve: fetch top relevant chunks per question (k=6).
- Generate: one LLM call using the retrieved context + a strict system prompt.
To reduce latency/cost, the "condense question" rewrite runs only on short follow-up messages instead of every turn.
Operations are controlled from Django admin (enable/disable chat, maintenance message, Excel tracking, refresh knowledge).
Architecture & Implementation
Flow:
- Portfolio (Django) serves
/fawzy/and provides/api/fawzy-settings/for runtime toggles. - Fawzy API (FastAPI) handles
/chatand/status. - RAG: optional rewrite → FAISS retrieval → LLM response.
Admin ops:
Chatbot enabledtoggles maintenance mode.Tracking enabledwrites Q&A rows to an Excel file.Refresh knowledgerebuilds embeddings + FAISS and hot-swaps the chatbot instance.
Results & Impact
- Visitors can explore the portfolio conversationally with links to relevant projects.
- Admin can pause the bot during updates and refresh knowledge without redeploying the portfolio site.
- Excel tracking enables quick manual evaluation and regression testing.
Next steps: tighten CORS, add rate limits, stream tokens for faster first response, and add a sitemap for project pages.