2023-09-06 12:58:02 +00:00
|
|
|
namespace BotSharp.Plugin.KnowledgeBase.Services;
|
2023-06-17 02:42:35 +00:00
|
|
|
|
2024-02-19 22:55:41 +00:00
|
|
|
public partial class KnowledgeService : IKnowledgeService
|
2023-06-17 02:42:35 +00:00
|
|
|
{
|
2023-06-26 23:08:24 +00:00
|
|
|
private readonly IServiceProvider _services;
|
|
|
|
|
private readonly KnowledgeBaseSettings _settings;
|
2023-06-18 18:15:00 +00:00
|
|
|
private readonly ITextChopper _textChopper;
|
2024-08-06 21:02:02 +00:00
|
|
|
private readonly ILogger<KnowledgeService> _logger;
|
2023-06-26 23:08:24 +00:00
|
|
|
|
2024-08-09 21:03:29 +00:00
|
|
|
public KnowledgeService(
|
|
|
|
|
IServiceProvider services,
|
2023-06-26 23:08:24 +00:00
|
|
|
KnowledgeBaseSettings settings,
|
2024-08-06 21:02:02 +00:00
|
|
|
ITextChopper textChopper,
|
|
|
|
|
ILogger<KnowledgeService> logger)
|
2023-06-17 02:42:35 +00:00
|
|
|
{
|
2023-06-26 23:08:24 +00:00
|
|
|
_services = services;
|
|
|
|
|
_settings = settings;
|
2023-06-18 18:15:00 +00:00
|
|
|
_textChopper = textChopper;
|
2024-08-06 21:02:02 +00:00
|
|
|
_logger = logger;
|
2023-06-17 02:42:35 +00:00
|
|
|
}
|
|
|
|
|
|
2024-08-09 21:03:29 +00:00
|
|
|
private IVectorDb GetVectorDb()
|
2023-12-30 03:54:41 +00:00
|
|
|
{
|
2024-08-09 21:03:29 +00:00
|
|
|
var db = _services.GetServices<IVectorDb>().FirstOrDefault(x => x.Name == _settings.VectorDb);
|
|
|
|
|
return db;
|
2023-12-30 03:54:41 +00:00
|
|
|
}
|
|
|
|
|
|
2024-08-15 23:19:10 +00:00
|
|
|
private IGraphDb GetGraphDb()
|
|
|
|
|
{
|
|
|
|
|
var db = _services.GetServices<IGraphDb>().FirstOrDefault(x => x.Name == _settings.GraphDb);
|
|
|
|
|
return db;
|
|
|
|
|
}
|
|
|
|
|
|
2024-08-09 21:03:29 +00:00
|
|
|
private ITextEmbedding GetTextEmbedding()
|
2023-06-17 02:42:35 +00:00
|
|
|
{
|
2024-08-09 21:03:29 +00:00
|
|
|
var embedding = _services.GetServices<ITextEmbedding>().FirstOrDefault(x => x.Provider == _settings.TextEmbedding.Provider);
|
|
|
|
|
if (embedding != null)
|
2023-06-18 18:15:00 +00:00
|
|
|
{
|
2024-08-09 21:03:29 +00:00
|
|
|
embedding.SetModelName(_settings.TextEmbedding.Model);
|
2023-06-17 02:42:35 +00:00
|
|
|
}
|
2023-06-26 23:08:24 +00:00
|
|
|
return embedding;
|
|
|
|
|
}
|
2023-06-17 02:42:35 +00:00
|
|
|
}
|