Skip to content

Commit c16e244

Browse files
authored
Merge pull request #160 from Senparc/Developer-MicrosoftMemoryKernel
Developer microsoft memory kernel
2 parents 2813497 + 7edd730 commit c16e244

File tree

7 files changed

+107
-159
lines changed

7 files changed

+107
-159
lines changed

Samples/Senparc.AI.Samples.Consoles/Program.cs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,6 @@
1616
var config = configBuilder.Build();
1717
Console.WriteLine("完成 ServiceCollection 和 ConfigurationBuilder 初始化");
1818

19-
//更多绑定操作参见:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/?view=aspnetcore-2.2
20-
var senparcSetting = new SenparcSetting();
21-
config.GetSection("SenparcSetting").Bind(senparcSetting);
22-
2319
var services = new ServiceCollection();
2420

2521
services.AddSenparcGlobalServices(config)
@@ -40,7 +36,7 @@
4036

4137
var serviceProvider = services.BuildServiceProvider();
4238

43-
IRegisterService register = RegisterService.Start(senparcSetting)
39+
IRegisterService register = RegisterService.Start()
4440
.UseSenparcGlobal()
4541
.UseSenparcAI();
4642

src/Senparc.AI.Agents/Senparc.AI.Agents.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<Project Sdk="Microsoft.NET.Sdk">
33
<PropertyGroup>
44
<TargetFramework>netstandard2.1</TargetFramework>
5-
<Version>0.5.6.1</Version>
5+
<Version>0.5.7</Version>
66
<Nullable>enable</Nullable>
77
<LangVersion>10.0</LangVersion>
88
<AssemblyName>Senparc.AI.Agents</AssemblyName>

src/Senparc.AI.Kernel/KernelConfigExtensions/KernelConfigExtensions.cs

Lines changed: 45 additions & 108 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
using System.Linq;
2929
using System.Text;
3030
using System.Threading.Tasks;
31+
using static Senparc.AI.Interfaces.VectorDB;
3132

3233
namespace Senparc.AI.Kernel.Handlers
3334
{
@@ -170,83 +171,53 @@ public static IWantToConfig ConfigVectorStore(this IWantToConfig iWantToConfig,
170171

171172
switch (vectorDb.Type)
172173
{
173-
case VectorDB.VectorDBType.AzureAISearch:
174-
{
175-
break;
176-
}
177-
case VectorDB.VectorDBType.CosmosDBMongoDB:
178-
{
179-
break;
180-
}
181-
case VectorDB.VectorDBType.CosmosDBNoSQL:
182-
{
183-
break;
184-
}
185-
case VectorDB.VectorDBType.Couchbase:
186-
{
187-
break;
188-
}
189-
case VectorDB.VectorDBType.Elasticsearch:
190-
{
191-
break;
192-
}
193-
case VectorDB.VectorDBType.Chroma:
194-
{
195-
break;
196-
}
197-
case VectorDB.VectorDBType.Milvus:
198-
{
199-
break;
200-
}
201-
case VectorDB.VectorDBType.MongoDB:
202-
{
203-
break;
204-
}
205-
case VectorDB.VectorDBType.Postgres:
174+
case VectorDBType.Memory:
206175
{
176+
servives.AddInMemoryVectorStore();
207177
break;
208178
}
209-
case VectorDB.VectorDBType.Qdrant:
179+
case VectorDBType.HardDisk:
210180
{
211-
servives.AddQdrantVectorStore(vectorDb.ConnectionString);
181+
servives.AddInMemoryVectorStore();
212182
break;
213183
}
214-
case VectorDB.VectorDBType.Redis:
184+
//case VectorDBType.Qdrant:
185+
// {
186+
// servives.AddQdrantVectorStore(vectorDb.ConnectionString);
187+
// break;
188+
// }
189+
case VectorDBType.Redis:
215190
{
216191
servives.AddRedisVectorStore(vectorDb.ConnectionString);
217192
break;
218193
}
219-
case VectorDB.VectorDBType.SqlServer:
220-
{
221-
break;
222-
}
223-
case VectorDB.VectorDBType.SQLite:
194+
case VectorDBType.Milvus:
224195
{
196+
// servives.AddInMemoryVectorStore();
225197
break;
226198
}
227-
case VectorDB.VectorDBType.Weaviate:
199+
case VectorDBType.Chroma:
228200
{
201+
// servives.AddInMemoryVectorStore();
229202
break;
230203
}
231-
case VectorDB.VectorDBType.Faiss:
204+
case VectorDBType.PostgreSQL:
232205
{
206+
// servives.AddInMemoryVectorStore();
233207
break;
234208
}
235-
case VectorDB.VectorDBType.InMemory:
209+
case VectorDBType.Sqlite:
236210
{
237-
servives.AddInMemoryVectorStore();
211+
// servives.AddInMemoryVectorStore();
238212
break;
239213
}
240-
case VectorDB.VectorDBType.JDBC:
214+
case VectorDBType.SqlServer:
241215
{
242216
break;
243217
}
244-
case VectorDB.VectorDBType.Pinecon:
245-
{
246-
break;
247-
}
248-
case VectorDB.VectorDBType.VolatileInMemory:
218+
case VectorDBType.Qdrant:
249219
{
220+
servives.AddQdrantVectorStore(vectorDb.ConnectionString);
250221
break;
251222
}
252223
default:
@@ -268,6 +239,12 @@ public static IWantToConfig ConfigVectorStore(this IWantToConfig iWantToConfig,
268239
/// <param name="name"></param>
269240
/// <param name="vectorStoreRecordDefinition"></param>
270241
/// <returns></returns>
242+
/// <remarks>
243+
/// Note: VectorStore instances created in this method are not explicitly disposed.
244+
/// The VectorStoreCollection returned may maintain a reference to the VectorStore and require it to remain alive.
245+
/// For proper resource management, consider using dependency injection to manage VectorStore lifecycle
246+
/// or ensure the collection is disposed when no longer needed.
247+
/// </remarks>
271248
public static VectorStoreCollection<TKey, TRecord> GetVectorCollection<TKey, TRecord>(this IWantToRun iWwantToRun, VectorDB vectorDb, string name, VectorStoreCollectionDefinition? vectorStoreRecordDefinition = null)
272249
where TKey : notnull
273250
where TRecord : class
@@ -280,93 +257,53 @@ public static VectorStoreCollection<TKey, TRecord> GetVectorCollection<TKey, TRe
280257

281258
switch (vectorDb.Type)
282259
{
283-
case VectorDB.VectorDBType.AzureAISearch:
284-
{
285-
break;
286-
}
287-
case VectorDB.VectorDBType.CosmosDBMongoDB:
260+
case VectorDBType.Memory:
288261
{
262+
vectorStore = new InMemoryVectorStore();
263+
collection = vectorStore.GetCollection<TKey, TRecord>(name, vectorStoreRecordDefinition);
289264
break;
290265
}
291-
case VectorDB.VectorDBType.CosmosDBNoSQL:
266+
case VectorDBType.HardDisk:
292267
{
293268
break;
294269
}
295-
case VectorDB.VectorDBType.Couchbase:
270+
case VectorDBType.Redis:
296271
{
272+
database = ConnectionMultiplexer.Connect(vectorDb.ConnectionString).GetDatabase();
273+
vectorStore = new RedisVectorStore(database,
274+
new() { StorageType = RedisStorageType.Json });
275+
collection = vectorStore.GetCollection<TKey, TRecord>(name, vectorStoreRecordDefinition);
297276
break;
298277
}
299-
case VectorDB.VectorDBType.Elasticsearch:
278+
case VectorDBType.Milvus:
300279
{
301280
break;
302281
}
303-
case VectorDB.VectorDBType.Chroma:
282+
case VectorDBType.Chroma:
304283
{
305284
break;
306285
}
307-
case VectorDB.VectorDBType.Milvus:
286+
case VectorDBType.PostgreSQL:
308287
{
309288
break;
310289
}
311-
case VectorDB.VectorDBType.MongoDB:
290+
case VectorDBType.Sqlite:
312291
{
313292
break;
314293
}
315-
case VectorDB.VectorDBType.Postgres:
294+
case VectorDBType.SqlServer:
316295
{
317296
break;
318297
}
319-
case VectorDB.VectorDBType.Qdrant:
298+
case VectorDBType.Qdrant:
320299
{
321-
database = null;
322300
vectorStore = new QdrantVectorStore(new QdrantClient(vectorDb.ConnectionString), ownsClient: true);
323301
collection = vectorStore.GetCollection<TKey, TRecord>(name, vectorStoreRecordDefinition);
324302
break;
325303
}
326-
case VectorDB.VectorDBType.Redis:
327-
database = ConnectionMultiplexer.Connect(vectorDb.ConnectionString).GetDatabase();
328-
vectorStore = new RedisVectorStore(database,
329-
new() { StorageType = RedisStorageType.Json });
330-
331-
collection = vectorStore.GetCollection<TKey, TRecord>(name, vectorStoreRecordDefinition);
332-
break;
333-
case VectorDB.VectorDBType.SqlServer:
334-
{
335-
336-
break;
337-
}
338-
case VectorDB.VectorDBType.SQLite:
339-
{
340-
break;
341-
}
342-
case VectorDB.VectorDBType.Weaviate:
343-
{
344-
345-
break;
346-
}
347-
case VectorDB.VectorDBType.Faiss:
348-
{
349-
break;
350-
}
351-
case VectorDB.VectorDBType.InMemory:
352-
{
353-
vectorStore = new InMemoryVectorStore();
354-
collection = vectorStore.GetCollection<TKey, TRecord>(name, vectorStoreRecordDefinition);
355-
break;
356-
}
357-
case VectorDB.VectorDBType.JDBC:
358-
{
359-
break;
360-
}
361-
case VectorDB.VectorDBType.Pinecon:
362-
{
363-
break;
364-
}
365-
case VectorDB.VectorDBType.VolatileInMemory:
366-
{
367-
break;
368-
}
369304
default:
305+
vectorStore = new InMemoryVectorStore();
306+
collection = vectorStore.GetCollection<TKey, TRecord>(name, vectorStoreRecordDefinition);
370307
break;
371308
}
372309

src/Senparc.AI.Kernel/Senparc.AI.Kernel.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<Project Sdk="Microsoft.NET.Sdk">
33
<PropertyGroup>
44
<TargetFramework>netstandard2.1</TargetFramework>
5-
<Version>0.25.1</Version>
5+
<Version>0.25.3</Version>
66
<Nullable>enable</Nullable>
77
<LangVersion>12.0</LangVersion>
88
<AssemblyName>Senparc.AI.Kernel</AssemblyName>

src/Senparc.AI/Enums.cs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -45,17 +45,17 @@ public enum ConfigModel
4545
}
4646

4747
#pragma warning disable CS1591 // 缺少对公共可见类型或成员的 XML 注释
48-
public enum VectorDBType
49-
{
50-
Memory,
51-
HardDisk,
52-
Redis,
53-
Mulivs,
54-
Chroma,
55-
PostgreSQL,
56-
Sqlite,
57-
SqlServer,
58-
Default = Memory,
59-
}
48+
//public enum VectorDBType
49+
//{
50+
// Memory,
51+
// HardDisk,
52+
// Redis,
53+
// Mulivs,
54+
// Chroma,
55+
// PostgreSQL,
56+
// Sqlite,
57+
// SqlServer,
58+
// Default = Memory,
59+
//}
6060
#pragma warning restore CS1591 // 缺少对公共可见类型或成员的 XML 注释
6161
}

src/Senparc.AI/Interfaces/ISenparcAiSetting.cs

Lines changed: 45 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -187,37 +187,51 @@ public class VectorDB
187187

188188
public enum VectorDBType
189189
{
190-
//Memory,
191-
//HardDisk,
192-
//Redis,
193-
//Mulivs,
194-
//Chroma,
195-
//PostgreSQL,
196-
//Sqlite,
197-
//SqlServer,
198-
199-
/* 注意:枚举值一旦确定,不能再进行修改 */
200-
201-
AzureAISearch=0,
202-
CosmosDBMongoDB=1,
203-
CosmosDBNoSQL=2,
204-
Chroma=3, //Planed
205-
Couchbase=4,
206-
Elasticsearch=5,
207-
Faiss=6,
208-
InMemory=7,
209-
JDBC=8,
210-
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)
211-
MongoDB=10,
212-
Pinecon=11,
213-
Postgres=12,
214-
Qdrant=13,
215-
Redis=14,
216-
SqlServer=15, //Planed
217-
SQLite=16,
218-
VolatileInMemory=17,
219-
Weaviate=18,
220-
Default = InMemory,
190+
Memory,
191+
HardDisk,
192+
Redis,
193+
Milvus,
194+
Chroma,
195+
PostgreSQL,
196+
Sqlite,
197+
SqlServer,
198+
Qdrant,
199+
Default = Memory,
221200
}
201+
202+
//public enum VectorDBType
203+
//{
204+
// //Memory,
205+
// //HardDisk,
206+
// //Redis,
207+
// //Mulivs,
208+
// //Chroma,
209+
// //PostgreSQL,
210+
// //Sqlite,
211+
// //SqlServer,
212+
213+
// /* 注意:枚举值一旦确定,不能再进行修改 */
214+
215+
// AzureAISearch=0,
216+
// CosmosDBMongoDB=1,
217+
// CosmosDBNoSQL=2,
218+
// Chroma=3, //Planed
219+
// Couchbase=4,
220+
// Elasticsearch=5,
221+
// Faiss=6,
222+
// InMemory=7,
223+
// JDBC=8,
224+
// 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)
225+
// MongoDB=10,
226+
// Pinecon=11,
227+
// Postgres=12,
228+
// Qdrant=13,
229+
// Redis=14,
230+
// SqlServer=15, //Planed
231+
// SQLite=16,
232+
// VolatileInMemory=17,
233+
// Weaviate=18,
234+
// Default = InMemory,
235+
//}
222236
}
223237
}

0 commit comments

Comments
 (0)