Multilingual health Q&A for low-resource African languages. Llama 3.1 LoRA, BGE-M3 RAG, Public LB 0.620.
# 🌍 African Health QA
**Assistant de questions-réponses médicales multilingue pour 8 langues africaines**
---
## Le projet
Une question de santé maternelle, sexuelle ou reproductive, posée dans une
langue africaine peu dotée en ressources numériques (akan, amharique,
luganda, swahili...), obtient une réponse fiable, dans la même langue,
générée par un modèle de langage spécialisé.
Ce projet a été développé dans le cadre du **challenge Zindi/ITU
"Multilingual Health Question Answering in Low-Resource African
Languages"** (doté de 5 000 $), où l'objectif était de répondre
automatiquement à des questions de santé dans 8 combinaisons
langue × pays, en s'appuyant sur un corpus d'entraînement de ~36 500
paires question-réponse.
**Score final sur le leaderboard public : 0.620** — soumission actuellement
en cours de revue de code par les organisateurs.
```
Score = 0.37 Ă— ROUGE-1 F1 + 0.37 Ă— ROUGE-L F1 + 0.26 Ă— Jugement LLM
```
## Pourquoi ce projet est intéressant
Au-delà du score, ce projet illustre une chaîne complète de mise en
production d'un modèle de langage fine-tuné, du prototypage jusqu'au
déploiement public :
- **Fine-tuning LoRA** d'un LLM 8B sur un corpus multilingue restreint
- **Pipeline RAG** combinant un retriever multilingue (BGE-M3) et un
reranker (CrossEncoder) pour ancrer les générations sur des données
réelles
- **Stratégie de décodage adaptative par langue** — l'échantillonnage
aide certaines langues et casse complètement la génération amharique ;
le pipeline final route chaque langue vers la méthode qui fonctionne
réellement pour elle
- **Quantification et déploiement gratuit** — modèle fusionné, converti
en GGUF 4 bits, servi sur CPU via `llama.cpp` dans une démo Gradio
accessible publiquement
## Architecture
```
Question
│
â–Ľ
Embedding BGE-M3 (multilingue, 1024 dim)
│
â–Ľ
Recherche FAISS (index dédié par langue)
│
â–Ľ
Reranking CrossEncoder → top-3 contextes pertinents
│
â–Ľ
Llama-3.1-8B-Instruct + LoRA (fine-tuné sur Train+Val) …