Skip to main content

Built-in Embedders

vectlite.embedders provides ready-to-use embedding factories for the most common providers. Each factory returns a Callable[[str], list[float]] suitable for upsert_text() and search_text().

Every provider lazy-imports its SDK, so none of them are runtime dependencies of vectlite. Install only what you use.

Available providers

FactoryInstallSourceCost
embedders.openai(model)pip install openaiAPIPaid
embedders.cohere(model)pip install cohereAPIPaid
embedders.voyage(model)pip install voyageaiAPIPaid
embedders.fastembed(model)pip install fastembedLocal ONNXFree
embedders.sentence_transformer(model)pip install sentence-transformersLocal PyTorchFree
embedders.ollama(model)(Ollama running locally)Local HTTPFree

Usage

import vectlite
from vectlite import embedders

db = vectlite.open("knowledge.vdb", dimension=1536)
embed = embedders.openai("text-embedding-3-small")

vectlite.upsert_text(db, "doc1", "Auth setup guide for SSO", embed, {"source": "docs"})
results = vectlite.search_text(db, "how to authenticate", embed, k=5)

The dimension you pass to open() must match the model's output dimension.

Provider notes

OpenAI

embed = embedders.openai("text-embedding-3-small")  # 1536 dims
embed = embedders.openai("text-embedding-3-large") # 3072 dims

Reads OPENAI_API_KEY from the environment.

Cohere

embed = embedders.cohere("embed-english-v3.0")  # 1024 dims
embed = embedders.cohere("embed-multilingual-v3.0")

Reads COHERE_API_KEY from the environment.

Voyage AI

embed = embedders.voyage("voyage-3")
embed = embedders.voyage("voyage-3-large")

Reads VOYAGE_API_KEY from the environment.

FastEmbed (local ONNX, no GPU needed)

embed = embedders.fastembed("BAAI/bge-small-en-v1.5")  # 384 dims, fast
embed = embedders.fastembed("BAAI/bge-large-en-v1.5") # 1024 dims, better quality

First call downloads the ONNX model from HuggingFace Hub. Lightweight, no PyTorch dependency.

SentenceTransformers (local PyTorch)

embed = embedders.sentence_transformer("sentence-transformers/all-MiniLM-L6-v2")  # 384 dims
embed = embedders.sentence_transformer("BAAI/bge-large-en-v1.5", device="cuda")

Heavier than FastEmbed but unlocks the full sentence-transformers ecosystem (cross-encoders, multilingual, instruction-tuned models).

Ollama (local server)

embed = embedders.ollama("nomic-embed-text")
embed = embedders.ollama("mxbai-embed-large")

Requires a running Ollama server at http://localhost:11434. Useful when you already have Ollama for LLMs and want a single backend.

Picking a provider

ConstraintPick
Easiest start, low scaleopenai
Best multilingualcohere (embed-multilingual-v3.0)
Best quality / contextvoyage
Fully offline, lightweightfastembed
Already on Ollamaollama
Custom or fine-tuned modelsentence_transformer

Async embedders (Node.js)

Node text helpers accept embed functions that return either a value or a Promise. There is no built-in embedders module on Node — wire up the provider SDK yourself:

const OpenAI = require('openai')
const openai = new OpenAI()

async function embed(text) {
const res = await openai.embeddings.create({
model: 'text-embedding-3-small',
input: text,
})
return res.data[0].embedding
}

await vectlite.upsertText(db, 'doc1', 'Hello world', embed)
const results = await vectlite.searchText(db, 'greeting', embed, { k: 5 })