Spaces:
Running
Running
| title: Reflections SigLIP Encoder | |
| emoji: π | |
| colorFrom: indigo | |
| colorTo: blue | |
| sdk: docker | |
| app_port: 7860 | |
| pinned: false | |
| # Reflections SigLIP text-query encoder | |
| Embeds a natural-language search query into a 768-d L2-normalized vector using the | |
| SigLIP2 text tower (`onnx-community/siglip2-base-patch16-256-ONNX`) β the same | |
| checkpoint the photo image embeddings use, so query and image vectors share one | |
| cosine space. The model is baked into the Docker image at build time and stays | |
| resident in RAM, so requests never pay a download or load cost. | |
| ## How it fits in | |
| ``` | |
| Browser ββ/gallery?q=β¦βββΆ Vercel web app | |
| β POST /encode (Bearer $SIGLIP_ENCODER_TOKEN) | |
| βΌ | |
| this Space βββΆ {vector:[768]} (model resident in RAM) | |
| β | |
| Vercel cosine-ranks that vector against image embeddings in Neon (pgvector) | |
| βΌ | |
| ranked photos | |
| Deploy: push to main (encoder/**) ββΆ GitHub Actions β(OIDC, no stored token)ββΆ hf upload ββΆ Space rebuilds | |
| Warm: GitHub Actions cron βevery 6hββΆ GET /health (keeps the Space under HF's 48h sleep) | |
| ``` | |
| ## API | |
| - `POST /encode` β `{ "query": "..." }` β `{ "vector": [768 floats] }`. Requires | |
| `Authorization: Bearer $SIGLIP_ENCODER_TOKEN`. | |
| - `GET /health` β open liveness check for the keep-warm cron. | |
| ## Operating | |
| - **Secret:** set `SIGLIP_ENCODER_TOKEN` on the Space; it must match the web app's | |
| value (the web app sends it as the bearer token). | |
| - **Deploy:** automatic on push to `main` touching `encoder/**`, via Trusted | |
| Publishing (OIDC) β no HF token is stored anywhere. | |
| - **Model:** downloaded once during the image build and baked in; container | |
| starts (including post-sleep wakes) load it from local disk, never the network. | |