Skip to content

EmbeddingFactories

Rasmus Wulff Jensen edited this page Dec 26, 2025 · 2 revisions

Note

EmbeddingFactories are available for AzureOpenAI, OpenAI, Mistral, and OpenRouter only.

In the samples below, we create and use an OpenAIEmbeddingFactory, but all factories work the same (but with slight variations of what options are available)

EmbeddingFactories are provider-specific helpers that create an IEmbeddingGenerator<string, Embedding<float>> or generate embeddings directly.

Create an EmbeddingFactory

You have 2 ways to create an EmbeddingFactory (using simplified connection info or a Connection instance).

Option 1. Create a new instance manually (simplified or using a Connection instance)

//Simplified
OpenAIEmbeddingFactory openAiFactory = new("<api-key>");

//Connection instance
OpenAIEmbeddingFactory openAiFactory = new(new OpenAIConnection
{
    ApiKey = "<api-key>",
    NetworkTimeout = TimeSpan.FromMinutes(5)
});

Option 2. Dependency Injection

builder.Services.AddOpenAIEmbeddingFactory("<api-key>");
builder.Services.AddOpenAIEmbeddingFactory(new OpenAIConnection
{
    ApiKey = "<api-key>",
    NetworkTimeout = TimeSpan.FromMinutes(5)
});

Generate embeddings

IEmbeddingGenerator<string, Embedding<float>> generator = openAiFactory.GetEmbeddingGenerator("text-embedding-3-small");
Embedding<float> embedding = await generator.GenerateAsync("Hello");

// Or use the convenience helpers on the factory
Embedding<float> embedding2 = await openAiFactory.GenerateAsync("Hello", "text-embedding-3-small");
GeneratedEmbeddings<Embedding<float>> batch = await openAiFactory.GenerateAsync(
    ["Hello", "World"],
    "text-embedding-3-small");

Note

Mistral's GetEmbeddingGenerator does not take a model; instead set EmbeddingGenerationOptions.ModelId when generating.

Clone this wiki locally