Skip to content

Microsoft.Extensions.AI Integration

Cross-SDK comparison

See the centralized MEAI documentation for feature matrices and comparisons across all tryAGI SDKs.

The Mixedbread SDK implements IEmbeddingGenerator<string, Embedding<float>> from Microsoft.Extensions.AI.

Installation

1
dotnet add package Mixedbread

Generate Embeddings

MixedbreadClient directly implements IEmbeddingGenerator<string, Embedding<float>>, so you can use it with the standard MEAI interface.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
using Mixedbread;
using Meai = Microsoft.Extensions.AI;

Meai.IEmbeddingGenerator<string, Meai.Embedding<float>> generator =
    new MixedbreadClient(apiKey: Environment.GetEnvironmentVariable("MIXEDBREAD_API_KEY")!);

var embeddings = await generator.GenerateAsync(
    ["Hello, world!"],
    new Meai.EmbeddingGenerationOptions { ModelId = "mixedbread-ai/mxbai-embed-large-v1" });

Console.WriteLine($"Dimensions: {embeddings[0].Vector.Length}");
Console.WriteLine($"Model: {embeddings[0].ModelId}");

Batch Embeddings

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
using Mixedbread;
using Meai = Microsoft.Extensions.AI;

Meai.IEmbeddingGenerator<string, Meai.Embedding<float>> generator =
    new MixedbreadClient(apiKey: Environment.GetEnvironmentVariable("MIXEDBREAD_API_KEY")!);

var texts = new[]
{
    "The quick brown fox jumps over the lazy dog.",
    "Machine learning is a subset of artificial intelligence.",
    "Embeddings represent text as numerical vectors.",
};

var embeddings = await generator.GenerateAsync(
    texts,
    new Meai.EmbeddingGenerationOptions { ModelId = "mixedbread-ai/mxbai-embed-large-v1" });

Console.WriteLine($"Generated {embeddings.Count} embeddings");
Console.WriteLine($"Total tokens: {embeddings.Usage?.TotalTokenCount}");

Custom Dimensions

Mixedbread models support custom output dimensions via Matryoshka representation learning:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
using Mixedbread;
using Meai = Microsoft.Extensions.AI;

Meai.IEmbeddingGenerator<string, Meai.Embedding<float>> generator =
    new MixedbreadClient(apiKey: Environment.GetEnvironmentVariable("MIXEDBREAD_API_KEY")!);

var options = new Meai.EmbeddingGenerationOptions
{
    ModelId = "mxbai-embed-2d-large-v1",
    Dimensions = 256,
};

var embeddings = await generator.GenerateAsync(
    ["Compact embedding for efficient storage."], options);

Console.WriteLine($"Dimensions: {embeddings[0].Vector.Length}"); // 256

Dependency Injection

1
2
3
4
5
6
7
using Mixedbread;
using Meai = Microsoft.Extensions.AI;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddSingleton<Meai.IEmbeddingGenerator<string, Meai.Embedding<float>>>(
    new MixedbreadClient(apiKey: builder.Configuration["Mixedbread:ApiKey"]!));

Provider Metadata

1
2
3
var metadata = Meai.EmbeddingGeneratorExtensions.GetService<Meai.EmbeddingGeneratorMetadata>(generator);
Console.WriteLine($"Provider: {metadata?.ProviderName}"); // "MixedbreadClient"
Console.WriteLine($"Endpoint: {metadata?.ProviderUri}");