52d6a8ed53
Replaces the Ollama HTTP get_embedding with a fastembed.TextEmbedding singleton loaded lazily on first call. Model: BAAI/bge-small-en-v1.5 (384-dim), cached to /data/fastembed-cache. Public API unchanged: - get_embedding(text, model=None) — `model` now silently ignored - upsert_note_embedding - semantic_search_notes - backfill_note_embeddings _cosine_similarity gains a defensive length-mismatch check so any stale 768-dim row that survived the migration is treated as 0.0 similarity rather than crashing zip(). The Ollama client dep stays in pyproject for now (other services still use it); Phase 7 removes it once chat/journal/curator are gone. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>