This is a full-stack Retrieval-Augmented Generation (RAG) chatbot system designed to help users prepare for software engineering technical interviews. It combines local document retrieval with a large language model (LLM) to answer questions based on custom educational content like PDFs, slides, spreadsheets, and more.
- Multimodal document ingestion: PDF, DOCX, PPTX, CSV
- Local embedding using
sentence-transformers - Vector store using ChromaDB
- Conversational retrieval with contextual prompt building
- FastAPI backend API
- Streamlit frontend with modern chat UI
- Modular Python architecture (easy to extend)
Follow the steps below to install dependencies, process documents, and launch the chatbot:
git clone https://github.com/StevenGX12/RAG_Chatbot.git
cd technical-interview-ragpython -m venv myenv
source myenv/bin/activate # On Windows: myenv\Scripts\activatepip install -r requirements.txtEnsure you've installed Ollama and pulled a model:
ollama run gemma3Place all your learning materials under the folder:
./corpus/Supported formats: .pdf, .docx, .pptx, .csv
python -m src.scripts.update_dbThis will:
- Parse and chunk new documents
- Generate embeddings for unembedded chunks
- Add them to the ChromaDB vector store
uvicorn src.app_backend:app --reloadRuns on: http://localhost:8000
In a separate terminal:
streamlit run src.app_frontend.pysrc/
├── scripts/ # Utilities: update_db, backfill
├── app_backend.py # FastAPI server
├── app_frontend.py # Streamlit chat UI
├── data_loader.py # Corpus parser and processor
├── embedder.py # Embeds document chunks
├── retriever.py # Query-time document retrieval
├── vector_store.py # ChromaDB logic
├── generator.py # Prompt building and LLM calls
processed_corpus/ # Output: chunks and embeddings
corpus/ # Input: source documents
assets/ # UI assets like screenshots