Text-to-SQL system for Chichewa, a low-resource African language. The project explores LLM-based and hybrid approaches for translating natural language questions into SQL queries, supporting database-driven analytics and chatbot applications in low-resource settings.
# Chichewa Text-to-SQL
> **The first Text-to-SQL benchmark for Chichewa** — a low-resource Bantu language spoken by over 12 million people in Malawi and neighboring regions.
## Overview
Recent advances in Large Language Models (LLMs) have significantly improved Text-to-SQL performance in high-resource languages. However, their effectiveness in low-resource language settings remains largely underexplored. This work investigates the adaptation of LLMs for Text-to-SQL generation in Chichewa.
We construct a structured Chichewa Text-to-SQL benchmark consisting of **400 manually curated natural language–SQL pairs** grounded in a unified relational database covering agriculture, commodity prices, population statistics, market data, and food insecurity. We systematically evaluate open-source LLMs under zero-shot, random few-shot, and retrieval-augmented few-shot prompting in both **English and Chichewa**, and fine-tune the best-performing model using QLoRA.
**Keywords:** Text-to-SQL · Low-Resource Languages · Chichewa · QLoRA Fine-Tuning · Semantic Parsing · Information Retrieval
---
## Dataset
The benchmark contains **400 manually curated natural language–SQL pairs** across 5 database tables, split into train (280) / dev (60) / test (60):
| Table | Description | Examples |
|---|---|---|
| `commodity_prices` | Market prices for 6 crops across 27 districts (2024) | 80 |
| `production` | Crop yields for 46 crops across 28 districts (2023–2024) | 80 |
| `population` | District-level population statistics | 80 |
| `food_insecurity` | Food insecurity indicators by district | 80 |
| `mse_daily` | Malawi Stock Exchange daily market data | 80 |
Each example includes:
- `question_ny` — question in Chichewa (Nyanja)
- `question_en` — question in English
- `sql_statement` — ground-truth SQL query
- `table` — target database table
**Data splits:** `train.json` · `dev.json` · `test.json` · `all.json`
> The raw data files are not versioned here (see `.gitignore`). The SQ …