Skip to content

Model loading ​

TransformersEmbeddingModel.create() dynamically initializes a Transformers.js feature-extraction pipeline.

Startup pattern ​

Create the model once during process initialization:

ts
export const embeddings = await createTransformersEmbeddingModel({
  model: process.env.EMBEDDING_MODEL ?? 'Xenova/all-MiniLM-L6-v2',
})

Do not load a new pipeline inside each request. First initialization can resolve and cache model assets, which is both slower and more resource intensive than inference on an existing pipeline.

Runtime compatibility ​

Model loading, cache paths, remote asset access, native/WASM backends, and hardware acceleration are controlled by @huggingface/transformers. Validate the exact Node, browser, worker, or bundled target against that library and the selected model.

This package is ESM and has no browser-specific wrapper. A model working in Node does not imply that its assets, operations, or bundle size fit a browser.

Controlled deployments ​

  • Preload required model assets when production instances cannot access the public model registry.
  • Verify model licenses and redistribution terms before baking assets into an image.
  • Keep caches writable during warmup and appropriately protected afterward.
  • Measure cold start independently from steady-state embedding latency.
  • Avoid allowing an untrusted request to select an arbitrary model ID.

Custom loading ​

When the application needs a custom cache, local path, quantization, or pipeline wrapper not represented by TransformersEmbeddingModelOptions, initialize that pipeline itself and pass the compatible extractor to the constructor. The application then owns loading failures and cleanup.

Built for Anvia.