update readme

This commit is contained in:
zyxucp
2025-06-22 12:03:17 +08:00
parent ecbb36bcc6
commit a4d0eaad77

366
README.md
View File

@@ -2,6 +2,30 @@
# AntSK
## 使用.Net9 + Blazor+SemanticKernel 打造的AI知识库/智能体
![GitHub stars](https://img.shields.io/github/stars/AIDotNet/AntSK?style=social)
![GitHub forks](https://img.shields.io/github/forks/AIDotNet/AntSK?style=social)
![GitHub license](https://img.shields.io/github/license/AIDotNet/AntSK)
![.NET version](https://img.shields.io/badge/.NET-9.0-blue)
AntSK 是一个基于 .NET 9 和 Blazor 技术栈构建的企业级AI知识库和智能体平台集成了 Semantic Kernel 和 Kernel Memory提供完整的AI应用开发解决方案。
## 📋 目录
- [⭐ 核心功能](#核心功能)
- [🏗️ 技术架构](#技术架构)
- [🔄 系统工作流程](#系统工作流程)
- [🛠️ 技术栈](#技术栈)
- [📁 项目结构](#项目结构)
- [🚀 特色功能](#特色功能)
- [⛪ 应用场景](#应用场景)
- [✏️ 功能示例](#功能示例)
- [❓ 如何开始](#如何开始)
- [🔧 开发指南](#开发指南)
- [📊 性能优化建议](#性能优化建议)
- [💕 贡献者](#贡献者)
- [🚨 使用协议](#使用协议)
- [☎️ 联系我](#联系我)
## ⭐核心功能
- **语义内核 (Semantic Kernel)**:采用领先的自然语言处理技术,准确理解、处理和响应复杂的语义查询,为用户提供精确的信息检索和推荐服务。
@@ -27,7 +51,210 @@
- **国产信创**AntSK支持国产模型和国产数据库可以在信创条件下运行
- **模型微调**规划中基于llamafactory进行模型微调
## 🏗️ 技术架构
```mermaid
graph TB
subgraph "用户界面层"
UI[Blazor前端界面]
API[Web API接口]
end
subgraph "应用服务层"
Chat[聊天服务]
KMS[知识库服务]
Plugin[插件服务]
Model[模型管理服务]
Auth[认证服务]
end
subgraph "领域核心层"
SK[Semantic Kernel]
KM[Kernel Memory]
Embedding[向量嵌入]
Function[函数调用]
end
subgraph "基础设施层"
DB[(数据库)]
Vector[(向量数据库)]
File[文件存储]
OCR[OCR服务]
SD[StableDiffusion]
end
subgraph "AI模型层"
OpenAI[OpenAI]
Local[本地模型]
LlamaFactory[LlamaFactory]
Ollama[Ollama]
Spark[讯飞星火]
end
subgraph "插件系统"
NetPlugin[.NET插件]
APIPlugin[API插件]
FuncPlugin[函数插件]
end
UI --> Chat
UI --> KMS
UI --> Plugin
UI --> Model
API --> Auth
Chat --> SK
KMS --> KM
Plugin --> Function
SK --> OpenAI
SK --> Local
SK --> LlamaFactory
SK --> Ollama
SK --> Spark
KM --> Vector
KM --> Embedding
Chat --> NetPlugin
Chat --> APIPlugin
Chat --> FuncPlugin
KMS --> DB
KMS --> File
Model --> DB
OCR --> SD
style SK fill:#e1f5fe
style KM fill:#e8f5e8
style UI fill:#fff3e0
style API fill:#fff3e0
```
## 🔄 系统工作流程
```mermaid
graph TD
A[用户输入] --> B{输入类型}
B -->|文档上传| C[文档解析]
B -->|聊天对话| D[对话处理]
B -->|API调用| E[API处理]
C --> F[文档分块]
F --> G[向量化处理]
G --> H[存储到知识库]
D --> I{是否需要知识库}
I -->|是| J[知识库检索]
I -->|否| K[直接调用LLM]
J --> L[向量搜索]
L --> M[相关性排序]
M --> N[构建Prompt]
K --> O[LLM推理]
N --> O
O --> P{是否需要插件}
P -->|是| Q[插件调用]
P -->|否| R[生成回复]
Q --> S[执行函数]
S --> T[合并结果]
T --> R
E --> U[权限验证]
U --> V[业务逻辑]
V --> W[返回结果]
R --> X[用户界面展示]
W --> X
style A fill:#e1f5fe
style O fill:#e8f5e8
style H fill:#fff3e0
style X fill:#f3e5f5
```
## 🛠️ 技术栈
### 后端技术
- **.NET 9**: 最新的 .NET 框架,提供高性能和现代化开发体验
- **Blazor Server**: 基于服务器端渲染的现代Web UI框架
- **Semantic Kernel**: 微软开源的AI编排框架
- **Kernel Memory**: 知识库和向量存储管理
- **SqlSugar**: 高性能 ORM 框架,支持多种数据库
- **AutoMapper**: 对象映射框架
### AI & ML 技术
- **OpenAI GPT**: 支持 GPT-3.5/GPT-4 系列模型
- **Azure OpenAI**: 企业级 OpenAI 服务
- **讯飞星火**: 科大讯飞大语言模型
- **阿里云积**: 阿里云大语言模型
- **LlamaFactory**: 本地模型微调和推理
- **Ollama**: 本地模型运行环境
- **Stable Diffusion**: 文生图模型
- **BGE Embedding**: 中文向量嵌入模型
- **BGE Rerank**: 重排序模型
### 存储技术
- **PostgreSQL**: 主数据库存储
- **SQLite**: 轻量级数据库支持
- **Qdrant**: 向量数据库
- **Redis**: 缓存和向量存储
- **Disk/Memory**: 本地存储方案
### 前端技术
- **Ant Design Blazor**: 企业级UI组件库
- **Chart.js**: 数据可视化
- **Prism.js**: 代码高亮
## 📁 项目结构
```
AntSK/
├── src/
│ ├── AntSK/ # 主应用Blazor Server
│ │ ├── Components/ # 自定义组件
│ │ ├── Controllers/ # Web API控制器
│ │ ├── Pages/ # Blazor页面
│ │ │ ├── ChatPage/ # 聊天相关页面
│ │ │ ├── KmsPage/ # 知识库管理页面
│ │ │ ├── Plugin/ # 插件管理页面
│ │ │ ├── Setting/ # 系统设置页面
│ │ │ └── User/ # 用户管理页面
│ │ ├── Services/ # 应用服务
│ │ └── wwwroot/ # 静态资源
│ ├── AntSK.Domain/ # 领域层
│ │ ├── Domain/ # 领域模型和接口
│ │ ├── Repositories/ # 数据仓储
│ │ ├── Services/ # 领域服务
│ │ └── Common/ # 通用组件
│ ├── AntSK.LLM/ # LLM集成层
│ │ ├── SparkDesk/ # 讯飞星火集成
│ │ ├── StableDiffusion/ # SD文生图集成
│ │ └── Mock/ # 模拟服务
│ ├── AntSK.LLamaFactory/ # LlamaFactory集成
│ ├── AntSK.OCR/ # OCR服务
│ ├── AntSK.BackgroundTask/ # 后台任务处理
│ └── AntSK.ServiceDefaults/ # 服务默认配置
├── docs/ # 文档
└── docker-compose.yml # Docker部署文件
```
### 核心模块说明
| 模块 | 功能描述 |
|------|---------|
| **AntSK** | 主应用程序包含Blazor UI和Web API |
| **AntSK.Domain** | 领域层,包含业务逻辑、数据模型和仓储接口 |
| **AntSK.LLM** | 大语言模型集成层支持多种AI模型 |
| **AntSK.LLamaFactory** | LlamaFactory集成支持本地模型微调和推理 |
| **AntSK.OCR** | 光学字符识别服务 |
| **AntSK.BackgroundTask** | 后台任务处理,如知识库导入 |
## ⛪应用场景
@@ -63,9 +290,59 @@ AntSK 适用于多种业务场景,例如:
[在线文档http://antsk.cn](http://antsk.cn)
## 🚀 特色功能
### 🤖 多模型支持
- **云端模型**: OpenAI GPT、Azure OpenAI、讯飞星火、阿里云积灵等
- **本地模型**: 支持 Ollama 和Llamafactory运行离线模型
- **LlamaFactory**: 支持主流开源模型的微调和推理
- **Ollama**: 本地模型管理和运行
- **一键切换**: 支持在不同模型间无缝切换
### 📚 智能知识库
- **多格式支持**: Word、PDF、Excel、TXT、Markdown、JSON、PPT
- **向量化存储**: BGE-embedding 中文优化向量模型
- **智能检索**: BGE-rerank 重排序提升检索精度
- **实时同步**: 知识库内容实时更新和同步
### 🔌 开放插件系统
- **.NET 插件**: 支持 DLL 格式的原生插件
- **API 插件**: 通过 HTTP API 集成外部服务
- **函数插件**: 基于 Semantic Kernel 的函数调用
- **热插拔**: 插件动态加载,无需重启系统
### 🎨 文生图能力
- **Stable Diffusion**: 集成本地 SD 模型
- **多种后端**: 支持 CPU、CUDA、ROCm 等不同计算后端
- **参数调节**: 丰富的生成参数配置
- **批量生成**: 支持批量图片生成
### 🔍 OCR 文字识别
- **图片转文字**: 支持多种图片格式的文字提取
- **多语言支持**: 中英文等多语言识别
- **高精度**: 优化的 OCR 引擎,识别准确率高
## ❓如何开始?
在这里我使用的是Postgres 作为数据存储和向量存储因为Semantic Kernel和Kernel Memory都支持他当然你也可以换成其他的。
### 🛠️ 环境要求
- **.NET 9 SDK**: [下载地址](https://dotnet.microsoft.com/zh-cn/download/dotnet/9.0)
- **Docker** (可选): 用于容器化部署
- **Python 3.8+** (可选): 使用 LlamaFactory 时需要
### 💾 数据库支持
AntSK 支持多种数据库,通过 SqlSugar ORM 实现:
- **PostgreSQL** (推荐): 同时支持关系型数据和向量存储
- **SQLite**: 轻量级,适合开发和测试
- **MySQL**: 广泛使用的开源数据库
- **SQL Server**: 微软企业级数据库
- **Oracle**: 企业级数据库解决方案
### 🔧 向量数据库选择
- **PostgreSQL**: 使用 pgvector 扩展
- **Qdrant**: 专业向量数据库
- **Redis**: 内存向量存储
- **Disk**: 本地文件存储
- **Memory**: 内存存储 (不持久化)
模型默认支持openai、azure openai、讯飞星火、阿里云积、 和llama支持的gguf本地模型 以及llamafactory的本地模型,如果需要使用其他模型可以使用one-api进行集成。
@@ -198,6 +475,74 @@ dotnet AntSK.dll
DB我使用的是CodeFirst模式只要配置好数据库链接表结构是自动创建的
## 🔧 开发指南
### 本地开发环境搭建
1. **克隆项目**
```bash
git clone https://github.com/AIDotNet/AntSK.git
cd AntSK
```
2. **安装依赖**
```bash
# 确保已安装 .NET 9 SDK
dotnet restore
```
3. **配置数据库**
- 修改 `src/AntSK/appsettings.json` 中的数据库连接字符串
- 首次运行会自动创建数据库表结构 (CodeFirst 模式)
4. **启动项目**
```bash
cd src/AntSK
dotnet run
```
访问 `https://localhost:5001``http://localhost:5000`
### 插件开发
#### .NET 插件开发
```csharp
[AntSKFunction("插件描述")]
public class MyPlugin
{
[AntSKFunction("函数描述")]
public async Task<string> MyFunction(string input)
{
// 您的业务逻辑
return "处理结果";
}
}
```
#### API 插件开发
创建符合 OpenAPI 规范的 HTTP 接口AntSK 会自动解析并集成。
### 自定义模型集成
1. **实现 IChatCompletion 接口**
```csharp
public class CustomChatCompletion : IChatCompletion
{
public async Task<IReadOnlyList<ChatMessage>> GetChatMessageContentsAsync(
ChatHistory chatHistory,
PromptExecutionSettings? executionSettings = null,
Kernel? kernel = null,
CancellationToken cancellationToken = default)
{
// 实现您的模型调用逻辑
}
}
```
2. **注册服务**
```csharp
services.AddSingleton<IChatCompletion, CustomChatCompletion>();
```
## ✔使用llamafactory
```
1、首先需要确保你的环境已经安装了python和pip如果使用镜像例如p0.2.4版本已经包含了 python全套环境则无需此步骤
@@ -209,6 +554,23 @@ DB我使用的是CodeFirst模式只要配置好数据库链接表结构是
7、点击保存然后就可以开始聊天了
8、很多人会问 LLamaSharp与llamafactory有什么区别其实这两者LLamaSharp是llama.cpp的 dotnet实现但是只支持本地gguf模型 而llamafactory 支持的模型种类更多但使用的是python的实现其主要差异在这里另外llamafactory具有模型微调的能力这也是我们下一步需要重点集成的部分。
```
## 📊 性能优化建议
### 硬件配置推荐
| 用途 | CPU | 内存 | 存储 | GPU |
|------|-----|------|------|-----|
| 开发测试 | 4核+ | 8GB+ | SSD 50GB+ | 可选 |
| 小型部署 | 8核+ | 16GB+ | SSD 100GB+ | 可选 |
| 生产环境 | 16核+ | 32GB+ | SSD 500GB+ | RTX 3080+ |
| 大规模部署 | 32核+ | 64GB+ | SSD 1TB+ | RTX 4090+ |
### 性能调优
- **数据库连接池**: 根据并发量调整连接池大小
- **向量维度**: 根据精度需求选择合适的向量维度
- **缓存策略**: 合理使用 Redis 缓存热点数据
- **模型选择**: 根据场景选择合适的模型大小

## 💕 贡献者