Spaces:
Running
Running
File size: 1,891 Bytes
83f3ec5 56749a4 83f3ec5 56749a4 83f3ec5 56749a4 b79fb38 56749a4 b79fb38 56749a4 b79fb38 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | ---
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.
|