Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
147 changes: 34 additions & 113 deletions src/Senparc.AI.Kernel/KernelConfigExtensions/KernelConfigExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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
{
Expand Down Expand Up @@ -170,82 +171,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;
}
Expand Down Expand Up @@ -280,93 +246,48 @@ public static VectorStoreCollection<TKey, TRecord> GetVectorCollection<TKey, TRe

switch (vectorDb.Type)
{
case VectorDB.VectorDBType.AzureAISearch:
case VectorDBType.Memory:
{
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:
{
break;
}
case VectorDB.VectorDBType.Qdrant:
{
database = null;
vectorStore = new QdrantVectorStore(new QdrantClient(vectorDb.ConnectionString), ownsClient: true);
vectorStore = new InMemoryVectorStore();
collection = vectorStore.GetCollection<TKey, TRecord>(name, vectorStoreRecordDefinition);
break;
}
case VectorDB.VectorDBType.Redis:
database = ConnectionMultiplexer.Connect(vectorDb.ConnectionString).GetDatabase();
vectorStore = new RedisVectorStore(database,
new() { StorageType = RedisStorageType.Json });

collection = vectorStore.GetCollection<TKey, TRecord>(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<TKey, TRecord>(name, vectorStoreRecordDefinition);
break;
}
case VectorDB.VectorDBType.Faiss:
case VectorDBType.Mulivs:
{
break;
}
case VectorDB.VectorDBType.InMemory:
case VectorDBType.Chroma:
{
vectorStore = new InMemoryVectorStore();
collection = vectorStore.GetCollection<TKey, TRecord>(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<TKey, TRecord>(name, vectorStoreRecordDefinition);
break;
}

Expand Down
2 changes: 1 addition & 1 deletion src/Senparc.AI.Kernel/Senparc.AI.Kernel.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
<Version>0.25.1</Version>
<Version>0.25.2</Version>
<Nullable>enable</Nullable>
<LangVersion>12.0</LangVersion>
<AssemblyName>Senparc.AI.Kernel</AssemblyName>
Expand Down
24 changes: 12 additions & 12 deletions src/Senparc.AI/Enums.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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 注释
}
75 changes: 44 additions & 31 deletions src/Senparc.AI/Interfaces/ISenparcAiSetting.cs
Original file line number Diff line number Diff line change
Expand Up @@ -187,37 +187,50 @@ 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,
Mulivs,
Chroma,
PostgreSQL,
Sqlite,
SqlServer,
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,
//}
}
}
2 changes: 1 addition & 1 deletion src/Senparc.AI/Senparc.AI.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
<Version>0.24.2</Version>
<Version>0.24.3</Version>
<Nullable>enable</Nullable>
<LangVersion>10.0</LangVersion>
<AssemblyName>Senparc.AI</AssemblyName>
Expand Down
Loading