From 09137ff8e7b30e9e5ec60961c35c217ad7df2be5 Mon Sep 17 00:00:00 2001 From: Jicheng Lu <103353@smsassist.com> Date: Thu, 29 Aug 2024 14:57:58 -0500 Subject: [PATCH] get knowledge base text embedding dimension from llm --- .../Embedding/TextEmbeddingProvider.cs | 2 +- .../Helpers/KnowledgeSettingHelper.cs | 18 +++++++++++++++++- .../Embedding/TextEmbeddingProvider.cs | 2 +- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/Plugins/BotSharp.Plugin.AzureOpenAI/Providers/Embedding/TextEmbeddingProvider.cs b/src/Plugins/BotSharp.Plugin.AzureOpenAI/Providers/Embedding/TextEmbeddingProvider.cs index 39119050..762e870f 100644 --- a/src/Plugins/BotSharp.Plugin.AzureOpenAI/Providers/Embedding/TextEmbeddingProvider.cs +++ b/src/Plugins/BotSharp.Plugin.AzureOpenAI/Providers/Embedding/TextEmbeddingProvider.cs @@ -8,7 +8,7 @@ public class TextEmbeddingProvider : ITextEmbedding protected readonly IServiceProvider _services; protected readonly ILogger _logger; - private const int DEFAULT_DIMENSION = 3072; + private const int DEFAULT_DIMENSION = 1536; protected string _model; protected int _dimension; diff --git a/src/Plugins/BotSharp.Plugin.KnowledgeBase/Helpers/KnowledgeSettingHelper.cs b/src/Plugins/BotSharp.Plugin.KnowledgeBase/Helpers/KnowledgeSettingHelper.cs index b1b280eb..3b05bdba 100644 --- a/src/Plugins/BotSharp.Plugin.KnowledgeBase/Helpers/KnowledgeSettingHelper.cs +++ b/src/Plugins/BotSharp.Plugin.KnowledgeBase/Helpers/KnowledgeSettingHelper.cs @@ -1,3 +1,5 @@ +using BotSharp.Abstraction.Settings; + namespace BotSharp.Plugin.KnowledgeBase.Helpers; public static class KnowledgeSettingHelper @@ -12,8 +14,22 @@ public static class KnowledgeSettingHelper } var embedding = services.GetServices().FirstOrDefault(x => x.Provider == found.Provider); + var dimension = found.Dimension; + + if (found.Dimension <= 0) + { + dimension = GetLlmTextEmbeddingDimension(services, found.Provider, found.Model); + } + embedding.SetModelName(found.Model); - embedding.SetDimension(found.Dimension); + embedding.SetDimension(dimension); return embedding; } + + private static int GetLlmTextEmbeddingDimension(IServiceProvider services, string provider, string model) + { + var settings = services.GetRequiredService(); + var found = settings.GetSetting(provider, model); + return found?.Dimension ?? 0; + } } diff --git a/src/Plugins/BotSharp.Plugin.OpenAI/Providers/Embedding/TextEmbeddingProvider.cs b/src/Plugins/BotSharp.Plugin.OpenAI/Providers/Embedding/TextEmbeddingProvider.cs index bebf6853..e27d4fcb 100644 --- a/src/Plugins/BotSharp.Plugin.OpenAI/Providers/Embedding/TextEmbeddingProvider.cs +++ b/src/Plugins/BotSharp.Plugin.OpenAI/Providers/Embedding/TextEmbeddingProvider.cs @@ -8,7 +8,7 @@ public class TextEmbeddingProvider : ITextEmbedding protected readonly IServiceProvider _services; protected readonly ILogger _logger; - private const int DEFAULT_DIMENSION = 3072; + private const int DEFAULT_DIMENSION = 1536; protected string _model = "text-embedding-3-large"; protected int _dimension = DEFAULT_DIMENSION;