Restructure + add reverse face search (PimEyes-style)
Marwan
f5eeb1c
Part A — Repo Restructure:
- Move download/face-intel/* to repo root (was nested one level deep)
- Remove empty download/ dir
- Move research/*.json to docs/research/ (preserve curated link data)
- Write polished root README.md (comparison tables, endpoint docs, examples)
- Add MIT LICENSE
- Update .gitignore (ignore venvs, caches, secrets)
- Update .env.example with new face index vars
- Add production Dockerfile (Python 3.11-slim, non-root, healthcheck)
Part C — Reverse Face Search (NEW capability):
- Add ProviderCapability.REVERSE_FACE_SEARCH to models/providers.py
- Add face_index settings to config/settings.py (8 new FI_* env vars)
- Build storage/face_index.py — sqlite-vec backed face index
- Enroll faces with 512-d ArcFace embeddings + metadata
- KNN search with cosine similarity (preferred) or L2 fallback
- CRUD: enroll, get, list, delete, clear, stats
- Audit log of all enrollment/deletion events
- Thread-safe (RLock around all SQLite ops)
- Build services/face_inde…