A Retrieval-Augmented Generation (RAG) chatbot that allows users to query and compare South African national budget documents (2023-2026). The system uses Large Language Models (LLMs) + vector search to answer natural language questions with grounded context from official budget PDFs.
# South African Budget RAG LLM Chatbot
An AI-powered **Retrieval-Augmented Generation (RAG)** chatbot that analyzes and compares South African national budget documents (2023-2026).
Built using modern LLM tooling, this project demonstrates **real-world NLP, semantic search, and multi-document reasoning** using LangChain’s latest architecture.
> It is deployed on Streamlit, you can try it out on:
sa-budget-rag-llm-chatbot.s…
---
> Prompt examples at the bottom with screenshots.
---
## 🚀 Features
* 🔍 **Semantic Search (RAG)** over budget PDFs
* 📊 **Multi-Year Budget Comparison (2023–2026)**
* 📚 **Source-Grounded Answers** (with document references)
* ⚡ **Fast Vector Search** using ChromaDB
* 🤖 **LLM-Powered Responses** (Groq / HuggingFace)
* 🌐 **Interactive Web App UI** built with Streamlit
* 🧠 Handles complex queries like:
* “Compare healthcare spending across years”
* “What are the priorities of the 2026 budget?”
* “Which document mentions social grants?”
---
## 🏗️ Architecture
```
User Query
↓
Retriever (ChromaDB)
↓
Relevant Budget Chunks
↓
Prompt Template
↓
LLM (Groq / HF)
↓
Final Answer (with context)
```
## 📂 Project Structure
```
South-African-Budget-NLP-RAG-Chatbot/
│
├── data/ # Budget PDFs (2023–2026)
├── screenshots/ # Demo screenshots
│
├── src/
│ ├── app.py # Streamlit UI
│ ├── chain.py # RAG pipeline (LCEL)
│ ├── ingest.py # Document loading & splitting
│ ├── llm.py # LLM configuration
│ ├── vectorstore.py # Embeddings + Chroma DB
│
├── requirements.txt
├── .env
└── README.md
```
---
## ⚙️ Installation
### 1. Clone the repo
```bash
git clone
github.com
cd South-African-Budget-NLP-RAG-Chatbot
```
### 2. Create virtual environment
```bash
python -m venv venv
```
### 3. Activate environment
**Windows (PowerShell):**
```bash
venv\Scripts\activate
```
**Mac/Linux:**
``` …