From 4a9d86486b27a1b88b016e2c9e1b58ac7b92a55c Mon Sep 17 00:00:00 2001 From: MLTechnology Date: Fri, 10 Oct 2025 21:07:47 +0800 Subject: [PATCH 01/16] 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 02/16] 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 From c3f615e812e6915f2c595c84a2fe06daa9695d83 Mon Sep 17 00:00:00 2001 From: JeffreySu Date: Fri, 31 Oct 2025 16:57:54 +0800 Subject: [PATCH 03/16] Update Program.cs --- Samples/Senparc.AI.Samples.Consoles/Program.cs | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/Samples/Senparc.AI.Samples.Consoles/Program.cs b/Samples/Senparc.AI.Samples.Consoles/Program.cs index 9491049..2ab4b0e 100644 --- a/Samples/Senparc.AI.Samples.Consoles/Program.cs +++ b/Samples/Senparc.AI.Samples.Consoles/Program.cs @@ -16,10 +16,6 @@ var config = configBuilder.Build(); Console.WriteLine("完成 ServiceCollection 和 ConfigurationBuilder 初始化"); -//更多绑定操作参见:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/?view=aspnetcore-2.2 -var senparcSetting = new SenparcSetting(); -config.GetSection("SenparcSetting").Bind(senparcSetting); - var services = new ServiceCollection(); services.AddSenparcGlobalServices(config) @@ -40,7 +36,7 @@ var serviceProvider = services.BuildServiceProvider(); -IRegisterService register = RegisterService.Start(senparcSetting) +IRegisterService register = RegisterService.Start() .UseSenparcGlobal() .UseSenparcAI(); From 16a64933ec6338f4f10dfe35a209bb9667fbbf38 Mon Sep 17 00:00:00 2001 From: JeffreySu Date: Sat, 1 Nov 2025 11:11:50 +0800 Subject: [PATCH 04/16] chore: update project versions and add Qdrant support in VectorDBType [2025-11-01] v0.24.4 Combine VectorDBType from different projects --- .../Senparc.AI.Agents.csproj | 2 +- .../KernelConfigExtensions.cs | 20 +++++++++++++++---- .../Senparc.AI.Kernel.csproj | 2 +- .../Interfaces/ISenparcAiSetting.cs | 1 + src/Senparc.AI/Senparc.AI.csproj | 3 ++- 5 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/Senparc.AI.Agents/Senparc.AI.Agents.csproj b/src/Senparc.AI.Agents/Senparc.AI.Agents.csproj index 3752762..e8a4037 100644 --- a/src/Senparc.AI.Agents/Senparc.AI.Agents.csproj +++ b/src/Senparc.AI.Agents/Senparc.AI.Agents.csproj @@ -2,7 +2,7 @@ netstandard2.1 - 0.5.6.1 + 0.5.7 enable 10.0 Senparc.AI.Agents diff --git a/src/Senparc.AI.Kernel/KernelConfigExtensions/KernelConfigExtensions.cs b/src/Senparc.AI.Kernel/KernelConfigExtensions/KernelConfigExtensions.cs index 45d73fd..1349ba1 100644 --- a/src/Senparc.AI.Kernel/KernelConfigExtensions/KernelConfigExtensions.cs +++ b/src/Senparc.AI.Kernel/KernelConfigExtensions/KernelConfigExtensions.cs @@ -193,28 +193,33 @@ public static IWantToConfig ConfigVectorStore(this IWantToConfig iWantToConfig, } case VectorDBType.Mulivs: { - servives.AddInMemoryVectorStore(); + // servives.AddInMemoryVectorStore(); break; } case VectorDBType.Chroma: { - servives.AddInMemoryVectorStore(); + // servives.AddInMemoryVectorStore(); break; } case VectorDBType.PostgreSQL: { - servives.AddInMemoryVectorStore(); + // servives.AddInMemoryVectorStore(); break; } case VectorDBType.Sqlite: { - servives.AddInMemoryVectorStore(); + // servives.AddInMemoryVectorStore(); break; } case VectorDBType.SqlServer: { break; } + case VectorDBType.Qdrant: + { + servives.AddQdrantVectorStore(); + break; + } default: { throw new ArgumentOutOfRangeException(nameof(vectorDb.Type), $"Unsupported VectorDB type: {vectorDb.Type}"); @@ -285,6 +290,13 @@ public static VectorStoreCollection GetVectorCollection(name, vectorStoreRecordDefinition); + break; + } default: vectorStore = new InMemoryVectorStore(); collection = vectorStore.GetCollection(name, vectorStoreRecordDefinition); diff --git a/src/Senparc.AI.Kernel/Senparc.AI.Kernel.csproj b/src/Senparc.AI.Kernel/Senparc.AI.Kernel.csproj index 53bbf8e..f036865 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.2 + 0.25.3 enable 12.0 Senparc.AI.Kernel diff --git a/src/Senparc.AI/Interfaces/ISenparcAiSetting.cs b/src/Senparc.AI/Interfaces/ISenparcAiSetting.cs index 388dcb8..7230db9 100644 --- a/src/Senparc.AI/Interfaces/ISenparcAiSetting.cs +++ b/src/Senparc.AI/Interfaces/ISenparcAiSetting.cs @@ -195,6 +195,7 @@ public enum VectorDBType PostgreSQL, Sqlite, SqlServer, + Qdrant, Default = Memory, } diff --git a/src/Senparc.AI/Senparc.AI.csproj b/src/Senparc.AI/Senparc.AI.csproj index d398211..e3d6b0a 100644 --- a/src/Senparc.AI/Senparc.AI.csproj +++ b/src/Senparc.AI/Senparc.AI.csproj @@ -1,7 +1,7 @@  netstandard2.1 - 0.24.3 + 0.24.4 enable 10.0 Senparc.AI @@ -56,6 +56,7 @@ [2025-01-21] v0.21.0-beta1 Support for DeepSeek [2025-02-02] v0.22.0 Upgrade support for Ollama, finished test for DeepSeek-r1 and nomic-embed-text:v1.5 [2025-06-05] v0.24.1 Update VectorDBType values + [2025-11-01] v0.24.4 Combine VectorDBType from different projects https://github.com/Senparc/Senparc.AI Debug;Release;Test From d9b8829d0f31ecbdc2e00139c27ad6f8c21bb45f Mon Sep 17 00:00:00 2001 From: Jeffrey Su Date: Sat, 1 Nov 2025 11:21:56 +0800 Subject: [PATCH 05/16] Update src/Senparc.AI.Kernel/KernelConfigExtensions/KernelConfigExtensions.cs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../KernelConfigExtensions/KernelConfigExtensions.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Senparc.AI.Kernel/KernelConfigExtensions/KernelConfigExtensions.cs b/src/Senparc.AI.Kernel/KernelConfigExtensions/KernelConfigExtensions.cs index 1349ba1..b7994e6 100644 --- a/src/Senparc.AI.Kernel/KernelConfigExtensions/KernelConfigExtensions.cs +++ b/src/Senparc.AI.Kernel/KernelConfigExtensions/KernelConfigExtensions.cs @@ -292,7 +292,6 @@ public static VectorStoreCollection GetVectorCollection(name, vectorStoreRecordDefinition); break; From 5bcd0ed5d3cf90f2ad3b2cf57debd81892653743 Mon Sep 17 00:00:00 2001 From: Jeffrey Su Date: Sat, 1 Nov 2025 13:28:50 +0800 Subject: [PATCH 06/16] Update src/Senparc.AI/Interfaces/ISenparcAiSetting.cs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- src/Senparc.AI/Interfaces/ISenparcAiSetting.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Senparc.AI/Interfaces/ISenparcAiSetting.cs b/src/Senparc.AI/Interfaces/ISenparcAiSetting.cs index 7230db9..564c9e6 100644 --- a/src/Senparc.AI/Interfaces/ISenparcAiSetting.cs +++ b/src/Senparc.AI/Interfaces/ISenparcAiSetting.cs @@ -190,7 +190,7 @@ public enum VectorDBType Memory, HardDisk, Redis, - Mulivs, + Milvus, Chroma, PostgreSQL, Sqlite, From bda2cbe6189d59f9a696d1aad4ff163ebf14340d Mon Sep 17 00:00:00 2001 From: Jeffrey Su Date: Sat, 1 Nov 2025 13:28:59 +0800 Subject: [PATCH 07/16] Update src/Senparc.AI.Kernel/KernelConfigExtensions/KernelConfigExtensions.cs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../KernelConfigExtensions/KernelConfigExtensions.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Senparc.AI.Kernel/KernelConfigExtensions/KernelConfigExtensions.cs b/src/Senparc.AI.Kernel/KernelConfigExtensions/KernelConfigExtensions.cs index b7994e6..1a3cc66 100644 --- a/src/Senparc.AI.Kernel/KernelConfigExtensions/KernelConfigExtensions.cs +++ b/src/Senparc.AI.Kernel/KernelConfigExtensions/KernelConfigExtensions.cs @@ -191,7 +191,7 @@ public static IWantToConfig ConfigVectorStore(this IWantToConfig iWantToConfig, servives.AddRedisVectorStore(vectorDb.ConnectionString); break; } - case VectorDBType.Mulivs: + case VectorDBType.Milvus: { // servives.AddInMemoryVectorStore(); break; From 7c2f7382f6ce2c133cdb624347da3874d5f98a06 Mon Sep 17 00:00:00 2001 From: Jeffrey Su Date: Sat, 1 Nov 2025 13:31:00 +0800 Subject: [PATCH 08/16] Update src/Senparc.AI.Kernel/KernelConfigExtensions/KernelConfigExtensions.cs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../KernelConfigExtensions/KernelConfigExtensions.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Senparc.AI.Kernel/KernelConfigExtensions/KernelConfigExtensions.cs b/src/Senparc.AI.Kernel/KernelConfigExtensions/KernelConfigExtensions.cs index 1a3cc66..0a24c7c 100644 --- a/src/Senparc.AI.Kernel/KernelConfigExtensions/KernelConfigExtensions.cs +++ b/src/Senparc.AI.Kernel/KernelConfigExtensions/KernelConfigExtensions.cs @@ -217,7 +217,7 @@ public static IWantToConfig ConfigVectorStore(this IWantToConfig iWantToConfig, } case VectorDBType.Qdrant: { - servives.AddQdrantVectorStore(); + servives.AddQdrantVectorStore(vectorDb.ConnectionString); break; } default: From 3649a93d2afcf5fa0036acc0ea01346f462447ed Mon Sep 17 00:00:00 2001 From: Jeffrey Su Date: Sat, 1 Nov 2025 13:31:09 +0800 Subject: [PATCH 09/16] Update src/Senparc.AI.Kernel/KernelConfigExtensions/KernelConfigExtensions.cs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../KernelConfigExtensions/KernelConfigExtensions.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Senparc.AI.Kernel/KernelConfigExtensions/KernelConfigExtensions.cs b/src/Senparc.AI.Kernel/KernelConfigExtensions/KernelConfigExtensions.cs index 0a24c7c..6618eca 100644 --- a/src/Senparc.AI.Kernel/KernelConfigExtensions/KernelConfigExtensions.cs +++ b/src/Senparc.AI.Kernel/KernelConfigExtensions/KernelConfigExtensions.cs @@ -270,7 +270,7 @@ public static VectorStoreCollection GetVectorCollection(name, vectorStoreRecordDefinition); break; } - case VectorDBType.Mulivs: + case VectorDBType.Milvus: { break; } From bb6eda462bf0486b23524134c1fc04e4d78cfec0 Mon Sep 17 00:00:00 2001 From: Jeffrey Su Date: Sat, 1 Nov 2025 13:32:04 +0800 Subject: [PATCH 10/16] Update src/Senparc.AI.Kernel/KernelConfigExtensions/KernelConfigExtensions.cs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../KernelConfigExtensions/KernelConfigExtensions.cs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/Senparc.AI.Kernel/KernelConfigExtensions/KernelConfigExtensions.cs b/src/Senparc.AI.Kernel/KernelConfigExtensions/KernelConfigExtensions.cs index 6618eca..760ba86 100644 --- a/src/Senparc.AI.Kernel/KernelConfigExtensions/KernelConfigExtensions.cs +++ b/src/Senparc.AI.Kernel/KernelConfigExtensions/KernelConfigExtensions.cs @@ -264,10 +264,11 @@ public static VectorStoreCollection GetVectorCollection(name, vectorStoreRecordDefinition); + using (var redisVectorStore = new RedisVectorStore(database, + new() { StorageType = RedisStorageType.Json })) + { + collection = redisVectorStore.GetCollection(name, vectorStoreRecordDefinition); + } break; } case VectorDBType.Milvus: From 3e52f9b0d1a9963e2390083fa71c2966d28234f7 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 1 Nov 2025 05:32:30 +0000 Subject: [PATCH 11/16] Initial plan From 4b5277c87ecddaf7ee6d2a33bfbb13c6589b76f7 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 1 Nov 2025 05:33:44 +0000 Subject: [PATCH 12/16] Initial plan From ccc71b2979c929cc6961d0009edd7fc0196d7d8a Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 1 Nov 2025 05:38:34 +0000 Subject: [PATCH 13/16] Wrap disposable vector stores in using statements to ensure proper disposal Co-authored-by: JeffreySu <2281927+JeffreySu@users.noreply.github.com> --- .../KernelConfigExtensions.cs | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/Senparc.AI.Kernel/KernelConfigExtensions/KernelConfigExtensions.cs b/src/Senparc.AI.Kernel/KernelConfigExtensions/KernelConfigExtensions.cs index 760ba86..082ea95 100644 --- a/src/Senparc.AI.Kernel/KernelConfigExtensions/KernelConfigExtensions.cs +++ b/src/Senparc.AI.Kernel/KernelConfigExtensions/KernelConfigExtensions.cs @@ -244,7 +244,6 @@ public static VectorStoreCollection GetVectorCollection collection = null; //TODO: If the logic becomes overly complex in the future, different combinations can be considered to be separated into different libraries @@ -253,8 +252,10 @@ public static VectorStoreCollection GetVectorCollection(name, vectorStoreRecordDefinition); + using (var inMemoryVectorStore = new InMemoryVectorStore()) + { + collection = inMemoryVectorStore.GetCollection(name, vectorStoreRecordDefinition); + } break; } case VectorDBType.HardDisk: @@ -293,13 +294,17 @@ public static VectorStoreCollection GetVectorCollection(name, vectorStoreRecordDefinition); + using (var qdrantVectorStore = new QdrantVectorStore(new QdrantClient(vectorDb.ConnectionString), ownsClient: true)) + { + collection = qdrantVectorStore.GetCollection(name, vectorStoreRecordDefinition); + } break; } default: - vectorStore = new InMemoryVectorStore(); - collection = vectorStore.GetCollection(name, vectorStoreRecordDefinition); + using (var inMemoryVectorStore = new InMemoryVectorStore()) + { + collection = inMemoryVectorStore.GetCollection(name, vectorStoreRecordDefinition); + } break; } From 71f90067efd390bf385b75b59a97204a6e5da9bc Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 1 Nov 2025 05:39:03 +0000 Subject: [PATCH 14/16] Fix VectorStore lifecycle management and remove incorrect using statement Co-authored-by: JeffreySu <2281927+JeffreySu@users.noreply.github.com> --- .../KernelConfigExtensions.cs | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/Senparc.AI.Kernel/KernelConfigExtensions/KernelConfigExtensions.cs b/src/Senparc.AI.Kernel/KernelConfigExtensions/KernelConfigExtensions.cs index 760ba86..509223d 100644 --- a/src/Senparc.AI.Kernel/KernelConfigExtensions/KernelConfigExtensions.cs +++ b/src/Senparc.AI.Kernel/KernelConfigExtensions/KernelConfigExtensions.cs @@ -239,6 +239,12 @@ public static IWantToConfig ConfigVectorStore(this IWantToConfig iWantToConfig, /// /// /// + /// + /// Note: VectorStore instances created in this method are not explicitly disposed. + /// The VectorStoreCollection returned may maintain a reference to the VectorStore and require it to remain alive. + /// For proper resource management, consider using dependency injection to manage VectorStore lifecycle + /// or ensure the collection is disposed when no longer needed. + /// public static VectorStoreCollection GetVectorCollection(this IWantToRun iWwantToRun, VectorDB vectorDb, string name, VectorStoreCollectionDefinition? vectorStoreRecordDefinition = null) where TKey : notnull where TRecord : class @@ -264,11 +270,9 @@ public static VectorStoreCollection GetVectorCollection(name, vectorStoreRecordDefinition); - } + vectorStore = new RedisVectorStore(database, + new() { StorageType = RedisStorageType.Json }); + collection = vectorStore.GetCollection(name, vectorStoreRecordDefinition); break; } case VectorDBType.Milvus: From e217720bf3e0cff728848be40d52561de33e4fb8 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 1 Nov 2025 08:00:59 +0000 Subject: [PATCH 15/16] Initial plan From 2306ad689a6f8c2e52fd85b888bca08c6d96d1bb Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 1 Nov 2025 08:04:09 +0000 Subject: [PATCH 16/16] Fix VectorStore disposal issue by removing incorrect using statements Co-authored-by: JeffreySu <2281927+JeffreySu@users.noreply.github.com> --- .../KernelConfigExtensions.cs | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/src/Senparc.AI.Kernel/KernelConfigExtensions/KernelConfigExtensions.cs b/src/Senparc.AI.Kernel/KernelConfigExtensions/KernelConfigExtensions.cs index 5bb31cb..509223d 100644 --- a/src/Senparc.AI.Kernel/KernelConfigExtensions/KernelConfigExtensions.cs +++ b/src/Senparc.AI.Kernel/KernelConfigExtensions/KernelConfigExtensions.cs @@ -250,6 +250,7 @@ public static VectorStoreCollection GetVectorCollection collection = null; //TODO: If the logic becomes overly complex in the future, different combinations can be considered to be separated into different libraries @@ -258,10 +259,8 @@ public static VectorStoreCollection GetVectorCollection(name, vectorStoreRecordDefinition); - } + vectorStore = new InMemoryVectorStore(); + collection = vectorStore.GetCollection(name, vectorStoreRecordDefinition); break; } case VectorDBType.HardDisk: @@ -298,17 +297,13 @@ public static VectorStoreCollection GetVectorCollection(name, vectorStoreRecordDefinition); - } + vectorStore = new QdrantVectorStore(new QdrantClient(vectorDb.ConnectionString), ownsClient: true); + collection = vectorStore.GetCollection(name, vectorStoreRecordDefinition); break; } default: - using (var inMemoryVectorStore = new InMemoryVectorStore()) - { - collection = inMemoryVectorStore.GetCollection(name, vectorStoreRecordDefinition); - } + vectorStore = new InMemoryVectorStore(); + collection = vectorStore.GetCollection(name, vectorStoreRecordDefinition); break; }