using BotSharp.Abstraction.MLTasks; using Microsoft.Extensions.Configuration; using Microsoft.SemanticKernel; using Microsoft.SemanticKernel.AI.Embeddings; using Microsoft.SemanticKernel.Memory; using Microsoft.SemanticKernel.Plugins.Memory; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace BotSharp.Plugin.SemanticKernel { /// /// Use Semantic Kernel Memory as text embedding provider /// public class SemanticKernelTextEmbeddingProvider : ITextEmbedding { private readonly ITextEmbeddingGeneration _embedding; private readonly IConfiguration _configuration; /// /// Constructor of /// public SemanticKernelTextEmbeddingProvider(ITextEmbeddingGeneration embedding, IConfiguration configuration) { this._embedding = embedding; this._configuration = configuration; this.Dimension = configuration.GetValue("SemanticKernel:Dimension"); } /// public int Dimension { get; set; } /// public async Task GetVectorAsync(string text) { return (await this._embedding.GenerateEmbeddingAsync(text)).ToArray(); } /// public async Task> GetVectorsAsync(List texts) { var embeddings = await this._embedding.GenerateEmbeddingsAsync(texts); return embeddings.Select(_ => _.ToArray()) .ToList(); } } }