mif-embed 0.2.0

Local sentence-embedding inference for the MIF (Modeled Information Format) ecosystem
Documentation

mif-embed

Local sentence-embedding inference for the MIF (Modeled Information Format) ecosystem, via candle.

Embedder loads sentence-transformers/all-MiniLM-L6-v2 (384-dimensional, mean-pooled, L2-normalized sentence embeddings, exposed as EMBEDDING_DIM) from the Hugging Face Hub on first use, caching the model files under the platform cache directory (dirs::cache_dir()/mif/models) so later runs are offline. Inference runs on CPU only.

Embedder::load() fetches (or loads from cache) config.json, tokenizer.json, and model.safetensors for the model repo and builds a CPU-only candle BERT model from them; Embedder::embed(text) tokenizes text, runs it through the model, and returns a mean-pooled, L2-normalized Vec<f32> of length EMBEDDING_DIM. Construction is the expensive step — reuse one Embedder across calls to embed rather than reloading the model per call.

If the platform has no resolvable user cache directory, Embedder::load() fails with EmbedError::NoCacheDir rather than falling back to an ephemeral location, since a model re-fetched on every run would defeat the point of caching. EmbedError covers the rest of the failure surface — Hub client initialization, model file fetch, config/tokenizer/ weight loading, tokenization, and inference — and implements mif_problem::ToProblem for RFC 9457 application/problem+json reporting.

License

MIT