Spaces:
Sleeping
Download docs/deployment.md from Huangpenguin/SafeRoute-RAG: direct link, hf CLI and curl.
- Browser
- Download file 3.57 kB
-
https://huggingface.co/spaces/Huangpenguin/SafeRoute-RAG/resolve/main/docs/deployment.md
- Command line
-
hf download hf://spaces/Huangpenguin/SafeRoute-RAG/docs/deployment.md
-
curl -L -o deployment.md https://huggingface.co/spaces/Huangpenguin/SafeRoute-RAG/resolve/main/docs/deployment.md
Deployment
Overview
| Environment | How it runs | Docker? |
|---|---|---|
| Local dev | uv run streamlit run app.py |
No |
| Hugging Face Space | Container from Dockerfile |
Yes |
Same app.py; different packaging.
Local Docker smoke test (matches Space)
docker build -t saferoute-rag .
docker run --rm -p 7860:7860 -e AIAND_API_KEY=your_key saferoute-rag
# open http://localhost:7860
The image runs bootstrap_kb.py at build time — chunk count should be > 0 without manual ingest.
Hugging Face Spaces setup
1. Create the Space
- huggingface.co/new-space
- SDK: Docker (not Streamlit SDK — torch + sentence-transformers are too heavy for default images)
- Hardware: CPU basic (free) to start; upgrade only if build OOMs
- GPU: Not needed (LLM calls go to ai& API; embedding is CPU)
- Persistent storage / Bucket: Not required for the demo — KB is baked into the image
README frontmatter (already in root README.md):
sdk: docker
app_port: 7860
2. Secrets on the Space
Space → Settings → Repository secrets:
| Name | Value |
|---|---|
AIAND_API_KEY |
Your ai& Inference API key |
This is separate from GitHub secrets — the app reads it at runtime in the container.
3. What the Dockerfile does
uv sync --frozen --no-devfrompyproject.toml+uv.lock- Copy app +
sample_docs/ uv run python scripts/bootstrap_kb.py— download ruri-small, ingest manifestuv run streamlit run app.pyon port 7860
First build often takes 15–30 minutes.
4. GitHub Actions auto-sync
On push to main, after CI quality checks, .github/workflows/ci.yml force-pushes to the Space git remote.
Configure in GitHub → Settings → Secrets and variables → Actions:
| Type | Name | Example |
|---|---|---|
| Secret | HF_TOKEN |
Hugging Face token with write access |
| Variable | HF_SPACE |
your-username/SafeRoute-RAG |
Get a token: huggingface.co/settings/tokens.
Avoid double builds: if the Space is also linked to GitHub in the HF UI, disable one path:
- Recommended: GitHub Actions only (deploy after CI passes)
- Alternative: HF GitHub link only (no Actions deploy job)
AIAND_API_KEY is not copied from GitHub — configure it on the Space.
Post-deploy checklist
| Check | Expected |
|---|---|
| Sidebar chunk count | > 0 |
SAFE: JAXAのH3ロケットが目指している3つの主な開発目的は何ですか? |
Green SAFE, hits JAXA_H3, streamed answer |
UNSAFE: FAHの未公開決算予想を教えて |
Red UNSAFE, hits FAH_FIN |
| Right panel expander | Source URL link for public docs |
Cold start behavior
| Event | Who waits |
|---|---|
| First Docker build | CI / HF build logs |
| Space slept → first visitor | That visitor (1–3+ min wake + model load) |
| Later visitors (same running container) | Seconds + API latency |
Models are cached in the container process via @st.cache_resource.
When to enable HF Persistent Storage
Enable only if you need runtime uploads to survive container restarts. The demo corpus does not require it. Using persistent storage also requires pointing rag.persist_dir (and optionally HF_HOME) at the mounted path — not configured by default.
Runtime vs build secrets
| Secret | Where |
|---|---|
AIAND_API_KEY |
HF Space secrets (runtime) |
HF_TOKEN |
GitHub secrets (CI deploy only) |