From 4a9d86486b27a1b88b016e2c9e1b58ac7b92a55c Mon Sep 17 00:00:00 2001 From: MLTechnology Date: Fri, 10 Oct 2025 21:07:47 +0800 Subject: [PATCH 1/2] Optimize Problem Optimize the VectorDB class in the Senparc.AI.Interfaces class Debug Embedding Function Content --- .../KernelConfigExtensions.cs | 146 ++++-------------- .../Entities/SenparcAiSettingBase.cs | 2 +- .../Interfaces/ISenparcAiSetting.cs | 68 ++++---- 3 files changed, 68 insertions(+), 148 deletions(-) diff --git a/src/Senparc.AI.Kernel/KernelConfigExtensions/KernelConfigExtensions.cs b/src/Senparc.AI.Kernel/KernelConfigExtensions/KernelConfigExtensions.cs index 9c8f05f..aa41f8c 100644 --- a/src/Senparc.AI.Kernel/KernelConfigExtensions/KernelConfigExtensions.cs +++ b/src/Senparc.AI.Kernel/KernelConfigExtensions/KernelConfigExtensions.cs @@ -170,82 +170,47 @@ public static IWantToConfig ConfigVectorStore(this IWantToConfig iWantToConfig, switch (vectorDb.Type) { - case VectorDB.VectorDBType.AzureAISearch: - { - break; - } - case VectorDB.VectorDBType.CosmosDBMongoDB: - { - break; - } - case VectorDB.VectorDBType.CosmosDBNoSQL: - { - break; - } - case VectorDB.VectorDBType.Couchbase: - { - break; - } - case VectorDB.VectorDBType.Elasticsearch: - { - break; - } - case VectorDB.VectorDBType.Chroma: - { - break; - } - case VectorDB.VectorDBType.Milvus: - { - break; - } - case VectorDB.VectorDBType.MongoDB: - { - break; - } - case VectorDB.VectorDBType.Postgres: + case VectorDBType.Memory: { + servives.AddInMemoryVectorStore(); break; } - case VectorDB.VectorDBType.Qdrant: + case VectorDBType.HardDisk: { - servives.AddQdrantVectorStore(vectorDb.ConnectionString); + servives.AddInMemoryVectorStore(); break; } - case VectorDB.VectorDBType.Redis: + //case VectorDBType.Qdrant: + // { + // servives.AddQdrantVectorStore(vectorDb.ConnectionString); + // break; + // } + case VectorDBType.Redis: { servives.AddRedisVectorStore(vectorDb.ConnectionString); break; } - case VectorDB.VectorDBType.SqlServer: - { - break; - } - case VectorDB.VectorDBType.SQLite: - { - break; - } - case VectorDB.VectorDBType.Weaviate: - { - break; - } - case VectorDB.VectorDBType.Faiss: + case VectorDBType.Mulivs: { + servives.AddInMemoryVectorStore(); break; } - case VectorDB.VectorDBType.InMemory: + case VectorDBType.Chroma: { servives.AddInMemoryVectorStore(); break; } - case VectorDB.VectorDBType.JDBC: + case VectorDBType.PostgreSQL: { + servives.AddInMemoryVectorStore(); break; } - case VectorDB.VectorDBType.Pinecon: + case VectorDBType.Sqlite: { + servives.AddInMemoryVectorStore(); break; } - case VectorDB.VectorDBType.VolatileInMemory: + case VectorDBType.SqlServer: { break; } @@ -280,93 +245,48 @@ public static VectorStoreCollection GetVectorCollection(name, vectorStoreRecordDefinition); break; } - case VectorDB.VectorDBType.Redis: - database = ConnectionMultiplexer.Connect(vectorDb.ConnectionString).GetDatabase(); - vectorStore = new RedisVectorStore(database, - new() { StorageType = RedisStorageType.Json }); - - collection = vectorStore.GetCollection(name, vectorStoreRecordDefinition); - break; - case VectorDB.VectorDBType.SqlServer: - { - - break; - } - case VectorDB.VectorDBType.SQLite: + case VectorDBType.HardDisk: { break; } - case VectorDB.VectorDBType.Weaviate: + case VectorDBType.Redis: { + database = ConnectionMultiplexer.Connect(vectorDb.ConnectionString).GetDatabase(); + vectorStore = new RedisVectorStore(database, + new() { StorageType = RedisStorageType.Json }); + collection = vectorStore.GetCollection(name, vectorStoreRecordDefinition); break; } - case VectorDB.VectorDBType.Faiss: + case VectorDBType.Mulivs: { break; } - case VectorDB.VectorDBType.InMemory: + case VectorDBType.Chroma: { - vectorStore = new InMemoryVectorStore(); - collection = vectorStore.GetCollection(name, vectorStoreRecordDefinition); break; } - case VectorDB.VectorDBType.JDBC: + case VectorDBType.PostgreSQL: { break; } - case VectorDB.VectorDBType.Pinecon: + case VectorDBType.Sqlite: { break; } - case VectorDB.VectorDBType.VolatileInMemory: + case VectorDBType.SqlServer: { break; } default: + vectorStore = new InMemoryVectorStore(); + collection = vectorStore.GetCollection(name, vectorStoreRecordDefinition); break; } diff --git a/src/Senparc.AI/Entities/SenparcAiSettingBase.cs b/src/Senparc.AI/Entities/SenparcAiSettingBase.cs index 5d1ab84..4247a5f 100644 --- a/src/Senparc.AI/Entities/SenparcAiSettingBase.cs +++ b/src/Senparc.AI/Entities/SenparcAiSettingBase.cs @@ -191,7 +191,7 @@ public record class SenparcAiSettingBase : ISenparcAiSetting public SenparcAiSettingBase() { - VectorDB = new VectorDB() { Type = VectorDB.VectorDBType.Default }; + VectorDB = new VectorDB() { Type = VectorDBType.Default }; } #region 快速配置方法 diff --git a/src/Senparc.AI/Interfaces/ISenparcAiSetting.cs b/src/Senparc.AI/Interfaces/ISenparcAiSetting.cs index 30c1bd0..0bc2e17 100644 --- a/src/Senparc.AI/Interfaces/ISenparcAiSetting.cs +++ b/src/Senparc.AI/Interfaces/ISenparcAiSetting.cs @@ -185,39 +185,39 @@ public class VectorDB public VectorDBType Type { get; set; } public string ConnectionString { get; set; } - public enum VectorDBType - { - //Memory, - //HardDisk, - //Redis, - //Mulivs, - //Chroma, - //PostgreSQL, - //Sqlite, - //SqlServer, - - /* 注意:枚举值一旦确定,不能再进行修改 */ - - AzureAISearch=0, - CosmosDBMongoDB=1, - CosmosDBNoSQL=2, - Chroma=3, //Planed - Couchbase=4, - Elasticsearch=5, - Faiss=6, - InMemory=7, - JDBC=8, - Milvus=9, //Planed (not included in https://learn.microsoft.com/en-us/semantic-kernel/concepts/vector-store-connectors/out-of-the-box-connectors/inmemory-connector?pivots=programming-language-csharp) - MongoDB=10, - Pinecon=11, - Postgres=12, - Qdrant=13, - Redis=14, - SqlServer=15, //Planed - SQLite=16, - VolatileInMemory=17, - Weaviate=18, - Default = InMemory, - } + //public enum VectorDBType + //{ + // //Memory, + // //HardDisk, + // //Redis, + // //Mulivs, + // //Chroma, + // //PostgreSQL, + // //Sqlite, + // //SqlServer, + + // /* 注意:枚举值一旦确定,不能再进行修改 */ + + // AzureAISearch=0, + // CosmosDBMongoDB=1, + // CosmosDBNoSQL=2, + // Chroma=3, //Planed + // Couchbase=4, + // Elasticsearch=5, + // Faiss=6, + // InMemory=7, + // JDBC=8, + // Milvus=9, //Planed (not included in https://learn.microsoft.com/en-us/semantic-kernel/concepts/vector-store-connectors/out-of-the-box-connectors/inmemory-connector?pivots=programming-language-csharp) + // MongoDB=10, + // Pinecon=11, + // Postgres=12, + // Qdrant=13, + // Redis=14, + // SqlServer=15, //Planed + // SQLite=16, + // VolatileInMemory=17, + // Weaviate=18, + // Default = InMemory, + //} } } From 80758e4d953f94308997151a88f13941100cac65 Mon Sep 17 00:00:00 2001 From: MLTechnology Date: Thu, 30 Oct 2025 23:13:13 +0800 Subject: [PATCH 2/2] Opitmize the VectorDBType define position. --- .../KernelConfigExtensions.cs | 1 + .../Senparc.AI.Kernel.csproj | 2 +- .../Entities/SenparcAiSettingBase.cs | 2 +- src/Senparc.AI/Enums.cs | 24 +++++++++---------- .../Interfaces/ISenparcAiSetting.cs | 13 ++++++++++ src/Senparc.AI/Senparc.AI.csproj | 2 +- 6 files changed, 29 insertions(+), 15 deletions(-) diff --git a/src/Senparc.AI.Kernel/KernelConfigExtensions/KernelConfigExtensions.cs b/src/Senparc.AI.Kernel/KernelConfigExtensions/KernelConfigExtensions.cs index aa41f8c..45d73fd 100644 --- a/src/Senparc.AI.Kernel/KernelConfigExtensions/KernelConfigExtensions.cs +++ b/src/Senparc.AI.Kernel/KernelConfigExtensions/KernelConfigExtensions.cs @@ -28,6 +28,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; +using static Senparc.AI.Interfaces.VectorDB; namespace Senparc.AI.Kernel.Handlers { diff --git a/src/Senparc.AI.Kernel/Senparc.AI.Kernel.csproj b/src/Senparc.AI.Kernel/Senparc.AI.Kernel.csproj index a89c7bf..53bbf8e 100644 --- a/src/Senparc.AI.Kernel/Senparc.AI.Kernel.csproj +++ b/src/Senparc.AI.Kernel/Senparc.AI.Kernel.csproj @@ -2,7 +2,7 @@ netstandard2.1 - 0.25.1 + 0.25.2 enable 12.0 Senparc.AI.Kernel diff --git a/src/Senparc.AI/Entities/SenparcAiSettingBase.cs b/src/Senparc.AI/Entities/SenparcAiSettingBase.cs index 4247a5f..5d1ab84 100644 --- a/src/Senparc.AI/Entities/SenparcAiSettingBase.cs +++ b/src/Senparc.AI/Entities/SenparcAiSettingBase.cs @@ -191,7 +191,7 @@ public record class SenparcAiSettingBase : ISenparcAiSetting public SenparcAiSettingBase() { - VectorDB = new VectorDB() { Type = VectorDBType.Default }; + VectorDB = new VectorDB() { Type = VectorDB.VectorDBType.Default }; } #region 快速配置方法 diff --git a/src/Senparc.AI/Enums.cs b/src/Senparc.AI/Enums.cs index 7cbd514..393266b 100644 --- a/src/Senparc.AI/Enums.cs +++ b/src/Senparc.AI/Enums.cs @@ -45,17 +45,17 @@ public enum ConfigModel } #pragma warning disable CS1591 // 缺少对公共可见类型或成员的 XML 注释 - public enum VectorDBType - { - Memory, - HardDisk, - Redis, - Mulivs, - Chroma, - PostgreSQL, - Sqlite, - SqlServer, - Default = Memory, - } + //public enum VectorDBType + //{ + // Memory, + // HardDisk, + // Redis, + // Mulivs, + // Chroma, + // PostgreSQL, + // Sqlite, + // SqlServer, + // Default = Memory, + //} #pragma warning restore CS1591 // 缺少对公共可见类型或成员的 XML 注释 } diff --git a/src/Senparc.AI/Interfaces/ISenparcAiSetting.cs b/src/Senparc.AI/Interfaces/ISenparcAiSetting.cs index 0bc2e17..388dcb8 100644 --- a/src/Senparc.AI/Interfaces/ISenparcAiSetting.cs +++ b/src/Senparc.AI/Interfaces/ISenparcAiSetting.cs @@ -185,6 +185,19 @@ public class VectorDB public VectorDBType Type { get; set; } public string ConnectionString { get; set; } + public enum VectorDBType + { + Memory, + HardDisk, + Redis, + Mulivs, + Chroma, + PostgreSQL, + Sqlite, + SqlServer, + Default = Memory, + } + //public enum VectorDBType //{ // //Memory, diff --git a/src/Senparc.AI/Senparc.AI.csproj b/src/Senparc.AI/Senparc.AI.csproj index f73e87f..d398211 100644 --- a/src/Senparc.AI/Senparc.AI.csproj +++ b/src/Senparc.AI/Senparc.AI.csproj @@ -1,7 +1,7 @@  netstandard2.1 - 0.24.2 + 0.24.3 enable 10.0 Senparc.AI