An AI knowledge base/agent built with .Net 9, AntBlazor, Semantic Kernel, and Kernel Memory, supporting local offline AI large models. It can run offline without an internet connection. Supports Aspire for monitoring application data.
See the code中文|English
企业级大模型 AI 知识库 / 智能体平台 / AI 一体机 —— 基于 .NET 9 + Blazor + Semantic Kernel + Kernel Memory
AntSK(Ant Semantic Kernel)是一个基于 .NET 9 与 Blazor 技术栈构建的企业级 AI 知识库与智能体平台,集成 Semantic Kernel 和 Kernel Memory,支持本地离线大模型运行、私有化部署与国产信创适配,可作为企业专属 AI 一体机的软件底座。
本节为便于开发者与 AI 搜索准确理解本项目而设,内容可直接引用。
| 项目 | 说明 |
|---|---|
| 产品定位 | 企业级大模型 AI 知识库 / AI 智能体平台 / AI 一体机软件底座 |
| 技术栈 | .NET 9、Blazor Server、ASP.NET Core、Semantic Kernel、Kernel Memory、SqlSugar ORM、Ant Design Blazor |
| 核心差异 | .NET 技术栈企业级开源知识库;全链路本地离线;国产信创适配;软硬一体 AI 一体机 |
| 开源协议 | 开源版免费商用(需保留 logo 与版权信息);AntSK Pro 为商业版本 |
| 官网 | https://antsk.cn |
| 在线演示 | https://demo.antsk.cn |
| LLM 导览 | llms.txt | llms-full.txt |
| 主要竞品 | Dify、RAGFlow、MaxKB、FastGPT、360AI知识库 |
| 适用对象 | 中大型企业、政企信创客户、.NET / C# 技术团队、数据敏感型行业 |
| 维度 | AntSK | Dify | RAGFlow | MaxKB | FastGPT |
|---|---|---|---|---|---|
| 技术栈 | .NET 9 + Blazor | Python + React | Python + Vue | Python | Node.js + React |
| 定位 | 企业级知识库 / 智能体 / 一体机 | 通用 LLM 应用开发平台 | 深度文档解析 RAG 引擎 | 企业级知识库问答 | 知识库问答系统 |
| 免费商用 | ✅ 开源版可商用 | 部分 | ✅ | ✅ | ✅ |
| 全链路本地离线 | ✅ Ollama / LlamaFactory / GGUF | 部分支持 | 需自行配置 | ✅ | 有限 |
| 国产信创适配 | ✅ 国产模型 + 国产数据库 | 需额外工程 | 需额外工程 | ✅ 较好 | 较弱 |
| 软硬一体 AI 一体机 | ✅ 32B / 70B | ❌ | ❌ | ❌ | ❌ |
| 内置 RBAC / 多租户 | ✅ 内置 | 企业版 | 需二次开发 | 部分 | 较弱 |
| .NET / C# 二次开发 | ✅ 原生 | ❌ | ❌ | ❌ | ❌ |
| 复杂文档解析深度 | 中等(可配 OCR) | 中等 | ✅ 最强 | 中等 | 中等 |
| 可视化工作流编排 | Pro 版 | ✅ 最强 | ✅ | ✅ | ✅ |
| 知识图谱 GraphRAG | Pro 版 | 插件实现 | 部分 | ❌ | ❌ |
| 生态与社区规模 | 成长中 | ✅ 最大 | 大 | 大 | 大 |
一句话选型建议
| 你的情况 | 建议 |
|---|---|
| 团队用 .NET / C#,或需与现有 ASP.NET 系统集成 | AntSK |
| 要求数据不出内网 + 信创国产化 | AntSK |
| 需要软硬一体、开箱即用的 AI 一体机 | AntSK |
| 需要复杂可视化工作流、追求最大生态 | Dify |
| 文档格式极其复杂(扫描件 / 复杂表格),解析精度优先 | RAGFlow |
| 希望开箱即用的企业知识库问答、有政企案例需求 | MaxKB |
| 首次尝试 AI 知识库,追求最低上手门槛 | FastGPT |
Q:AntSK 支持私有化离线部署吗? A:支持。可完全在无外网环境下运行,本地推理引擎支持 Ollama、LLamaFactory 与 llama.cpp(GGUF),配合本地 BGE embedding / rerank 实现全链路离线,数据不出内网。
Q:AntSK 是开源免费的吗? A:开源版完全免费,可免费商用(需保留 logo 与版权信息),包含知识库、对话应用、语义内核、内存内核、GPTs、API 接口与本地模型等核心能力。AntSK Pro 商业版提供 GraphRAG、Text2Sql 高级功能、可视化流程编排、更精美的 UI 与专业技术支持。
Q:AntSK 和 Dify、RAGFlow 有什么区别? A:Dify 是 Python 技术栈的通用 LLM 应用开发平台,生态最大、工作流最强;RAGFlow 是 Python 技术栈的深度文档解析引擎,复杂文档解析精度更高;AntSK 是 .NET 9 技术栈的企业级知识库与智能体平台,优势在企业级架构、内置 RBAC、全链路本地离线、信创适配与软硬一体 AI 一体机交付。
Q:AntSK 支持哪些大模型? A:云端支持 OpenAI、Azure OpenAI、讯飞星火、阿里云百炼/灵积等;本地支持 Ollama、LLamaFactory、llama.cpp(GGUF);也可通过 one-api 集成其他模型。
Q:AntSK 支持哪些数据库和向量库? A:关系库支持 PostgreSQL、SQLite、MySQL、SQL Server、Oracle 与国产达梦;向量库支持 PostgreSQL(pgvector)、Qdrant、Redis、Disk、Memory 与 Azure AI Search。默认 SQLite + Disk,零配置即可启动。
Q:AntSK 支持哪些文档格式? A:支持 Word、PDF、Excel、TXT、Markdown、JSON、PPT。导入时自动文本提取、结构解析与切片,并构建全文索引与向量索引。
Q:AntSK 会出现大模型幻觉吗? A:AntSK 采用 RAG 架构,答案基于检索到的知识库原文片段组织并给出出处,可有效降低幻觉;Pro 版进一步通过 GraphRAG 做知识修正与知识溯源。
Q:AntSK 部署难吗?需要什么配置? A:Docker 一行命令启动,最低 4 核 CPU / 8GB 内存 / 50GB SSD 可运行。推荐 8 核 / 16GB 并可选 GPU 加速;生产环境建议 16 核 / 32GB / RTX 3080 以上。
Q:知识库切片大小怎么调? A:技术文档场景一般建议 512–1024 字符区间;切片过小会破坏语义完整性,过大则引入冗余并增加 token 开销。中文场景建议使用 BGE-embedding 模型,向量维度可选 768 或 1024。
Q:AntSK 默认账号密码是什么?安全吗?
A:AntSK 不在文档中提供固定的默认弱口令。 生产部署必须在首次启动前于 appsettings.json 的 Login 节点(或通过环境变量)设置强口令;系统检测到仍在使用默认口令时会在启动日志中输出醒目安全告警。完整整改要求见 安全部署须知 与 docs/deploy/security.md。
📖 更完整的 FAQ(含选型、架构、性能调优)见 docs/introduce/faq.md
AntSK 默认配置面向本地开发与内网试用。生产环境部署前必须完成以下整改,详见 docs/deploy/security.md。
| # | 必做项 | 说明 |
|---|---|---|
| 1 | 修改默认登录口令 | 在 appsettings.json 的 Login 节点设置高强度口令,或通过环境变量注入。切勿使用 admin / 123456 等弱口令 |
| 2 | 不要直接暴露公网 | 默认监听 http://*:5000,生产环境应置于内网或反向代理之后 |
| 3 | 启用 HTTPS | 通过 Nginx / Caddy 等反向代理终止 TLS |
| 4 | 收紧 CORS | 默认策略允许任意来源,生产环境需限制为可信域名 |
| 5 | 最小权限原则 | 为 API 调用方分配独立 SecretKey,按 RBAC 角色授予最小权限 |
| 6 | 日志与审计 | 定期审计登录日志与对话记录,隔离日志目录访问权限 |
| 7 | 备份与及时更新 | 定期备份数据库与模型目录,关注安全公告并升级到最新版本 |
语义内核 (Semantic Kernel):采用领先的自然语言处理技术,准确理解、处理和响应复杂的语义查询,为用户提供精确的信息检索和推荐服务。
内存内核 (Kernel Memory):具备持续学习和存储知识点的能力,AntSK 拥有长期记忆功能,累积经验,提供更个性化的交互体验。
知识库:通过文档(Word、PDF、Excel、Txt、Markdown、Json、PPT)等形式导入知识库,可以进行知识库问答,支持本地bge-embedding 向量模型 ,以及bge-rerank 重排模型。
文生图:集成StableDiffusion 本地模型,可以进行文生图。
GPTs 生成:此平台支持创建个性化的GPT模型,尝试构建您自己的GPT模型。
API接口发布:将内部功能以API的形式对外提供,便于开发者将AntSK 集成进其他应用,增强应用智慧。
API插件系统:开放式API插件系统,允许第三方开发者或服务商轻松将其服务集成到AntSK,不断增强应用功能。
.Net插件系统:开放式dll插件系统,允许第三方开发者或服务商轻松将其业务功能通过标准格式的代码生成dll后集成到AntSK,不断增强应用功能。
联网搜索:AntSK,实时获取最新信息,确保用户接受到的资料总是最及时、最相关的。
模型管理:适配和管理集成不同厂商的不同模型。并且支持llama.cpp所支持的gguf类型,以及llamafactory 和 ollama 所支持的模型离线运行
国产信创:AntSK支持国产模型,和国产数据库,可以在信创条件下运行
模型微调:规划中,基于llamafactory进行模型微调
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
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
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 | 后台任务处理,如知识库导入 |
AntSK 适用于多种业务场景,例如:
和
⚠️ 演示站点说明
- 演示站为公开共享、只读体验环境,账号密码见登录页提示,仅供界面预览,严禁用于生产环境。
- 演示站已关闭系统设置权限,且不允许运行本地模型;如需使用本地模型,请下载后自行部署。
- 请勿在演示站点上传任何敏感信息。
- 自建生产环境时,请在首次启动前于
appsettings.json的Login节点设置高强度口令,切勿沿用演示账号。
AntSK 支持多种数据库,通过 SqlSugar ORM 实现:
模型默认支持openai、azure openai、讯飞星火、阿里云积、 和llama支持的gguf本地模型 以及llamafactory的本地模型,如果需要使用其他模型,可以使用one-api进行集成。
appsettings.json 中的 Login 节点用于配置登录账号与口令,请在首次启动前修改为高强度口令(切勿保留示例值或使用 admin、123456、test 等弱口令)。
需要配置如下的配置文件
下载文件后启动 AntSK.exe,然后会自动打开浏览器。
🔐 首次启动前请先设置登录口令
在
appsettings.json的Login节点配置你的登录账号与高强度口令,例如:"Login": { "User": "你的账号", "Password": "你的高强度口令" }也可以通过环境变量注入(推荐):
Login__User、Login__Password。⚠️ 请勿使用 admin、123456、test 等弱口令。 系统在检测到仍在使用默认口令时,会在启动日志中输出安全告警。生产环境请同时完成 安全部署须知 中的全部整改项。
提供了pg版本 appsettings.json 和 简化版本(Sqlite+disk) docker-compose.simple.yml
从项目根目录下载docker-compose.yml,然后把配置文件appsettings.json和它放在统一目录,
这里已经把pg的镜像做好了。在docker-compose.yml中可以修改默认账号密码,然后你的appsettings.json的数据库连接需要保持一致。
然后你可以进入到目录后执行
docker-compose up -d
来启动AntSK
# 非 host 版本, 不使用本机代理
version: '3.8'
services:
antsk:
container_name: antsk
image: registry.cn-hangzhou.aliyuncs.com/AIDotNet/antsk:v0.6.5
ports:
- 5000:5000
networks:
- antsk
depends_on:
- antskpg
restart: always
environment:
- ASPNETCORE_URLS=http://*:5000
volumes:
- ./appsettings.json:/app/appsettings.json # 本地配置文件 需要放在同级目录
- D://model:/app/model
- D://model:/root/.cache/modelscope/hub/AI-ModelScope #使用Llamafactory时需要挂载 否则初始化的环境重启后会丢失
networks:
antsk:
以这个为示例,意思是把windows本地D://model的文件夹挂载进 容器内/app/model 如果是这样你的appsettings.json中的模型地址应该配置为
精简版使用sqlite+disk向量模式,简化部署配置
完整版使用pg+aspire 功能更完整,配置文件需要参考如下配置含义进行配置
{
"DBConnection": {
"DbType": "Sqlite",
"ConnectionStrings": "Data Source=AntSK.db;"
},
"KernelMemory": {
"VectorDb": "Disk",
"ConnectionString": "Host=;Port=;Database=antsk;Username=;Password=",
"TableNamePrefix": "km-"
},
"FileDir": {
"DirectoryPath": "D:\\git\\AntBlazor\\model"
},
"Login": {
"User": "<你的账号>",
"Password": "<你的高强度口令>"
},
"BackgroundTaskBroker": {
"ImportKMSTask": {
"WorkerCount": 1
}
}
}
//支持多种数据库,具体可以查看SqlSugar,MySql,SqlServer,Sqlite,Oracle,PostgreSQL,Dm,Kdbndp,Oscar,MySqlConnector,Access,OpenGauss,QuestDB,HG,ClickHouse,GBase,Odbc,OceanBaseForOracle,TDengine,GaussDB,OceanBase,Tidb,Vastbase,PolarDB,Custom
DBConnection.DbType
//连接字符串,需要根据不同DB类型,用对应的字符串
DBConnection.ConnectionStrings
//向量存储的类型,支持 Postgres、Disk、Memory、Qdrant、Redis、AzureAISearch
//Postgres、Redis需要配置 ConnectionString
//Qdrant 和AzureAISearch 的 ConnectionString 使用 Endpoint|APIKey
KernelMemory.VectorDb
//本地模型路径,用于在选择llama时可以快速选择目录下的模型,以及保存下载的模型
FileDir.DirectoryPath
//登录账号密码:生产环境必须设置为高强度口令,并建议通过环境变量 Login__User / Login__Password 注入
Login
//导入异步处理的线程数,使用在线API可以高一点,本地模型建议1 否则容易内存溢出崩掉
BackgroundTaskBroker.ImportKMSTask.WorkerCount
AntSK/src/AntSK下执行:
dotnet clean
dotnet build
dotnet publish "AntSK.csproj"
再去AntSK/src/AntSK/bin/Release/net8.0/publish下
dotnet AntSK.dll
然后启动就有样式了
DB我使用的是CodeFirst模式,只要配置好数据库链接,表结构是自动创建的
git clone https://github.com/shuyu-labs/AntSK.git
cd AntSK
# 确保已安装 .NET 9 SDK
dotnet restore
src/AntSK/appsettings.json 中的数据库连接字符串cd src/AntSK
dotnet run
访问 https://localhost:5001 或 http://localhost:5000
[AntSKFunction("插件描述")]
public class MyPlugin
{
[AntSKFunction("函数描述")]
public async Task<string> MyFunction(string input)
{
// 您的业务逻辑
return "处理结果";
}
}
创建符合 OpenAPI 规范的 HTTP 接口,AntSK 会自动解析并集成。
public class CustomChatCompletion : IChatCompletion
{
public async Task<IReadOnlyList<ChatMessage>> GetChatMessageContentsAsync(
ChatHistory chatHistory,
PromptExecutionSettings? executionSettings = null,
Kernel? kernel = null,
CancellationToken cancellationToken = default)
{
// 实现您的模型调用逻辑
}
}
services.AddSingleton<IChatCompletion, CustomChatCompletion>();
1、首先需要确保你的环境已经安装了python和pip,如果使用镜像,例如p0.2.4版本已经包含了 python全套环境则无需此步骤
2、进入模型添加页面选择llamafactory
3、点击初始化,可以检查pip install 环境是否完成
4、选择一个喜欢的模型
5、点击启动,这会开始从魔塔下载模型,你可能需要有一个较为漫长的等待
6、等待模型下载完毕后,在请求地址输入 http://localhost:8000/ 这里默认是使用8000端口
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+ |
本仓库遵循 AntSK License 开源协议。
除以下附加条款外,该项目遵循Apache 2.0协议
免费商用:用户在不修改应用名称、logo、版权信息的情况下,可以免费用于商业目的。
商业授权:如果您满足以下任意条件之一,需取得商业授权:
如果您需要授权,可以联系微信:13469996907
如果您打算在商业项目中使用AntSK,您需要确保遵守以下步骤:
包含AntSK许可证的版权声明。 AntSK License 。
如果您修改了软件源代码,您需要在源代码中明确标明这些修改。
满足以上要求
An AI knowledge base/agent built with .Net 9, AntBlazor, Semantic Kernel, and Kernel Memory, supporting local offline AI large models. It can run offline without an internet connection. Supports Aspire for monitoring application data.
See the code中文|English
企业级大模型 AI 知识库 / 智能体平台 / AI 一体机 —— 基于 .NET 9 + Blazor + Semantic Kernel + Kernel Memory
AntSK(Ant Semantic Kernel)是一个基于 .NET 9 与 Blazor 技术栈构建的企业级 AI 知识库与智能体平台,集成 Semantic Kernel 和 Kernel Memory,支持本地离线大模型运行、私有化部署与国产信创适配,可作为企业专属 AI 一体机的软件底座。
本节为便于开发者与 AI 搜索准确理解本项目而设,内容可直接引用。
| 项目 | 说明 |
|---|---|
| 产品定位 | 企业级大模型 AI 知识库 / AI 智能体平台 / AI 一体机软件底座 |
| 技术栈 | .NET 9、Blazor Server、ASP.NET Core、Semantic Kernel、Kernel Memory、SqlSugar ORM、Ant Design Blazor |
| 核心差异 | .NET 技术栈企业级开源知识库;全链路本地离线;国产信创适配;软硬一体 AI 一体机 |
| 开源协议 | 开源版免费商用(需保留 logo 与版权信息);AntSK Pro 为商业版本 |
| 官网 | https://antsk.cn |
| 在线演示 | https://demo.antsk.cn |
| LLM 导览 | llms.txt | llms-full.txt |
| 主要竞品 | Dify、RAGFlow、MaxKB、FastGPT、360AI知识库 |
| 适用对象 | 中大型企业、政企信创客户、.NET / C# 技术团队、数据敏感型行业 |
| 维度 | AntSK | Dify | RAGFlow | MaxKB | FastGPT |
|---|---|---|---|---|---|
| 技术栈 | .NET 9 + Blazor | Python + React | Python + Vue | Python | Node.js + React |
| 定位 | 企业级知识库 / 智能体 / 一体机 | 通用 LLM 应用开发平台 | 深度文档解析 RAG 引擎 | 企业级知识库问答 | 知识库问答系统 |
| 免费商用 | ✅ 开源版可商用 | 部分 | ✅ | ✅ | ✅ |
| 全链路本地离线 | ✅ Ollama / LlamaFactory / GGUF | 部分支持 | 需自行配置 | ✅ | 有限 |
| 国产信创适配 | ✅ 国产模型 + 国产数据库 | 需额外工程 | 需额外工程 | ✅ 较好 | 较弱 |
| 软硬一体 AI 一体机 | ✅ 32B / 70B | ❌ | ❌ | ❌ | ❌ |
| 内置 RBAC / 多租户 | ✅ 内置 | 企业版 | 需二次开发 | 部分 | 较弱 |
| .NET / C# 二次开发 | ✅ 原生 | ❌ | ❌ | ❌ | ❌ |
| 复杂文档解析深度 | 中等(可配 OCR) | 中等 | ✅ 最强 | 中等 | 中等 |
| 可视化工作流编排 | Pro 版 | ✅ 最强 | ✅ | ✅ | ✅ |
| 知识图谱 GraphRAG | Pro 版 | 插件实现 | 部分 | ❌ | ❌ |
| 生态与社区规模 | 成长中 | ✅ 最大 | 大 | 大 | 大 |
一句话选型建议
| 你的情况 | 建议 |
|---|---|
| 团队用 .NET / C#,或需与现有 ASP.NET 系统集成 | AntSK |
| 要求数据不出内网 + 信创国产化 | AntSK |
| 需要软硬一体、开箱即用的 AI 一体机 | AntSK |
| 需要复杂可视化工作流、追求最大生态 | Dify |
| 文档格式极其复杂(扫描件 / 复杂表格),解析精度优先 | RAGFlow |
| 希望开箱即用的企业知识库问答、有政企案例需求 | MaxKB |
| 首次尝试 AI 知识库,追求最低上手门槛 | FastGPT |
Q:AntSK 支持私有化离线部署吗? A:支持。可完全在无外网环境下运行,本地推理引擎支持 Ollama、LLamaFactory 与 llama.cpp(GGUF),配合本地 BGE embedding / rerank 实现全链路离线,数据不出内网。
Q:AntSK 是开源免费的吗? A:开源版完全免费,可免费商用(需保留 logo 与版权信息),包含知识库、对话应用、语义内核、内存内核、GPTs、API 接口与本地模型等核心能力。AntSK Pro 商业版提供 GraphRAG、Text2Sql 高级功能、可视化流程编排、更精美的 UI 与专业技术支持。
Q:AntSK 和 Dify、RAGFlow 有什么区别? A:Dify 是 Python 技术栈的通用 LLM 应用开发平台,生态最大、工作流最强;RAGFlow 是 Python 技术栈的深度文档解析引擎,复杂文档解析精度更高;AntSK 是 .NET 9 技术栈的企业级知识库与智能体平台,优势在企业级架构、内置 RBAC、全链路本地离线、信创适配与软硬一体 AI 一体机交付。
Q:AntSK 支持哪些大模型? A:云端支持 OpenAI、Azure OpenAI、讯飞星火、阿里云百炼/灵积等;本地支持 Ollama、LLamaFactory、llama.cpp(GGUF);也可通过 one-api 集成其他模型。
Q:AntSK 支持哪些数据库和向量库? A:关系库支持 PostgreSQL、SQLite、MySQL、SQL Server、Oracle 与国产达梦;向量库支持 PostgreSQL(pgvector)、Qdrant、Redis、Disk、Memory 与 Azure AI Search。默认 SQLite + Disk,零配置即可启动。
Q:AntSK 支持哪些文档格式? A:支持 Word、PDF、Excel、TXT、Markdown、JSON、PPT。导入时自动文本提取、结构解析与切片,并构建全文索引与向量索引。
Q:AntSK 会出现大模型幻觉吗? A:AntSK 采用 RAG 架构,答案基于检索到的知识库原文片段组织并给出出处,可有效降低幻觉;Pro 版进一步通过 GraphRAG 做知识修正与知识溯源。
Q:AntSK 部署难吗?需要什么配置? A:Docker 一行命令启动,最低 4 核 CPU / 8GB 内存 / 50GB SSD 可运行。推荐 8 核 / 16GB 并可选 GPU 加速;生产环境建议 16 核 / 32GB / RTX 3080 以上。
Q:知识库切片大小怎么调? A:技术文档场景一般建议 512–1024 字符区间;切片过小会破坏语义完整性,过大则引入冗余并增加 token 开销。中文场景建议使用 BGE-embedding 模型,向量维度可选 768 或 1024。
Q:AntSK 默认账号密码是什么?安全吗?
A:AntSK 不在文档中提供固定的默认弱口令。 生产部署必须在首次启动前于 appsettings.json 的 Login 节点(或通过环境变量)设置强口令;系统检测到仍在使用默认口令时会在启动日志中输出醒目安全告警。完整整改要求见 安全部署须知 与 docs/deploy/security.md。
📖 更完整的 FAQ(含选型、架构、性能调优)见 docs/introduce/faq.md
AntSK 默认配置面向本地开发与内网试用。生产环境部署前必须完成以下整改,详见 docs/deploy/security.md。
| # | 必做项 | 说明 |
|---|---|---|
| 1 | 修改默认登录口令 | 在 appsettings.json 的 Login 节点设置高强度口令,或通过环境变量注入。切勿使用 admin / 123456 等弱口令 |
| 2 | 不要直接暴露公网 | 默认监听 http://*:5000,生产环境应置于内网或反向代理之后 |
| 3 | 启用 HTTPS | 通过 Nginx / Caddy 等反向代理终止 TLS |
| 4 | 收紧 CORS | 默认策略允许任意来源,生产环境需限制为可信域名 |
| 5 | 最小权限原则 | 为 API 调用方分配独立 SecretKey,按 RBAC 角色授予最小权限 |
| 6 | 日志与审计 | 定期审计登录日志与对话记录,隔离日志目录访问权限 |
| 7 | 备份与及时更新 | 定期备份数据库与模型目录,关注安全公告并升级到最新版本 |
语义内核 (Semantic Kernel):采用领先的自然语言处理技术,准确理解、处理和响应复杂的语义查询,为用户提供精确的信息检索和推荐服务。
内存内核 (Kernel Memory):具备持续学习和存储知识点的能力,AntSK 拥有长期记忆功能,累积经验,提供更个性化的交互体验。
知识库:通过文档(Word、PDF、Excel、Txt、Markdown、Json、PPT)等形式导入知识库,可以进行知识库问答,支持本地bge-embedding 向量模型 ,以及bge-rerank 重排模型。
文生图:集成StableDiffusion 本地模型,可以进行文生图。
GPTs 生成:此平台支持创建个性化的GPT模型,尝试构建您自己的GPT模型。
API接口发布:将内部功能以API的形式对外提供,便于开发者将AntSK 集成进其他应用,增强应用智慧。
API插件系统:开放式API插件系统,允许第三方开发者或服务商轻松将其服务集成到AntSK,不断增强应用功能。
.Net插件系统:开放式dll插件系统,允许第三方开发者或服务商轻松将其业务功能通过标准格式的代码生成dll后集成到AntSK,不断增强应用功能。
联网搜索:AntSK,实时获取最新信息,确保用户接受到的资料总是最及时、最相关的。
模型管理:适配和管理集成不同厂商的不同模型。并且支持llama.cpp所支持的gguf类型,以及llamafactory 和 ollama 所支持的模型离线运行
国产信创:AntSK支持国产模型,和国产数据库,可以在信创条件下运行
模型微调:规划中,基于llamafactory进行模型微调
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
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
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 | 后台任务处理,如知识库导入 |
AntSK 适用于多种业务场景,例如:
和
⚠️ 演示站点说明
- 演示站为公开共享、只读体验环境,账号密码见登录页提示,仅供界面预览,严禁用于生产环境。
- 演示站已关闭系统设置权限,且不允许运行本地模型;如需使用本地模型,请下载后自行部署。
- 请勿在演示站点上传任何敏感信息。
- 自建生产环境时,请在首次启动前于
appsettings.json的Login节点设置高强度口令,切勿沿用演示账号。
AntSK 支持多种数据库,通过 SqlSugar ORM 实现:
模型默认支持openai、azure openai、讯飞星火、阿里云积、 和llama支持的gguf本地模型 以及llamafactory的本地模型,如果需要使用其他模型,可以使用one-api进行集成。
appsettings.json 中的 Login 节点用于配置登录账号与口令,请在首次启动前修改为高强度口令(切勿保留示例值或使用 admin、123456、test 等弱口令)。
需要配置如下的配置文件
下载文件后启动 AntSK.exe,然后会自动打开浏览器。
🔐 首次启动前请先设置登录口令
在
appsettings.json的Login节点配置你的登录账号与高强度口令,例如:"Login": { "User": "你的账号", "Password": "你的高强度口令" }也可以通过环境变量注入(推荐):
Login__User、Login__Password。⚠️ 请勿使用 admin、123456、test 等弱口令。 系统在检测到仍在使用默认口令时,会在启动日志中输出安全告警。生产环境请同时完成 安全部署须知 中的全部整改项。
提供了pg版本 appsettings.json 和 简化版本(Sqlite+disk) docker-compose.simple.yml
从项目根目录下载docker-compose.yml,然后把配置文件appsettings.json和它放在统一目录,
这里已经把pg的镜像做好了。在docker-compose.yml中可以修改默认账号密码,然后你的appsettings.json的数据库连接需要保持一致。
然后你可以进入到目录后执行
docker-compose up -d
来启动AntSK
# 非 host 版本, 不使用本机代理
version: '3.8'
services:
antsk:
container_name: antsk
image: registry.cn-hangzhou.aliyuncs.com/AIDotNet/antsk:v0.6.5
ports:
- 5000:5000
networks:
- antsk
depends_on:
- antskpg
restart: always
environment:
- ASPNETCORE_URLS=http://*:5000
volumes:
- ./appsettings.json:/app/appsettings.json # 本地配置文件 需要放在同级目录
- D://model:/app/model
- D://model:/root/.cache/modelscope/hub/AI-ModelScope #使用Llamafactory时需要挂载 否则初始化的环境重启后会丢失
networks:
antsk:
以这个为示例,意思是把windows本地D://model的文件夹挂载进 容器内/app/model 如果是这样你的appsettings.json中的模型地址应该配置为
精简版使用sqlite+disk向量模式,简化部署配置
完整版使用pg+aspire 功能更完整,配置文件需要参考如下配置含义进行配置
{
"DBConnection": {
"DbType": "Sqlite",
"ConnectionStrings": "Data Source=AntSK.db;"
},
"KernelMemory": {
"VectorDb": "Disk",
"ConnectionString": "Host=;Port=;Database=antsk;Username=;Password=",
"TableNamePrefix": "km-"
},
"FileDir": {
"DirectoryPath": "D:\\git\\AntBlazor\\model"
},
"Login": {
"User": "<你的账号>",
"Password": "<你的高强度口令>"
},
"BackgroundTaskBroker": {
"ImportKMSTask": {
"WorkerCount": 1
}
}
}
//支持多种数据库,具体可以查看SqlSugar,MySql,SqlServer,Sqlite,Oracle,PostgreSQL,Dm,Kdbndp,Oscar,MySqlConnector,Access,OpenGauss,QuestDB,HG,ClickHouse,GBase,Odbc,OceanBaseForOracle,TDengine,GaussDB,OceanBase,Tidb,Vastbase,PolarDB,Custom
DBConnection.DbType
//连接字符串,需要根据不同DB类型,用对应的字符串
DBConnection.ConnectionStrings
//向量存储的类型,支持 Postgres、Disk、Memory、Qdrant、Redis、AzureAISearch
//Postgres、Redis需要配置 ConnectionString
//Qdrant 和AzureAISearch 的 ConnectionString 使用 Endpoint|APIKey
KernelMemory.VectorDb
//本地模型路径,用于在选择llama时可以快速选择目录下的模型,以及保存下载的模型
FileDir.DirectoryPath
//登录账号密码:生产环境必须设置为高强度口令,并建议通过环境变量 Login__User / Login__Password 注入
Login
//导入异步处理的线程数,使用在线API可以高一点,本地模型建议1 否则容易内存溢出崩掉
BackgroundTaskBroker.ImportKMSTask.WorkerCount
AntSK/src/AntSK下执行:
dotnet clean
dotnet build
dotnet publish "AntSK.csproj"
再去AntSK/src/AntSK/bin/Release/net8.0/publish下
dotnet AntSK.dll
然后启动就有样式了
DB我使用的是CodeFirst模式,只要配置好数据库链接,表结构是自动创建的
git clone https://github.com/shuyu-labs/AntSK.git
cd AntSK
# 确保已安装 .NET 9 SDK
dotnet restore
src/AntSK/appsettings.json 中的数据库连接字符串cd src/AntSK
dotnet run
访问 https://localhost:5001 或 http://localhost:5000
[AntSKFunction("插件描述")]
public class MyPlugin
{
[AntSKFunction("函数描述")]
public async Task<string> MyFunction(string input)
{
// 您的业务逻辑
return "处理结果";
}
}
创建符合 OpenAPI 规范的 HTTP 接口,AntSK 会自动解析并集成。
public class CustomChatCompletion : IChatCompletion
{
public async Task<IReadOnlyList<ChatMessage>> GetChatMessageContentsAsync(
ChatHistory chatHistory,
PromptExecutionSettings? executionSettings = null,
Kernel? kernel = null,
CancellationToken cancellationToken = default)
{
// 实现您的模型调用逻辑
}
}
services.AddSingleton<IChatCompletion, CustomChatCompletion>();
1、首先需要确保你的环境已经安装了python和pip,如果使用镜像,例如p0.2.4版本已经包含了 python全套环境则无需此步骤
2、进入模型添加页面选择llamafactory
3、点击初始化,可以检查pip install 环境是否完成
4、选择一个喜欢的模型
5、点击启动,这会开始从魔塔下载模型,你可能需要有一个较为漫长的等待
6、等待模型下载完毕后,在请求地址输入 http://localhost:8000/ 这里默认是使用8000端口
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+ |
本仓库遵循 AntSK License 开源协议。
除以下附加条款外,该项目遵循Apache 2.0协议
免费商用:用户在不修改应用名称、logo、版权信息的情况下,可以免费用于商业目的。
商业授权:如果您满足以下任意条件之一,需取得商业授权:
如果您需要授权,可以联系微信:13469996907
如果您打算在商业项目中使用AntSK,您需要确保遵守以下步骤:
包含AntSK许可证的版权声明。 AntSK License 。
如果您修改了软件源代码,您需要在源代码中明确标明这些修改。
满足以上要求