A Python tool to collect, clean, and structure Ethiopian history content from Wikipedia. Outputs JSON with rich metadata for use in Retrieval-Augmented Generation (RAG) systems, chatbots.
Ethiopian History RAG System
===========================
This repository implements a Retrieval-Augmented Generation (RAG) system for exploring Ethiopian history, designed for educational and interactive use. The system leverages Wikipedia data, chunking, embedding, and a vector database to provide accurate, context-aware answers to user queries, with a Streamlit-based chat interface.
## Project Description
This project enables users (especially kids) to ask questions about Ethiopian history and receive well-formatted, document-grounded answers. The backend uses pre-processed Wikipedia data, chunked and embedded, and stored in a ChromaDB vector database. The frontend is a modern, interactive Streamlit app with persona-based responses.
## Project Structure
The directory structure is as follows:
```
├── code/
│ ├── data_acquisition_wikipedia.py # Wikipedia data acquisition
│ ├── data_processing_chunking.py # Cleans and chunks Wikipedia data
│ ├── embedding_and_storage.py # Embeds and stores chunks in ChromaDB
│ ├── ethiopian_history_streamlit_chat.py # Streamlit chat app
│ ├── paths.py # Centralized file paths
│ ├── prompt_builder.py # Prompt construction utilities
│ ├── save_persona_image.py # Persona image utility
│ ├── vector_db_rag_retrieval.py # CLI RAG retrieval and LLM interface
│ └── vector_db/ # Vector DB files and chunked data
├── config/
│ ├── config.yaml # App configuration
│ └── prompt_config.yaml # Prompt configuration
├── data/
│ ├── ethiopian_history_am.json # Amharic Wikipedia data
│ └── ethiopian_history_en.json # English Wikipedia data
├── vector_db/
│ ├── chroma.sqlite3 # ChromaDB database
│ ├── ethiopian_history_am_chunked.json # Chunked Amharic data
│ └── ethiopian_history_en_chunk …