cora / docs /memory /DECISIONS.md
tokgae's picture
Upload folder using huggingface_hub
38ab39c verified
# Decisions: Cora
## 1. Unified Entry Point (FastAPI + Gradio)
- **Problem**: Running a separate API and UI process in Hugging Face Spaces is complex.
- **Solution**: Use `gr.mount_gradio_app` to serve the Gradio UI from a FastAPI instance in `app.py`.
- **Why**: Allows both programmatic API access and a user-friendly interface in a single Docker container.
## 2. Model Fallback Chain
- **Problem**: Free tier Hugging Face Inference API can be flaky or return invalid data stream errors under load.
- **Solution**: Implemented a "Ghost" logic chain: `SDXL-Lightning` -> `Stable Diffusion 2.1` -> `RAG Fallback` (Archive Search).
- **Why**: Maximizes uptime and ensures the user always gets a relevant image, even if generation fails.
## 3. ChromaDB for Semantic Search
- **Decision**: Use ChromaDB as the vector store.
- **Why**: Lightweight, persistent, and easy to integrate with CLIP embeddings for semantic retrieval.
## 4. Environment Variable Fallback
- **Decision**: Support both `HF_API_TOKEN` (legacy/local) and `HF_TOKEN` (standard Hugging Face secret).
- **Why**: To ensure seamless deployment on Hugging Face Spaces where `HF_TOKEN` is the default secret name provided to the environment.