Skip to content

gawankarsanket/zoom-rag-chatbot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RAG Based Chatbot (Zoom Documentation)

This project is a Retrieval-Augmented Generation (RAG) based chatbot built in local mode using FastAPI, Streamlit, and ChromaDB.
It allows users to ask questions against ingested documents (e.g. Zoom documentation) and receive grounded answers from an LLM.


✨ Features

  • 📄 Document ingestion and embedding using ChromaDB
  • 🔍 Semantic search with MMR-based retrieval
  • 🤖 LLM-powered answers with context grounding
  • 💬 Conversational memory support
  • ⚡ FastAPI backend for scalable access
  • 🖥️ Streamlit UI for interactive chat
  • 🔐 Secrets managed via .env (not committed)

🏗️ Project Structure

ZoomChatbot/

├─ app/

├─ config.py # Configuration (paths, models, keys)

├─ rag_chain.py # RAG pipeline (retriever + LLM)

├─  app_server.py # FastAPI backend

├─ ingest/

├─  ingest.py # Document ingestion & vector creation

├─ data/

├─  ZoomDocuments/ # Source documents  (Sample docs uploaded. One can replace these with relavant one)

├─ ui/

├─  streamlit.py # Streamlit chat UI

├─ vector_store/

├─  # ChromaDB (ignored in Git)

├─ .env # Environment variables (ignored)

├─ requirements.txt

└─ README.md


⚙️ Setup Instructions

1️⃣ Create virtual environment (optional but recommended)

python -m venv zoomEnv zoomEnv\Scripts\activate

2️⃣ Install dependencies pip install -r requirements.

3️⃣ Configure environment variables Create a .env file in project root: OPENAI_API_KEY=your_api_key_here

📥 Ingest Documents Place your documents inside: data/ZoomDocuments/

Run ingestion from project root: python -m ingest.ingest

This will: -Chunk documents -Create embeddings -Persist vectors in ChromaDB

🚀 Run FastAPI Backend uvicorn app.app_server:app --reload

API will be available at: http://127.0.0.1:8000 Swagger UI: http://127.0.0.1:8000/docs

💬 Run Streamlit UI streamlit run ui/streamlit.py Then open the browser link shown in terminal.

🧠 Architecture Overview Streamlit UI ↓ FastAPI (/ask) ↓ RAG Chain ↓ ChromaDB + LLM

-Vector store is created once during ingestion -FastAPI loads the persisted store -Streamlit acts as a thin client

Notes

  • .env, vector_store/, and virtual environments are ignored via .gitignore
  • ChromaDB persistence uses is_persistent=True
  • Ingest and query must use the same embedding model

Future Enhancements -Session-based memory in FastAPI -Source citations in UI -Authentication & rate limiting -Dockerization -Multi-document collections

About

LangChain based RAG chatbot for querying Zoom meeting data using vector search

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages