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 })