Embeddings

Generate vector embeddings with Blazen in Python

Blazen provides a unified EmbeddingModel interface for generating vector embeddings across multiple providers. The API mirrors CompletionModel: create a model with a static constructor, then call embed().

Create an Embedding Model

from blazen import EmbeddingModel

# OpenAI (default: text-embedding-3-small, 1536 dimensions)
model = EmbeddingModel.openai("sk-...")

# OpenAI with a specific model and dimensionality
model = EmbeddingModel.openai("sk-...", model="text-embedding-3-large", dimensions=3072)

# Together AI
model = EmbeddingModel.together("tok-...")

# Cohere
model = EmbeddingModel.cohere("co-...")

# Fireworks AI
model = EmbeddingModel.fireworks("fw-...")

Generate Embeddings

Pass a list of strings to embed(). It returns an EmbeddingResponse with one vector per input text.

response = await model.embed(["Hello, world!", "Goodbye, world!"])

print(len(response.embeddings))       # 2
print(len(response.embeddings[0]))    # 1536 (dimensionality)
print(response.model)                 # "text-embedding-3-small"

EmbeddingResponse

The response object exposes the following properties:

PropertyTypeDescription
.embeddingslist[list[float]]One vector per input text.
.modelstrModel that produced the embeddings.
.usageTokenUsage | NoneToken usage statistics.
.costfloat | NoneEstimated cost in USD.
.timingRequestTiming | NoneRequest timing breakdown.

Model Properties

print(model.model_id)    # "text-embedding-3-small"
print(model.dimensions)  # 1536

Use Cases

Embeddings are the building block for semantic search, RAG pipelines, clustering, and classification. A typical pattern inside a workflow step:

from blazen import step, Context, Event, EmbeddingModel

embed_model = EmbeddingModel.openai("sk-...")

@step
async def embed_documents(ctx: Context, ev: Event):
    texts = ev.documents
    response = await embed_model.embed(texts)
    ctx.set("vectors", response.embeddings)
    return Event("SearchEvent")