EnterRAG, refactored.
- app/
- config/settings.py — loads env vars
- services/
- openai_client.py — OpenAI chat/embeddings
- chroma_store.py — ChromaDB wrapper
- mongodb.py — MongoDB connection and CRUD
- utils/
- pdf.py — PDF text extraction and chunking
- json_tools.py — dict flatten helper
- pages/
- chatbot.py — chatbot UI + collection manager
- pdf_to_mongo.py — PDF -> MongoDB
- mongo_audit.py — AI-assisted edit
- mongo_viewer.py — view Mongo docs
- index.py — Streamlit entry wiring pages
- requirements.txt — dependencies
- .env.example — copy to .env and fill
- Create
.envin project root (copy.env.example):
OPENAI_API_KEY=sk-...
MONGODB_URI=mongodb+srv://...
CHROMA_PERSIST_DIR=.chroma
EMBEDDING_MODEL=text-embedding-3-small
CHAT_MODEL=gpt-4o-mini
- Install dependencies:
python -m venv .venv
.venv\Scripts\Activate.ps1
pip install -r requirements.txt
- Run the app:
streamlit run index.py
- Secrets are no longer hard-coded; everything reads from env.
- The original features are preserved: Chroma collections, chatbot, PDF->Mongo, Mongo viewer and audit, finance dashboard.
- If you used a persistent Chroma directory before, set
CHROMA_PERSIST_DIRaccordingly.