BotSharp/src/Infrastructure/BotSharp.Core/Knowledges/Helpers/KnowledgeSettingHelper.cs

37 lines
1.3 KiB
C#
Raw Normal View History

2024-09-04 03:13:25 +00:00
using BotSharp.Abstraction.Knowledges.Settings;
using BotSharp.Abstraction.MLTasks;
namespace BotSharp.Core.Knowledges.Helpers;
2024-08-22 20:23:22 +00:00
2024-08-28 16:08:12 +00:00
public static class KnowledgeSettingHelper
2024-08-22 20:23:22 +00:00
{
public static ITextEmbedding GetTextEmbeddingSetting(IServiceProvider services, string collectionName)
{
var settings = services.GetRequiredService<KnowledgeBaseSettings>();
var found = settings.Collections.FirstOrDefault(x => x.Name == collectionName)?.TextEmbedding;
if (found == null)
{
found = settings.Default.TextEmbedding;
}
var embedding = services.GetServices<ITextEmbedding>().FirstOrDefault(x => x.Provider == found.Provider);
var dimension = found.Dimension;
if (found.Dimension <= 0)
{
dimension = GetLlmTextEmbeddingDimension(services, found.Provider, found.Model);
}
2024-08-22 20:23:22 +00:00
embedding.SetModelName(found.Model);
embedding.SetDimension(dimension);
2024-08-22 20:23:22 +00:00
return embedding;
}
private static int GetLlmTextEmbeddingDimension(IServiceProvider services, string provider, string model)
{
var settings = services.GetRequiredService<ILlmProviderService>();
var found = settings.GetSetting(provider, model);
return found?.Dimension ?? 0;
}
2024-08-22 20:23:22 +00:00
}