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

46 lines
1.6 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-11 21:07:17 +00:00
var settings = services.GetRequiredService<KnowledgeBaseSettings>();
2024-09-09 16:32:31 +00:00
var db = services.GetRequiredService<IBotSharpRepository>();
2024-09-09 19:16:09 +00:00
var configs = db.GetKnowledgeCollectionConfigs(new VectorCollectionConfigFilter
{
2024-09-11 21:07:17 +00:00
CollectionNames = [collectionName],
VectorStroageProviders = [settings.VectorDb.Provider]
2024-09-09 19:16:09 +00:00
});
var found = configs?.FirstOrDefault()?.TextEmbedding;
var provider = found?.Provider ?? string.Empty;
var model = found?.Model ?? string.Empty;
2024-09-09 16:32:31 +00:00
var dimension = found?.Dimension ?? 0;
2024-08-22 20:23:22 +00:00
if (found == null)
{
2024-09-09 16:32:31 +00:00
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
}