BotSharp/src/Plugins/BotSharp.Plugin.KnowledgeBase/Helpers/KnowledgeSettingHelper.cs

41 lines
1.4 KiB
C#
Raw Normal View History

2024-09-05 15:34:35 +00:00
namespace BotSharp.Plugin.KnowledgeBase.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)
{
2024-09-09 16:32:31 +00:00
var db = services.GetRequiredService<IBotSharpRepository>();
var config = db.GetKnowledgeCollectionConfig(collectionName);
var found = config?.TextEmbedding;
var provider = found?.Provider;
var model = found?.Model;
var dimension = found?.Dimension ?? 0;
2024-08-22 20:23:22 +00:00
if (found == null)
{
2024-09-09 16:32:31 +00:00
var settings = services.GetRequiredService<KnowledgeBaseSettings>();
provider = settings.Default.TextEmbedding.Provider;
model = settings.Default.TextEmbedding.Model;
dimension = settings.Default.TextEmbedding.Dimension;
2024-08-22 20:23:22 +00:00
}
2024-09-09 16:32:31 +00:00
var embedding = services.GetServices<ITextEmbedding>().FirstOrDefault(x => x.Provider == provider);
2024-09-09 16:32:31 +00:00
if (dimension <= 0)
{
2024-09-09 16:32:31 +00:00
dimension = GetLlmTextEmbeddingDimension(services, provider, model);
}
2024-09-09 16:32:31 +00:00
embedding.SetModelName(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
}