Fourth Release Candidate. RC3 froze the embedding model but loaded it in-process inside both api and worker — roughly 700MB peak each, two copies of the same weights. RC4 serves one shared embedder from a single Ollama container at roughly 300MB, so api and worker stay flat and the whole stack comfortably fits a 2GB VPS. The model itself is unchanged in behavior: same dimensions, same prefixes, same valid vectors.
Read this first: there are no new migrations, no re-embedding, and no SDK or MCP bump — see the Upgrade Guide before you upgrade.
Breaking Changes
Per-Organization Embedding Routing Removed
Per-organization embedding provider, model, and dimension routing is removed. The embedding_* keys in org config are now ignored — not rejected — so stale payloads keep working while they are cleaned up.
Dead Embedding Env Vars and Helm Values Deleted
The OZ_EMBEDDING_BACKEND, OZ_EMBEDDING_MODEL, and OZ_EMBEDDING_DIM environment variables are deleted, as are the Helm embedding.* values. Remove them from your env files and values overrides; images now set pullPolicy: Always.
GET /ready Gains an embeddings Check
The GET /ready response body gains an embeddings check. Health probes that assert an exact response shape must expect the new key — the embedder is prewarmed at boot and /ready stays gated until it is loaded.
What's New
One Shared Embedder — nomic-ai/nomic-embed-text-v1.5
Embeddings are served by a single frozen embedder, nomic-ai/nomic-embed-text-v1.5 at 768 dimensions, from one Ollama container shared by api and worker. The VECTOR(768) columns are unchanged from rc3. The search_document: and search_query: task prefixes are still applied, vectors are unit-normalized at the boundary, and the embedder is prewarmed at boot with /ready gated until loaded. CD pulls and warms the model before restarting api and worker, and fastembed and onnxruntime are removed from the images.
Upgrade Guide
From rc3 to rc4:
- Migrations: none — no new migrations in this release.
- Embeddings: no re-embedding needed. An equivalence probe measured cosine 0.999999 between old and new vectors, so all existing embeddings stay valid.
- Org config: drop any
embedding_*keys from org-config payloads. Harmless if left — they are ignored, not rejected. - Health probes: expect the new
embeddingskey in theGET /readyresponse body. - Client bump: none required — verified, neither the SDK nor MCP sends embedding fields.
Bug Fixes
- CI collection unblocked. A stray
@dataclasson a test helper aborted the whole integration suite at collection; the suite runs again. - Supersession suite green. A swapped test fixture errored 13 supersession tests; the fixture is corrected and all 13 pass.
- Readiness contract covered. The
/readyand worker-prewarm test seams are updated for the new readiness contract, so the prewarm gate is asserted rather than assumed.
Getting Started
Download v1.0.0rc4 · SDK v1.0.0b6 on PyPI · MCP v1.0.0b3 · Docs