LocalMode
LangChain

Embeddings

LocalModeEmbeddings — use any LocalMode embedding model with LangChain.

LocalModeEmbeddings

Drop-in replacement for OpenAIEmbeddings or any LangChain Embeddings class, backed by local inference.

See it in action

Try LangChain RAG for a working demo.

Constructor

import { LocalModeEmbeddings } from '@localmode/langchain';
import { transformers } from '@localmode/transformers';

const embeddings = new LocalModeEmbeddings({
  model: transformers.embedding('Xenova/bge-small-en-v1.5'),
});
OptionTypeRequiredDescription
modelEmbeddingModelYesAny @localmode/core EmbeddingModel instance

The constructor also accepts an optional second parameter of LangChain EmbeddingsParams for callback configuration.

Methods

embedDocuments

Embed multiple texts. Returns number[][] (LangChain format).

const vectors = await embeddings.embedDocuments(['Hello world', 'How are you?']);
// vectors: number[][] — each inner array has 384 dimensions

Internally calls model.doEmbed({ values: texts }) and converts each Float32Array to number[] via Array.from(). Returns [] for empty input without calling the model.

embedQuery

Embed a single query text. Returns number[].

const queryVector = await embeddings.embedQuery('search term');
// queryVector: number[] — 384 dimensions

Supported Models

Any EmbeddingModel from @localmode/transformers:

ModelDimensionsSizeBest For
Xenova/bge-small-en-v1.538433MBEnglish text, fast
Xenova/all-MiniLM-L6-v238423MBEnglish text, smallest
Xenova/multilingual-e5-small384470MB100+ languages
// English
const en = new LocalModeEmbeddings({
  model: transformers.embedding('Xenova/bge-small-en-v1.5'),
});

// Multilingual
const multi = new LocalModeEmbeddings({
  model: transformers.embedding('Xenova/multilingual-e5-small'),
});

For the full list of embedding models, see the Transformers Embeddings guide.

Migration from OpenAI

- import { OpenAIEmbeddings } from '@langchain/openai';
+ import { LocalModeEmbeddings } from '@localmode/langchain';
+ import { transformers } from '@localmode/transformers';

- const embeddings = new OpenAIEmbeddings({ modelName: 'text-embedding-3-small' });
+ const embeddings = new LocalModeEmbeddings({
+   model: transformers.embedding('Xenova/bge-small-en-v1.5'),
+ });

// Usage is identical:
const vectors = await embeddings.embedDocuments(texts);
const queryVec = await embeddings.embedQuery('search');

Showcase Apps

AppDescriptionLinks
LangChain RAGDocument embeddings using LocalModeEmbeddings adapterDemo · Source

On this page