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(); 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 9c8f05f..509223d 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 { @@ -170,83 +171,53 @@ 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: + case VectorDBType.Milvus: { + // servives.AddInMemoryVectorStore(); break; } - case VectorDB.VectorDBType.Weaviate: + case VectorDBType.Chroma: { + // servives.AddInMemoryVectorStore(); break; } - case VectorDB.VectorDBType.Faiss: + case VectorDBType.PostgreSQL: { + // servives.AddInMemoryVectorStore(); break; } - case VectorDB.VectorDBType.InMemory: + case VectorDBType.Sqlite: { - servives.AddInMemoryVectorStore(); + // servives.AddInMemoryVectorStore(); break; } - case VectorDB.VectorDBType.JDBC: + case VectorDBType.SqlServer: { break; } - case VectorDB.VectorDBType.Pinecon: - { - break; - } - case VectorDB.VectorDBType.VolatileInMemory: + case VectorDBType.Qdrant: { + servives.AddQdrantVectorStore(vectorDb.ConnectionString); break; } default: @@ -268,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 @@ -280,93 +257,53 @@ public static VectorStoreCollection GetVectorCollection(name, vectorStoreRecordDefinition); break; } - case VectorDB.VectorDBType.CosmosDBNoSQL: + case VectorDBType.HardDisk: { break; } - case VectorDB.VectorDBType.Couchbase: + 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.Elasticsearch: + case VectorDBType.Milvus: { break; } - case VectorDB.VectorDBType.Chroma: + case VectorDBType.Chroma: { break; } - case VectorDB.VectorDBType.Milvus: + case VectorDBType.PostgreSQL: { break; } - case VectorDB.VectorDBType.MongoDB: + case VectorDBType.Sqlite: { break; } - case VectorDB.VectorDBType.Postgres: + case VectorDBType.SqlServer: { break; } - case VectorDB.VectorDBType.Qdrant: + case VectorDBType.Qdrant: { - database = null; vectorStore = new QdrantVectorStore(new QdrantClient(vectorDb.ConnectionString), ownsClient: true); collection = vectorStore.GetCollection(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: - { - break; - } - case VectorDB.VectorDBType.Weaviate: - { - - break; - } - case VectorDB.VectorDBType.Faiss: - { - break; - } - case VectorDB.VectorDBType.InMemory: - { - vectorStore = new InMemoryVectorStore(); - collection = vectorStore.GetCollection(name, vectorStoreRecordDefinition); - break; - } - case VectorDB.VectorDBType.JDBC: - { - break; - } - case VectorDB.VectorDBType.Pinecon: - { - break; - } - case VectorDB.VectorDBType.VolatileInMemory: - { - break; - } default: + vectorStore = new InMemoryVectorStore(); + collection = vectorStore.GetCollection(name, vectorStoreRecordDefinition); break; } diff --git a/src/Senparc.AI.Kernel/Senparc.AI.Kernel.csproj b/src/Senparc.AI.Kernel/Senparc.AI.Kernel.csproj index a89c7bf..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.1 + 0.25.3 enable 12.0 Senparc.AI.Kernel 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 30c1bd0..564c9e6 100644 --- a/src/Senparc.AI/Interfaces/ISenparcAiSetting.cs +++ b/src/Senparc.AI/Interfaces/ISenparcAiSetting.cs @@ -187,37 +187,51 @@ public class VectorDB 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, + Memory, + HardDisk, + Redis, + Milvus, + Chroma, + PostgreSQL, + Sqlite, + SqlServer, + Qdrant, + Default = Memory, } + + //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, + //} } } diff --git a/src/Senparc.AI/Senparc.AI.csproj b/src/Senparc.AI/Senparc.AI.csproj index f73e87f..e3d6b0a 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.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