# Multilingual Health QA — Zindi Challenge
Retrieval-first pipeline for the Zindi Multilingual Health Question Answering competition. Answers health questions in eight African language subsets by finding the best matching question in a labeled knowledge bank.
**Best results:** Val weighted **0.4954** (EXP 17) | Zindi public **0.579346** (EXP 16)
Demo Video:
youtu.be
## Quick start
### 1. Clone and install
```bash
git clone
github.com
cd African-Language-Health-QA-Challenge
pip install -r requirements.txt
```
### 2. Add competition data
Download from Zindi and place in `data/`:
```
data/
Train.csv
Val.csv
Test.csv
SampleSubmission.csv
```
### 3. Run notebooks in order
Open `notebooks/` and run from `01_eda.ipynb` through `10_experiment_exp16_rrf.ipynb`. Each notebook is self-contained and logs results to `reports/experiment_log.csv`.
### 4. Generate a Zindi submission
**Best Zindi public score (EXP 16):**
```bash
python scripts/run_exp16.py --submit
```
Output: `submissions/exp16_rrf_submission.csv`
**Best Val model (EXP 17):**
```bash
python scripts/run_exp17.py --submit
```
Output: `submissions/exp17_routing_submission.csv`
---
## Google Colab (mT5 fine-tuning)
Fine-tune mT5 for generative experiments (EXP 12, 15):
colab.research.google.com
**Steps:**
1. Open `notebooks/colab_train_mt5.ipynb` in Colab
2. Set runtime to **T4 GPU**
3. Upload `Train.csv` when prompted
4. Download `mt5-health.zip` and unzip to `models/mt5-health/`
5. Run `notebooks/09_experiment_exp15_mt5_hybrid.ipynb` locally
---
## Project structure
```
African-Language-Health-QA-Challenge/
├── data/ # Competition CSVs (not in git — download from Zindi)
├── notebooks/ # EDA + experiments 01–17
├── src/ # Shared retrieval and experiment utilities
├── scripts/ # CLI runners for best submiss …