Skip to content

Embedder

Contract for embedding text into dense vector representations.

Implementations may wrap any embedding provider: Vercel AI SDK models, OpenAI API directly, local models (Ollama, transformers.js), or third-party services (Cohere, Voyage, Jina).

readonly optional dimension?: number;

The dimensionality of the embedding vectors produced by this embedder. May be undefined if the dimension is not known until the first embed() call.


readonly optional id?: string;

Stable identity of the underlying embedding model, e.g. "openai.embedding/text-embedding-3-small". Used by the ingest manifest to lock an index to the model that built it — two different models of the same dimension produce incompatible vector spaces, so a silent swap degrades every query without erroring.

embed(text): Promise<readonly number[]>;

Embed a single text string into a dense vector.

Parameter Type

text

string

Promise<readonly number[]>


embedMany(texts): Promise<readonly readonly number[][]>;

Embed multiple text strings into dense vectors. Implementations SHOULD batch the underlying API calls where the provider supports it, rather than calling embed() in a loop.

Parameter Type

texts

string[]

Promise<readonly readonly number[][]>