C#使用Semantic Kernel实现Embedding功能
1、背景
C#开发中,可以通过Semantic Kernel实现本地模型的调用和实现。
本地的Ollama的版本如下:
安装的Package如下:
2、代码实现
// See https://aka.ms/new-console-template for more information
using Microsoft.Extensions.AI;
using Microsoft.SemanticKernel;var kernelBuilder = Kernel.CreateBuilder();var embeddingModelID = "all-minilm";
var endpoint=new Uri("http://localhost:11434");#pragma warning disable SKEXP0070 // 类型仅用于评估,在将来的更新中可能会被更改或删除。取消此诊断以继续。
kernelBuilder.AddOllamaEmbeddingGenerator(embeddingModelID, endpoint);
#pragma warning restore SKEXP0070 // 类型仅用于评估,在将来的更新中可能会被更改或删除。取消此诊断以继续。var kernel=kernelBuilder.Build();var embeddingGenerator = kernel.GetRequiredService<IEmbeddingGenerator<string, Embedding<float>>>();var queryStr =new List<string>() { "Hello SemanticKernel" };var response=await embeddingGenerator.GenerateAsync(queryStr);foreach (var item in response.ToList<Embedding<float>>())
{Console.WriteLine(item.Dimensions);//展示拆分后的向量维度
}Console.ReadLine();