get knowledge base text embedding dimension from llm

This commit is contained in:
Jicheng Lu 2024-08-29 14:57:58 -05:00
parent 3fd7f749ca
commit 09137ff8e7
3 changed files with 19 additions and 3 deletions

View file

@ -8,7 +8,7 @@ public class TextEmbeddingProvider : ITextEmbedding
protected readonly IServiceProvider _services;
protected readonly ILogger<TextEmbeddingProvider> _logger;
private const int DEFAULT_DIMENSION = 3072;
private const int DEFAULT_DIMENSION = 1536;
protected string _model;
protected int _dimension;

View file

@ -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<ITextEmbedding>().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<ILlmProviderService>();
var found = settings.GetSetting(provider, model);
return found?.Dimension ?? 0;
}
}

View file

@ -8,7 +8,7 @@ public class TextEmbeddingProvider : ITextEmbedding
protected readonly IServiceProvider _services;
protected readonly ILogger<TextEmbeddingProvider> _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;