6 implementations of IEmbeddingGenerator
Microsoft.Extensions.AI.Abstractions (1)
Embeddings\DelegatingEmbeddingGenerator.cs (1)
21public class DelegatingEmbeddingGenerator<TInput, TEmbedding> : IEmbeddingGenerator<TInput, TEmbedding>
Microsoft.Extensions.AI.Abstractions.Tests (1)
TestEmbeddingGenerator.cs (1)
11public sealed class TestEmbeddingGenerator : IEmbeddingGenerator<string, Embedding<float>>
Microsoft.Extensions.AI.Integration.Tests (1)
QuantizationEmbeddingGenerator.cs (1)
16IEmbeddingGenerator<string, BinaryEmbedding>
Microsoft.Extensions.AI.Ollama (1)
OllamaEmbeddingGenerator.cs (1)
16public sealed class OllamaEmbeddingGenerator : IEmbeddingGenerator<string, Embedding<float>>
Microsoft.Extensions.AI.OpenAI (1)
OpenAIEmbeddingGenerator.cs (1)
19public sealed class OpenAIEmbeddingGenerator : IEmbeddingGenerator<string, Embedding<float>>
Microsoft.Extensions.AI.Tests (1)
test\Libraries\Microsoft.Extensions.AI.Abstractions.Tests\TestEmbeddingGenerator.cs (1)
11public sealed class TestEmbeddingGenerator : IEmbeddingGenerator<string, Embedding<float>>
88 references to IEmbeddingGenerator
Microsoft.Extensions.AI (30)
Embeddings\CachingEmbeddingGenerator.cs (2)
21/// <param name="innerGenerator">The underlying <see cref="IEmbeddingGenerator{TInput, TEmbedding}"/>.</param> 22protected CachingEmbeddingGenerator(IEmbeddingGenerator<TInput, TEmbedding> innerGenerator)
Embeddings\DistributedCachingEmbeddingGenerator.cs (3)
20/// The provided implementation of <see cref="IEmbeddingGenerator{TInput, TEmbedding}"/> is thread-safe for concurrent 30/// <param name="innerGenerator">The underlying <see cref="IEmbeddingGenerator{TInput, TEmbedding}"/>.</param> 32public DistributedCachingEmbeddingGenerator(IEmbeddingGenerator<TInput, TEmbedding> innerGenerator, IDistributedCache storage)
Embeddings\DistributedCachingEmbeddingGeneratorBuilderExtensions.cs (1)
13/// <see cref="IEmbeddingGenerator{TInput, TEmbedding}"/> pipeline.
Embeddings\EmbeddingGeneratorBuilder.cs (14)
10/// <summary>A builder for creating pipelines of <see cref="IEmbeddingGenerator{TInput, TEmbedding}"/>.</summary> 17private List<Func<IServiceProvider, IEmbeddingGenerator<TInput, TEmbedding>, IEmbeddingGenerator<TInput, TEmbedding>>>? _generatorFactories; 30/// Builds an instance of <see cref="IEmbeddingGenerator{TInput, TEmbedding}"/> using the specified inner generator. 33/// <returns>An instance of <see cref="IEmbeddingGenerator{TInput, TEmbedding}"/>.</returns> 39public IEmbeddingGenerator<TInput, TEmbedding> Use(IEmbeddingGenerator<TInput, TEmbedding> innerGenerator) 41var embeddingGenerator = Throw.IfNull(innerGenerator); 50$"The {nameof(IEmbeddingGenerator<TInput, TEmbedding>)} entry at index {i} returned null. " + 51$"Ensure that the callbacks passed to {nameof(Use)} return non-null {nameof(IEmbeddingGenerator<TInput, TEmbedding>)} instances."); 61public EmbeddingGeneratorBuilder<TInput, TEmbedding> Use(Func<IEmbeddingGenerator<TInput, TEmbedding>, IEmbeddingGenerator<TInput, TEmbedding>> generatorFactory) 71public EmbeddingGeneratorBuilder<TInput, TEmbedding> Use(Func<IServiceProvider, IEmbeddingGenerator<TInput, TEmbedding>, IEmbeddingGenerator<TInput, TEmbedding>> generatorFactory)
Embeddings\EmbeddingGeneratorBuilderServiceCollectionExtensions.cs (5)
10/// <summary>Provides extension methods for registering <see cref="IEmbeddingGenerator{TInput, TEmbedding}"/> with a <see cref="IServiceCollection"/>.</summary> 17/// <param name="generatorFactory">The factory to use to construct the <see cref="IEmbeddingGenerator{TInput, TEmbedding}"/> instance.</param> 22Func<EmbeddingGeneratorBuilder<TInput, TEmbedding>, IEmbeddingGenerator<TInput, TEmbedding>> generatorFactory) 37/// <param name="generatorFactory">The factory to use to construct the <see cref="IEmbeddingGenerator{TInput, TEmbedding}"/> instance.</param> 43Func<EmbeddingGeneratorBuilder<TInput, TEmbedding>, IEmbeddingGenerator<TInput, TEmbedding>> generatorFactory)
Embeddings\LoggingEmbeddingGenerator.cs (3)
19/// The provided implementation of <see cref="IEmbeddingGenerator{TInput, TEmbedding}"/> is thread-safe for concurrent use 32/// <param name="innerGenerator">The underlying <see cref="IEmbeddingGenerator{TInput, TEmbedding}"/>.</param> 34public LoggingEmbeddingGenerator(IEmbeddingGenerator<TInput, TEmbedding> innerGenerator, ILogger logger)
Embeddings\OpenTelemetryEmbeddingGenerator.cs (2)
41/// <param name="innerGenerator">The underlying <see cref="IEmbeddingGenerator{TInput, TEmbedding}"/>, which is the next stage of the pipeline.</param> 45public OpenTelemetryEmbeddingGenerator(IEmbeddingGenerator<TInput, TEmbedding> innerGenerator, ILogger? logger = null, string? sourceName = null)
Microsoft.Extensions.AI.Abstractions (16)
Embeddings\DelegatingEmbeddingGenerator.cs (5)
13/// Provides an optional base class for an <see cref="IEmbeddingGenerator{TInput, TEmbedding}"/> that passes through calls to another instance. 18/// This is recommended as a base type when building generators that can be chained in any order around an underlying <see cref="IEmbeddingGenerator{TInput, TEmbedding}"/>. 28protected DelegatingEmbeddingGenerator(IEmbeddingGenerator<TInput, TEmbedding> innerGenerator) 33/// <summary>Gets the inner <see cref="IEmbeddingGenerator{TInput, TEmbedding}" />.</summary> 34protected IEmbeddingGenerator<TInput, TEmbedding> InnerGenerator { get; }
Embeddings\Embedding.cs (1)
9/// <summary>Represents an embedding generated by a <see cref="IEmbeddingGenerator{TInput, TEmbedding}"/>.</summary>
Embeddings\EmbeddingGeneratorExtensions.cs (2)
10/// <summary>Provides a collection of static methods for extending <see cref="IEmbeddingGenerator{TValue,TEmbedding}"/> instances.</summary> 22this IEmbeddingGenerator<TValue, TEmbedding> generator,
Embeddings\EmbeddingGeneratorMetadata.cs (1)
8/// <summary>Provides metadata about an <see cref="IEmbeddingGenerator{TInput, TEmbedding}"/>.</summary>
Embeddings\IEmbeddingGenerator.cs (7)
16/// Unless otherwise specified, all members of <see cref="IEmbeddingGenerator{TInput, TEmbedding}"/> are thread-safe for concurrent use. 17/// It is expected that all implementations of <see cref="IEmbeddingGenerator{TInput, TEmbedding}"/> support being used by multiple requests concurrently. 20/// However, implementations of <see cref="IEmbeddingGenerator{TInput, TEmbedding}"/> may mutate the arguments supplied to 23/// invocations or should otherwise ensure by construction that no <see cref="IEmbeddingGenerator{TInput, TEmbedding}"/> instances 40/// <summary>Gets metadata that describes the <see cref="IEmbeddingGenerator{TInput, TEmbedding}"/>.</summary> 43/// <summary>Asks the <see cref="IEmbeddingGenerator{TInput, TEmbedding}"/> for an object of type <typeparamref name="TService"/>.</summary> 48/// The purpose of this method is to allow for the retrieval of strongly-typed services that may be provided by the <see cref="IEmbeddingGenerator{TInput, TEmbedding}"/>,
Microsoft.Extensions.AI.Abstractions.Tests (2)
Embeddings\DelegatingEmbeddingGeneratorTests.cs (2)
88var service = delegating.GetService<IEmbeddingGenerator<string, Embedding<float>>>(expectedKey); 116private sealed class NoOpDelegatingEmbeddingGenerator(IEmbeddingGenerator<string, Embedding<float>> innerGenerator) :
Microsoft.Extensions.AI.Integration.Tests (7)
CallCountingEmbeddingGenerator.cs (1)
13internal sealed class CallCountingEmbeddingGenerator(IEmbeddingGenerator<string, Embedding<float>> innerGenerator)
EmbeddingGeneratorIntegrationTests.cs (3)
27private readonly IEmbeddingGenerator<string, Embedding<float>>? _embeddingGenerator; 40protected abstract IEmbeddingGenerator<string, Embedding<float>>? CreateEmbeddingGenerator(); 113var embeddingGenerator = new EmbeddingGeneratorBuilder<string, Embedding<float>>()
QuantizationEmbeddingGenerator.cs (3)
21private readonly IEmbeddingGenerator<string, Embedding<float>> _floatService; 23public QuantizationEmbeddingGenerator(IEmbeddingGenerator<string, Embedding<float>> floatService) 37async Task<GeneratedEmbeddings<BinaryEmbedding>> IEmbeddingGenerator<string, BinaryEmbedding>.GenerateAsync(
Microsoft.Extensions.AI.Ollama (1)
OllamaEmbeddingGenerator.cs (1)
15/// <summary>An <see cref="IEmbeddingGenerator{String, Embedding}"/> for Ollama.</summary>
Microsoft.Extensions.AI.Ollama.Tests (6)
OllamaEmbeddingGeneratorIntegrationTests.cs (1)
10protected override IEmbeddingGenerator<string, Embedding<float>>? CreateEmbeddingGenerator() =>
OllamaEmbeddingGeneratorTests.cs (5)
30Assert.Same(generator, generator.GetService<IEmbeddingGenerator<string, Embedding<float>>>()); 32using IEmbeddingGenerator<string, Embedding<float>> pipeline = new EmbeddingGeneratorBuilder<string, Embedding<float>>() 42Assert.IsType<OpenTelemetryEmbeddingGenerator<string, Embedding<float>>>(pipeline.GetService<IEmbeddingGenerator<string, Embedding<float>>>()); 51using IEmbeddingGenerator<string, Embedding<float>> chatClient = new OllamaEmbeddingGenerator(endpoint, model); 79using IEmbeddingGenerator<string, Embedding<float>> generator = new OllamaEmbeddingGenerator(new("http://localhost:11434"), "all-minilm", httpClient);
Microsoft.Extensions.AI.OpenAI (7)
OpenAIClientExtensions.cs (6)
26/// <summary>Gets an <see cref="IEmbeddingGenerator{String, Single}"/> for use with this <see cref="OpenAIClient"/>.</summary> 30/// <returns>An <see cref="IEmbeddingGenerator{String, Embedding}"/> that may be used to generate embeddings via the <see cref="EmbeddingClient"/>.</returns> 31public static IEmbeddingGenerator<string, Embedding<float>> AsEmbeddingGenerator(this OpenAIClient openAIClient, string modelId, int? dimensions = null) => 34/// <summary>Gets an <see cref="IEmbeddingGenerator{String, Single}"/> for use with this <see cref="EmbeddingClient"/>.</summary> 37/// <returns>An <see cref="IEmbeddingGenerator{String, Embedding}"/> that may be used to generate embeddings via the <see cref="EmbeddingClient"/>.</returns> 38public static IEmbeddingGenerator<string, Embedding<float>> AsEmbeddingGenerator(this EmbeddingClient embeddingClient, int? dimensions = null) =>
OpenAIEmbeddingGenerator.cs (1)
18/// <summary>An <see cref="IEmbeddingGenerator{String, Embedding}"/> for an OpenAI <see cref="EmbeddingClient"/>.</summary>
Microsoft.Extensions.AI.OpenAI.Tests (11)
OpenAIEmbeddingGeneratorIntegrationTests.cs (1)
10protected override IEmbeddingGenerator<string, Embedding<float>>? CreateEmbeddingGenerator() =>
OpenAIEmbeddingGeneratorTests.cs (10)
57IEmbeddingGenerator<string, Embedding<float>> embeddingGenerator = client.AsEmbeddingGenerator(model); 72IEmbeddingGenerator<string, Embedding<float>> embeddingGenerator = openAIClient.AsEmbeddingGenerator("model"); 74Assert.Same(embeddingGenerator, embeddingGenerator.GetService<IEmbeddingGenerator<string, Embedding<float>>>()); 81using IEmbeddingGenerator<string, Embedding<float>> pipeline = new EmbeddingGeneratorBuilder<string, Embedding<float>>() 91Assert.IsType<OpenTelemetryEmbeddingGenerator<string, Embedding<float>>>(pipeline.GetService<IEmbeddingGenerator<string, Embedding<float>>>()); 98IEmbeddingGenerator<string, Embedding<float>> embeddingGenerator = openAIClient.AsEmbeddingGenerator(); 100Assert.Same(embeddingGenerator, embeddingGenerator.GetService<IEmbeddingGenerator<string, Embedding<float>>>()); 103using IEmbeddingGenerator<string, Embedding<float>> pipeline = new EmbeddingGeneratorBuilder<string, Embedding<float>>() 113Assert.IsType<OpenTelemetryEmbeddingGenerator<string, Embedding<float>>>(pipeline.GetService<IEmbeddingGenerator<string, Embedding<float>>>()); 148using IEmbeddingGenerator<string, Embedding<float>> generator = new OpenAIClient(new ApiKeyCredential("apikey"), new OpenAIClientOptions
Microsoft.Extensions.AI.Tests (8)
Embeddings\EmbeddingGeneratorBuilderTests.cs (7)
55Assert.Throws<ArgumentNullException>(() => new EmbeddingGeneratorBuilder<string, Embedding<float>>().Use((IEmbeddingGenerator<string, Embedding<float>>)null!)); 62Assert.Throws<ArgumentNullException>(() => builder.Use((Func<IEmbeddingGenerator<string, Embedding<float>>, IEmbeddingGenerator<string, Embedding<float>>>)null!)); 63Assert.Throws<ArgumentNullException>(() => builder.Use((Func<IServiceProvider, IEmbeddingGenerator<string, Embedding<float>>, IEmbeddingGenerator<string, Embedding<float>>>)null!)); 75private sealed class InnerServiceCapturingEmbeddingGenerator(string name, IEmbeddingGenerator<string, Embedding<float>> innerGenerator) : 81public new IEmbeddingGenerator<string, Embedding<float>> InnerGenerator => base.InnerGenerator;
Embeddings\LoggingEmbeddingGeneratorTests.cs (1)
34using IEmbeddingGenerator<string, Embedding<float>> innerGenerator = new TestEmbeddingGenerator