moss-minilm, moss-mediumlm). If you
already generate embeddings elsewhere - a proprietary model, a hosted embedding API, or a
shared pipeline across services - use model_id="custom" to supply your own vectors. Moss
indexes and searches them; it does not load a local model.
How it works
- At index time, every document must carry its own
embedding. Withmodel_id="custom", Moss does not embed for you. (If you omitmodel_idand every document has anembedding, Moss infers"custom"automatically; mixed documents are rejected.) - At query time, you must pass the query vector via
QueryOptions.embedding, because there is no local model to embed the query text. - All vectors must share the same dimensionality.
Example
In a session
Sessions support custom embeddings too: open the session withmodel_id="custom", set
.embedding on every document you add, and pass QueryOptions.embedding on every query.
With
model_id="custom", adding a document without .embedding, or querying without
QueryOptions.embedding, raises a ValueError. create_index_from_files does not support
custom embeddings (it embeds server-side).Related
Local embeddings
Use the built-in on-device models.
Hybrid search
Blend semantic and keyword scoring.