diff --git a/src/Infrastructure/BotSharp.Abstraction/Files/Converters/IPdf2ImageConverter.cs b/src/Infrastructure/BotSharp.Abstraction/Files/Converters/IPdf2ImageConverter.cs index 87df6137..24b28402 100644 --- a/src/Infrastructure/BotSharp.Abstraction/Files/Converters/IPdf2ImageConverter.cs +++ b/src/Infrastructure/BotSharp.Abstraction/Files/Converters/IPdf2ImageConverter.cs @@ -2,7 +2,7 @@ namespace BotSharp.Abstraction.Files.Converters; public interface IPdf2ImageConverter { - public string Name { get; } + public string Provider { get; } /// /// Convert pdf pages to images, and return a list of image file paths diff --git a/src/Infrastructure/BotSharp.Abstraction/Files/FileCoreSettings.cs b/src/Infrastructure/BotSharp.Abstraction/Files/FileCoreSettings.cs index 10ccd1a0..dc4ac40b 100644 --- a/src/Infrastructure/BotSharp.Abstraction/Files/FileCoreSettings.cs +++ b/src/Infrastructure/BotSharp.Abstraction/Files/FileCoreSettings.cs @@ -5,6 +5,11 @@ namespace BotSharp.Abstraction.Files; public class FileCoreSettings { public string Storage { get; set; } = FileStorageEnum.LocalFileStorage; - public string Pdf2TextConverter { get; set; } - public string Pdf2ImageConverter { get; set; } + public SettingBase Pdf2TextConverter { get; set; } + public SettingBase Pdf2ImageConverter { get; set; } } + +public class SettingBase +{ + public string Provider { get; set; } +} \ No newline at end of file diff --git a/src/Infrastructure/BotSharp.Abstraction/Graph/IGraphDb.cs b/src/Infrastructure/BotSharp.Abstraction/Graph/IGraphDb.cs index 64c5388b..b15503e2 100644 --- a/src/Infrastructure/BotSharp.Abstraction/Graph/IGraphDb.cs +++ b/src/Infrastructure/BotSharp.Abstraction/Graph/IGraphDb.cs @@ -4,7 +4,7 @@ namespace BotSharp.Abstraction.Graph; public interface IGraphDb { - public string Name { get; } + public string Provider { get; } Task Search(string query, GraphSearchOptions options); } diff --git a/src/Infrastructure/BotSharp.Abstraction/Knowledges/IPdf2TextConverter.cs b/src/Infrastructure/BotSharp.Abstraction/Knowledges/IPdf2TextConverter.cs index b8f2d47b..d6edad54 100644 --- a/src/Infrastructure/BotSharp.Abstraction/Knowledges/IPdf2TextConverter.cs +++ b/src/Infrastructure/BotSharp.Abstraction/Knowledges/IPdf2TextConverter.cs @@ -2,7 +2,7 @@ namespace BotSharp.Abstraction.Knowledges { public interface IPdf2TextConverter { - public string Name { get; } + public string Provider { get; } Task ConvertPdfToText(string filePath, int? startPageNum, int? endPageNum); } } \ No newline at end of file diff --git a/src/Infrastructure/BotSharp.Abstraction/Knowledges/Settings/KnowledgeBaseSettings.cs b/src/Infrastructure/BotSharp.Abstraction/Knowledges/Settings/KnowledgeBaseSettings.cs index 963a2b3b..217dafb9 100644 --- a/src/Infrastructure/BotSharp.Abstraction/Knowledges/Settings/KnowledgeBaseSettings.cs +++ b/src/Infrastructure/BotSharp.Abstraction/Knowledges/Settings/KnowledgeBaseSettings.cs @@ -4,8 +4,8 @@ namespace BotSharp.Abstraction.Knowledges.Settings; public class KnowledgeBaseSettings { - public string VectorDb { get; set; } - public string GraphDb { get; set; } + public SettingBase VectorDb { get; set; } + public SettingBase GraphDb { get; set; } public DefaultKnowledgeBaseSetting Default { get; set; } public List Collections { get; set; } = new(); @@ -23,9 +23,13 @@ public class VectorCollectionSetting public KnowledgeTextEmbeddingSetting TextEmbedding { get; set; } } -public class KnowledgeTextEmbeddingSetting +public class KnowledgeTextEmbeddingSetting : SettingBase { - public string Provider { get; set; } public string Model { get; set; } public int Dimension { get; set; } +} + +public class SettingBase +{ + public string Provider { get; set; } } \ No newline at end of file diff --git a/src/Infrastructure/BotSharp.Abstraction/VectorStorage/IVectorDb.cs b/src/Infrastructure/BotSharp.Abstraction/VectorStorage/IVectorDb.cs index c169988b..cedacb46 100644 --- a/src/Infrastructure/BotSharp.Abstraction/VectorStorage/IVectorDb.cs +++ b/src/Infrastructure/BotSharp.Abstraction/VectorStorage/IVectorDb.cs @@ -4,7 +4,7 @@ namespace BotSharp.Abstraction.VectorStorage; public interface IVectorDb { - string Name { get; } + string Provider { get; } Task> GetCollections(); Task> GetPagedCollectionData(string collectionName, VectorFilter filter); diff --git a/src/Infrastructure/BotSharp.Core/Files/Services/Instruct/FileInstructService.Pdf.cs b/src/Infrastructure/BotSharp.Core/Files/Services/Instruct/FileInstructService.Pdf.cs index e7228b13..29dfdaf9 100644 --- a/src/Infrastructure/BotSharp.Core/Files/Services/Instruct/FileInstructService.Pdf.cs +++ b/src/Infrastructure/BotSharp.Core/Files/Services/Instruct/FileInstructService.Pdf.cs @@ -98,7 +98,7 @@ public partial class FileInstructService { var images = new List(); var settings = _services.GetRequiredService(); - var converter = _services.GetServices().FirstOrDefault(x => x.Name == settings.Pdf2ImageConverter); + var converter = _services.GetServices().FirstOrDefault(x => x.Provider == settings.Pdf2ImageConverter.Provider); if (converter == null || files.IsNullOrEmpty()) { return images; diff --git a/src/Infrastructure/BotSharp.Core/Files/Services/Storage/LocalFileStorageService.Conversation.cs b/src/Infrastructure/BotSharp.Core/Files/Services/Storage/LocalFileStorageService.Conversation.cs index c40e2d59..5638179c 100644 --- a/src/Infrastructure/BotSharp.Core/Files/Services/Storage/LocalFileStorageService.Conversation.cs +++ b/src/Infrastructure/BotSharp.Core/Files/Services/Storage/LocalFileStorageService.Conversation.cs @@ -276,7 +276,7 @@ public partial class LocalFileStorageService private IPdf2ImageConverter? GetPdf2ImageConverter() { var settings = _services.GetRequiredService(); - var converter = _services.GetServices().FirstOrDefault(x => x.Name == settings.Pdf2ImageConverter); + var converter = _services.GetServices().FirstOrDefault(x => x.Provider == settings.Pdf2ImageConverter.Provider); return converter; } diff --git a/src/Infrastructure/BotSharp.OpenAPI/Controllers/KnowledgeBaseController.cs b/src/Infrastructure/BotSharp.OpenAPI/Controllers/KnowledgeBaseController.cs index 4a045e4b..260dc166 100644 --- a/src/Infrastructure/BotSharp.OpenAPI/Controllers/KnowledgeBaseController.cs +++ b/src/Infrastructure/BotSharp.OpenAPI/Controllers/KnowledgeBaseController.cs @@ -104,7 +104,7 @@ public class KnowledgeBaseController : ControllerBase public async Task UploadVectorKnowledge([FromRoute] string collection, IFormFile file, [FromForm] int? startPageNum, [FromForm] int? endPageNum) { var setttings = _services.GetRequiredService(); - var textConverter = _services.GetServices().FirstOrDefault(x => x.Name == setttings.Pdf2TextConverter); + var textConverter = _services.GetServices().FirstOrDefault(x => x.Provider == setttings.Pdf2TextConverter.Provider); var filePath = Path.GetTempFileName(); using (var stream = new FileStream(filePath, FileMode.Create, FileAccess.Write, FileShare.None)) diff --git a/src/Plugins/BotSharp.Plugin.Graph/GraphDb.cs b/src/Plugins/BotSharp.Plugin.Graph/GraphDb.cs index 55a11ec9..9aaf68eb 100644 --- a/src/Plugins/BotSharp.Plugin.Graph/GraphDb.cs +++ b/src/Plugins/BotSharp.Plugin.Graph/GraphDb.cs @@ -35,7 +35,7 @@ public class GraphDb : IGraphDb _settings = settings; } - public string Name => "Remote"; + public string Provider => "Remote"; public async Task Search(string query, GraphSearchOptions options) { diff --git a/src/Plugins/BotSharp.Plugin.KnowledgeBase/Functions/KnowledgeRetrievalFn.cs b/src/Plugins/BotSharp.Plugin.KnowledgeBase/Functions/KnowledgeRetrievalFn.cs index 7a7db8ae..d6d719d7 100644 --- a/src/Plugins/BotSharp.Plugin.KnowledgeBase/Functions/KnowledgeRetrievalFn.cs +++ b/src/Plugins/BotSharp.Plugin.KnowledgeBase/Functions/KnowledgeRetrievalFn.cs @@ -21,7 +21,7 @@ public class KnowledgeRetrievalFn : IFunctionCallback var embedding = KnowledgeSettingHelper.GetTextEmbeddingSetting(_services, collectionName); var vector = await embedding.GetVectorAsync(args.Question); - var vectorDb = _services.GetServices().FirstOrDefault(x => x.Name == _settings.VectorDb); + var vectorDb = _services.GetServices().FirstOrDefault(x => x.Provider == _settings.VectorDb.Provider); var knowledges = await vectorDb.Search(collectionName, vector, new List { KnowledgePayloadName.Text, KnowledgePayloadName.Answer }); if (!knowledges.IsNullOrEmpty()) diff --git a/src/Plugins/BotSharp.Plugin.KnowledgeBase/Functions/MemorizeKnowledgeFn.cs b/src/Plugins/BotSharp.Plugin.KnowledgeBase/Functions/MemorizeKnowledgeFn.cs index f77954d8..ca545c65 100644 --- a/src/Plugins/BotSharp.Plugin.KnowledgeBase/Functions/MemorizeKnowledgeFn.cs +++ b/src/Plugins/BotSharp.Plugin.KnowledgeBase/Functions/MemorizeKnowledgeFn.cs @@ -25,7 +25,7 @@ public class MemorizeKnowledgeFn : IFunctionCallback args.Question }); - var vectorDb = _services.GetServices().FirstOrDefault(x => x.Name == _settings.VectorDb); + var vectorDb = _services.GetServices().FirstOrDefault(x => x.Provider == _settings.VectorDb.Provider); await vectorDb.CreateCollection(collectionName, vector[0].Length); var result = await vectorDb.Upsert(collectionName, Guid.NewGuid(), vector[0], diff --git a/src/Plugins/BotSharp.Plugin.KnowledgeBase/Helpers/KnowledgeSettingHelper.cs b/src/Plugins/BotSharp.Plugin.KnowledgeBase/Helpers/KnowledgeSettingHelper.cs index 3b05bdba..48033c91 100644 --- a/src/Plugins/BotSharp.Plugin.KnowledgeBase/Helpers/KnowledgeSettingHelper.cs +++ b/src/Plugins/BotSharp.Plugin.KnowledgeBase/Helpers/KnowledgeSettingHelper.cs @@ -1,5 +1,3 @@ -using BotSharp.Abstraction.Settings; - namespace BotSharp.Plugin.KnowledgeBase.Helpers; public static class KnowledgeSettingHelper diff --git a/src/Plugins/BotSharp.Plugin.KnowledgeBase/MemVecDb/MemoryVectorDb.cs b/src/Plugins/BotSharp.Plugin.KnowledgeBase/MemVecDb/MemoryVectorDb.cs index 3a695e93..17a2c757 100644 --- a/src/Plugins/BotSharp.Plugin.KnowledgeBase/MemVecDb/MemoryVectorDb.cs +++ b/src/Plugins/BotSharp.Plugin.KnowledgeBase/MemVecDb/MemoryVectorDb.cs @@ -8,7 +8,7 @@ public class MemoryVectorDb : IVectorDb private readonly Dictionary> _vectors = new Dictionary>(); - public string Name => "MemoryVector"; + public string Provider => "MemoryVector"; public async Task CreateCollection(string collectionName, int dimension) { diff --git a/src/Plugins/BotSharp.Plugin.KnowledgeBase/Services/KnowledgeService.cs b/src/Plugins/BotSharp.Plugin.KnowledgeBase/Services/KnowledgeService.cs index aec32dc5..bf597395 100644 --- a/src/Plugins/BotSharp.Plugin.KnowledgeBase/Services/KnowledgeService.cs +++ b/src/Plugins/BotSharp.Plugin.KnowledgeBase/Services/KnowledgeService.cs @@ -22,13 +22,13 @@ public partial class KnowledgeService : IKnowledgeService private IVectorDb GetVectorDb() { - var db = _services.GetServices().FirstOrDefault(x => x.Name == _settings.VectorDb); + var db = _services.GetServices().FirstOrDefault(x => x.Provider == _settings.VectorDb.Provider); return db; } private IGraphDb GetGraphDb() { - var db = _services.GetServices().FirstOrDefault(x => x.Name == _settings.GraphDb); + var db = _services.GetServices().FirstOrDefault(x => x.Provider == _settings.GraphDb.Provider); return db; } diff --git a/src/Plugins/BotSharp.Plugin.KnowledgeBase/Services/PigPdf2TextConverter.cs b/src/Plugins/BotSharp.Plugin.KnowledgeBase/Services/PigPdf2TextConverter.cs index 09401f20..c334505e 100644 --- a/src/Plugins/BotSharp.Plugin.KnowledgeBase/Services/PigPdf2TextConverter.cs +++ b/src/Plugins/BotSharp.Plugin.KnowledgeBase/Services/PigPdf2TextConverter.cs @@ -5,7 +5,7 @@ namespace BotSharp.Plugin.KnowledgeBase.Services; public class PigPdf2TextConverter : IPdf2TextConverter { - public string Name => "Pig"; + public string Provider => "Pig"; public Task ConvertPdfToText(string filePath, int? startPageNum, int? endPageNum) { diff --git a/src/Plugins/BotSharp.Plugin.MetaAI/Providers/FaissDb.cs b/src/Plugins/BotSharp.Plugin.MetaAI/Providers/FaissDb.cs index 30150d4c..58fb1851 100644 --- a/src/Plugins/BotSharp.Plugin.MetaAI/Providers/FaissDb.cs +++ b/src/Plugins/BotSharp.Plugin.MetaAI/Providers/FaissDb.cs @@ -9,7 +9,7 @@ namespace BotSharp.Plugin.MetaAI.Providers; public class FaissDb : IVectorDb { - public string Name => "Faiss"; + public string Provider => "Faiss"; public Task CreateCollection(string collectionName, int dimension) { diff --git a/src/Plugins/BotSharp.Plugin.PaddleSharp/Providers/Pdf2TextConverter.cs b/src/Plugins/BotSharp.Plugin.PaddleSharp/Providers/Pdf2TextConverter.cs index 81c53f83..37ea35c4 100644 --- a/src/Plugins/BotSharp.Plugin.PaddleSharp/Providers/Pdf2TextConverter.cs +++ b/src/Plugins/BotSharp.Plugin.PaddleSharp/Providers/Pdf2TextConverter.cs @@ -29,7 +29,7 @@ public class Pdf2TextConverter : IPdf2TextConverter _paddleSharpSettings = paddleSharpSettings; } - public string Name => "Paddle"; + public string Provider => "Paddle"; public async Task ConvertPdfToText(string filePath, int? startPageNum, int? endPageNum) { diff --git a/src/Plugins/BotSharp.Plugin.Qdrant/QdrantDb.cs b/src/Plugins/BotSharp.Plugin.Qdrant/QdrantDb.cs index 927f3616..be89fec0 100644 --- a/src/Plugins/BotSharp.Plugin.Qdrant/QdrantDb.cs +++ b/src/Plugins/BotSharp.Plugin.Qdrant/QdrantDb.cs @@ -19,7 +19,7 @@ public class QdrantDb : IVectorDb _services = services; } - public string Name => "Qdrant"; + public string Provider => "Qdrant"; private QdrantClient GetClient() { diff --git a/src/Plugins/BotSharp.Plugin.SemanticKernel/SemanticKernelMemoryStoreProvider.cs b/src/Plugins/BotSharp.Plugin.SemanticKernel/SemanticKernelMemoryStoreProvider.cs index 11df098c..4912e127 100644 --- a/src/Plugins/BotSharp.Plugin.SemanticKernel/SemanticKernelMemoryStoreProvider.cs +++ b/src/Plugins/BotSharp.Plugin.SemanticKernel/SemanticKernelMemoryStoreProvider.cs @@ -22,7 +22,7 @@ namespace BotSharp.Plugin.SemanticKernel } - public string Name => "SemanticKernel"; + public string Provider => "SemanticKernel"; public async Task CreateCollection(string collectionName, int dimension) { diff --git a/src/Plugins/BotSharp.Plugin.TencentCos/Services/TencentCosService.Conversation.cs b/src/Plugins/BotSharp.Plugin.TencentCos/Services/TencentCosService.Conversation.cs index 9badec03..ff8dfa17 100644 --- a/src/Plugins/BotSharp.Plugin.TencentCos/Services/TencentCosService.Conversation.cs +++ b/src/Plugins/BotSharp.Plugin.TencentCos/Services/TencentCosService.Conversation.cs @@ -254,7 +254,7 @@ public partial class TencentCosService private IPdf2ImageConverter? GetPdf2ImageConverter() { var settings = _services.GetRequiredService(); - var converter = _services.GetServices().FirstOrDefault(x => x.Name == settings.Pdf2ImageConverter); + var converter = _services.GetServices().FirstOrDefault(x => x.Provider == settings.Pdf2ImageConverter.Provider); return converter; } diff --git a/src/WebStarter/appsettings.json b/src/WebStarter/appsettings.json index 5b2203fb..f470fe25 100644 --- a/src/WebStarter/appsettings.json +++ b/src/WebStarter/appsettings.json @@ -233,8 +233,12 @@ "FileCore": { "Storage": "LocalFileStorage", - "Pdf2TextConverter": "", - "Pdf2ImageConverter": "" + "Pdf2TextConverter": { + "Provider": "" + }, + "Pdf2ImageConverter": { + "Provider": "" + } }, "TencentCos": { @@ -262,8 +266,12 @@ }, "KnowledgeBase": { - "VectorDb": "Qdrant", - "GraphDb": "Default", + "VectorDb": { + "Provider": "Qdrant" + }, + "GraphDb": { + "Provider": "Remote" + }, "Default": { "CollectionName": "BotSharp", "TextEmbedding": {