AntSK
基于 .NET 9 + Semantic Kernel 的企业级 AI 知识库与智能体平台,支持本地
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
基于 .NET 9 + Semantic Kernel 的企业级 AI 知识库与智能体平台,支持本地
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
2023 年,随着 GPT 的爆发式普及,无数企业开始探索将大语言模型接入自身业务。然而,对于已经深度使用 .NET 技术栈的团队而言,市面上大多数 AI 应用框架都是 Python 生态——LangChain、Hugging Face Transformers、LlamaIndex…… .NET 开发者面临一个尴尬的局面:要么重写整个技术底座,要么将 AI 能力作为独立微服务外挂,前者成本高昂,后者架构割裂。
AntSK(AIDotNet Semantic Kernel)正是为解决这一痛点而生。项目由国内 .NET 社区(AIDotNet)主导开发,目标很明确:让 .NET 开发者无需离开熟悉的技术栈,就能完整地构建 AI 知识库和智能体应用。从 2023 年底开源至今,已积累超过 1300 颗 GitHub Stars、213 个 Fork、4580+ 次项目观测关注,印证了市场对这类工具的强烈需求。
与市面上多数另起炉灶的 AI 应用框架不同,AntSK 选择站在微软的肩膀上——深度集成 Semantic Kernel(微软的 AI 编排框架)和 Kernel Memory(微软的 RAG 知识库框架),直接继承微软在 AI 领域的工程化成果。这意味着 .NET 开发者可以用自己熟悉的 C# / Blazor,调用 OpenAI、Azure OpenAI、讯飞星火、阿里通义千问,以及 Ollama、LlamaFactory 等本地模型,实现真正统一的技术架构。
AntSK 的技术核心可以概括为双核驱动架构:上层以 Semantic Kernel 作为 AI 能力的统一编排层,下层以 Kernel Memory 作为知识检索与存储层,两者协同实现 RAG(检索增强生成)工作流。
Semantic Kernel(语义内核) 是微软开源的轻量级 AI 编排框架,类似于 LangChain 的 .NET 版本。它提供了一套标准化的接口来连接各类 LLM(大语言模型),同时内置了 Planner(规划器)和 Plugin(插件)机制。AntSK 利用 Semantic Kernel 的 KernelFunction 定义函数调用,让 AI 能够动态调用外部工具——比如查询数据库、调用 API、搜索知识库——而不只是依赖模型自身的知识储备。在 AntSK 的插件系统中,这一能力被进一步扩展:开发者可以同时注册 .NET DLL 插件、HTTP API 插件和 Semantic Kernel 原生函数插件,三种插件类型并存于同一对话流程中,由 Semantic Kernel 统一调度。
Kernel Memory(内存内核) 是微软配套的 RAG 框架,专注于知识存储和检索。它支持将文档(Word、PDF、Excel、TXT、Markdown、JSON、PPT)切分、向量化后存入多种向量数据库(PostgreSQL/pgvector、Qdrant、Redis、Disk、Memory),并在检索时通过 BGE embedding 向量模型和 BGE rerank 重排模型提升相关性排序质量。整个知识库的导入、切片、检索流程由 Kernel Memory 自动管理,AntSK 则在此基础上提供了 Web UI 的可视化操作界面。
AntSK 采用领域驱动设计(DDD)分层架构,将项目拆分为以下核心模块:
| 模块 | 职责 |
|---|---|
| AntSK | Blazor Server 主应用,承载 UI 和 Web API |
| AntSK.Domain | 领域层:业务模型、仓储接口、领域服务 |
| AntSK.LLM | AI 模型集成层:讯飞星火、StableDiffusion、Mock |
| AntSK.LLamaFactory | LlamaFactory 集成,支持 100+ 开源模型微调与推理 |
| AntSK.OCR | PaddleOCR 文字识别 |
| AntSK.BackgroundTask | 后台任务:知识库导入队列 |
| AntSK.AppHost | .NET Aspire 应用主机(仪表盘监控) |
主应用 AntSK 本身是一个 Blazor Server 项目,运行在 ASP.NET Core 之上,暴露 Swagger API 文档,并通过 Ant Design Blazor(AntDesign ProLayout)提供企业级 UI。依赖注入贯穿全项目,通过 AddServicesFromAssemblies 反射批量注册服务,配合 AutoMapper 处理对象映射,体现了 .NET 生态典型的工程实践。
AntSK 使用 SqlSugar 作为 ORM,支持 PostgreSQL、MySQL、SQLite、SQL Server、Oracle 等多种数据库,并通过配置文件热切换,这意味着它可以很好地适配国产信创环境(达梦、人大金仓等)。对于向量存储,PostgreSQL + pgvector 是官方推荐的组合,一库搞定关系数据和向量数据,运维成本最低。
云端模型方面,AntSK 通过 Semantic Kernel 内置的 ChatCompletionService 接口,接入了 OpenAI GPT 系列、Azure OpenAI、讯飞星火(SparkDesk)、阿里云通义千问等主流商业模型。其中讯飞星火和阿里云积灵是国内企业最常用的国产大模型,AntSK 为此提供了独立的适配器(SparkDesk 目录),而非简单套用 OpenAI 兼容接口,确保了对话参数和流式输出的正确处理。
本地模型方面,AntSK 支持两条路线:
Ollama:通过 AntSK.LLM/OllamaModelList.txt 管理支持的模型列表,支持数千种 Ollama Hub 上的开源模型(如 Llama 3、Qwen、Mistral),配置简单,适合快速尝鲜。
LlamaFactory:通过 AntSK.LLamaFactory 模块深度集成,内置 modelList.json(含 100+ 模型),支持主流开源模型(Llama、Falcon、Qwen、ChatGLM、Mistral 等),既可以做推理,也可以做 LoRA 微调。依赖 streamlit、transformers、peft、bitsandbytes 等标准 Python ML 栈,并通过 Dockerfile-Py 提供 Python 环境镜像。
AntSK 提供了完整的容器化部署方案。Dockerfile 采用 .NET 9 多阶段构建:build stage 用 mcr.microsoft.com/dotnet/sdk:9.0 编译 + 发布,runtime stage 用 mcr.microsoft.com/dotnet/aspnet:9.0 运行最终产物,最终镜像仅约 200-300MB(不含模型文件)。运行时还自动配置了 Asia/Shanghai 时区,安装 libpugixml-dev 和 libtbb-dev 系统依赖。
docker-compose.yml 提供两个版本:完整版包含 Aspire Dashboard、PostgreSQL 数据库和 AntSK 主服务;简单版(docker-compose.simple.yml)仅运行 AntSK 主服务,适合已有外部数据库的环境。容器镜像托管在阿里云容器镜像服务,国内下载速度快。
然而,AntSK 的真正硬门槛是GPU。如果只是用云端 API 模型,任何机器都能跑;但要运行本地模型(LlamaFactory/Ollama),则必须配备 NVIDIA 显卡 + CUDA 环境,推荐 RTX 3090/4090 或更高,显存 8GB 以上。AntSK 官方演示站(demo.antsk.cn)甚至专门禁用了本地模型功能,以免低配云服务器过载。
GPTs 风格应用构建:AntSK 提供了类似 OpenAI GPTs 的可视化应用配置界面,可以将知识库、对话模板、插件组合为一个「应用」,发布给不同用户使用。每个应用可以绑定不同的 LLM、向量模型和插件组合,实现多租户场景下的差异化 AI 服务。
三级插件生态:AntSK 的插件系统分为三个层次:.NET 原生 DLL 插件(通过 plugins/Functions 目录注册)、API 插件(通过 HTTP 调用外部服务)和 Semantic Kernel 函数插件(通过 SK 原生机制注册)。这种分层设计兼顾了灵活性与性能:.NET 插件执行效率最高,API 插件适合接入已有的 HTTP 服务。
Stable Diffusion 文生图:通过 AntSK.LLM/StableDiffusion 模块,AntSK 支持在对话中调用本地部署的 Stable Diffusion 模型进行图片生成,适合电商产品描述、营销文案配图等图文混合生成场景。
OCR 文字识别:AntSK.OCR 模块集成了 PaddleOCR,用于从上传的图片中提取文字,解决历史纸质文档、扫描件的数字化问题。
.NET Aspire 可观测性:通过 AntSK.AppHost 模块集成了 .NET Aspire Dashboard,提供分布式追踪、指标监控、日志聚合能力,为整个 AI 应用栈提供专业级的可观测性支持。
文档完整性:README 虽然详细,但「源码深度解读」链接指向 DeepWiki(外部平台),站内缺乏架构设计文档(ADR),对企业级项目引入存在一定隐患。
WebSocket 连接限制:Blazor Server 基于 SignalR 长连接,在弱网络或高延迟环境下体验较差。若目标是移动端或需要穿透复杂防火墙的场景,需要考虑 Blazor WebAssembly 或纯 API 模式。
维护活跃度:Issues 数为 0(可能只开了 PR 未开 Issue),社区反馈渠道不够透明。对于企业用户来说,一个活跃的 Issue 追踪能提供重要的风险参考。
Python 环境复杂性:LlamaFactory 集成需要 Python 3.8+、transformers、torch 等依赖,打包成 Docker 镜像后体积较大(p0.6.4 镜像)。如果不需要本地模型,建议使用轻量版的 v0.6.4 而非 p0.6.4。
AntSK 的出现,本质上填补了 .NET 生态在 AI 应用开发领域的空白。微软的 Semantic Kernel 和 Kernel Memory 虽然已经开源,但文档和示例主要面向 Python 开发者,实际落地门槛不低。AntSK 以「Docker 一键部署 + Blazor 可视化界面 + 中文文档」的组合,降低了 .NET 团队进入 AI 领域的初始成本。
从行业趋势看,AI 应用正在从大模型 API 调用向领域知识 + 大模型的 RAG 范式演进,AntSK 的知识库 + 智能体架构恰好契合这一方向。随着 .NET 9 的成熟和 Semantic Kernel 的持续迭代,AntSK 这类基础设施项目的重要性会进一步凸显。