semtree-embed 0.2.1

Embedding trait and backends (fastembed, openai)
Documentation

semtree-embed

Embedding trait and backends for semtree.

Defines the Embedder trait and ships three implementations. The default (fastembed) runs on-device via ONNX, with no API key or daemon required.

Usage

[dependencies]
semtree-embed = "0.2"
use semtree_embed::{Embedder, fastembed::FastEmbedder};

let embedder = FastEmbedder::new()?;              // AllMiniLML6V2, 384-dim
let vectors = embedder.embed(&["hello", "world"]).await?;

Backends

Backend Default model Notes
fastembed AllMiniLML6V2 (384-dim) On-device. No key needed. Model cached after first use.
openai text-embedding-3-small Set OPENAI_API_KEY or pass a key.
ollama nomic-embed-text Requires a local Ollama server.

Custom backend

Implement Embedder to plug in any model or API:

use async_trait::async_trait;
use semtree_embed::{Embedder, Embedding, EmbedError};

struct MyEmbedder;

#[async_trait]
impl Embedder for MyEmbedder {
    async fn embed(&self, texts: &[&str]) -> Result<Vec<Embedding>, EmbedError> {
        todo!()
    }
}

Embedding is a plain Vec<f32>.

License

MIT