Использование модели встраивания текста локально с семантическим ядромC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Использование модели встраивания текста локально с семантическим ядром

Сообщение Anonymous »

Я читал сообщение в блоге Стивена Тауба о создании простого консольного чат-приложения .NET с нуля с помощью семантического ядра. Я следую примерам, но вместо OpenAI я хочу использовать Microsoft Phi 3 и модель встраивания nomic.
Первые примеры в сообщении блога я смог воссоздать с помощью плагина семантического ядраhuggingface. Но мне не удается запустить пример встраивания текста.
Я загрузил встраиваемый текст Phi и nomic и запускаю их на локальном сервере с помощью lm studio.Вот код, который я придумал и использует плагин Huggingface:

Код: Выделить всё

using System.Net;
using System.Text;
using System.Text.RegularExpressions;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.Embeddings;
using Microsoft.SemanticKernel.Memory;
using System.Numerics.Tensors;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.SemanticKernel.ChatCompletion;

#pragma warning disable SKEXP0070, SKEXP0003, SKEXP0001, SKEXP0011, SKEXP0052, SKEXP0055, SKEXP0050  // Type is for evaluation purposes only and is subject to change or removal in future updates.

internal class Program
{
private static async Task Main(string[] args)
{
//Suppress this diagnostic to proceed.
// Initialize the Semantic kernel
IKernelBuilder kernelBuilder = Kernel.CreateBuilder();
kernelBuilder.Services.ConfigureHttpClientDefaults(c => c.AddStandardResilienceHandler());
var kernel = kernelBuilder
.AddHuggingFaceTextEmbeddingGeneration("nomic-ai/nomic-embed-text-v1.5-GGUF/nomic-embed-text-v1.5.Q8_0.gguf",
new Uri("http://localhost:1234/v1"),
apiKey: "lm-studio",
serviceId: null)
.Build();

var embeddingGenerator = kernel.GetRequiredService();
var memoryBuilder = new MemoryBuilder();
memoryBuilder.WithTextEmbeddingGeneration(embeddingGenerator);
memoryBuilder.WithMemoryStore(new VolatileMemoryStore());
var memory = memoryBuilder.Build();
// Download a document and create embeddings for it
string input = "What is an amphibian?";
string[] examples = [ "What is an amphibian?",
"Cos'è un anfibio?",
"A frog is an amphibian.",
"Frogs, toads, and salamanders are all examples.",
"Amphibians are four-limbed and ectothermic vertebrates of the class Amphibia.",
"They are four-limbed and ectothermic vertebrates.",
"A frog is green.",
"A tree is green.",
"It's not easy bein' green.",
"A dog is a mammal.",
"A dog is a man's best friend.",
"You ain't never had a friend like me.",
"Rachel, Monica, Phoebe, Joey, Chandler, Ross"];
for (int i = 0; i < examples.Length; i++)
await memory.SaveInformationAsync("net7perf", examples[i], $"paragraph{i}");
var embed = await embeddingGenerator.GenerateEmbeddingsAsync([input]);
ReadOnlyMemory inputEmbedding = (embed)[0];
// Generate embeddings for each chunk.
IList embeddings = await embeddingGenerator.GenerateEmbeddingsAsync(examples);
// Print the cosine similarity between the input and each example
float[] similarity = embeddings.Select(e => TensorPrimitives.CosineSimilarity(e.Span, inputEmbedding.Span)).ToArray();
similarity.AsSpan().Sort(examples.AsSpan(), (f1, f2) => f2.CompareTo(f1));
Console.WriteLine("Similarity Example");
for (int i = 0; i < similarity.Length; i++)
Console.WriteLine($"{similarity[i]:F6}   {examples[i]}");
}
}
В строке:

Код: Выделить всё

for (int i = 0; i < examples.Length; i++)
await memory.SaveInformationAsync("net7perf", examples[i], $"paragraph{i}");
Я получаю следующее исключение:

JsonException: значение JSON не удалось преобразовать в
Microsoft .SemanticKernel.Connectors.HuggingFace.Core.TextEmbeddingResponse

Кто-нибудь знает, что я делаю неправильно?
Я загрузил в проект следующие пакеты nuget:


Идентификатор
Версии
Имя проекта




Microsoft.SemanticKernel.Core
{1.15.0}
LocalLlmApp


Microsoft.SemanticKernel.Plugins.Memory{1.15.0-alpha
LocalLlmApp


Microsoft.Extensions.Http.Resilience
{8.6.0}
LocalLlmApp


Microsoft.Extensions.Logging
{8.0.0}
LocalLlmApp

Microsoft.SemanticKernel.Connectors.HuggingFace
{1.15.0-preview
LocalLlmApp


Newtonsoft.Json
{13.0 .3}
LocalLlmApp


Microsoft.Extensions.Logging.Console
{8.0.0}
LocalLlmApp




Подробнее здесь: https://stackoverflow.com/questions/786 ... tic-kernel
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»