国内唯一 .NET8 Blazor 一体化私有化 AI 聚合平台,原生兼容 Ollama,内置 pgvector 轻量化 RAG,政企内网专用,无跨栈部署成本
| 项目 | 技术栈 | Ollama 原生支持 | 一体化前后端 | 内网权限 / 多租户 | Docker 一键部署 |
|---|---|---|---|---|---|
| AIChatPlatform | .NET8 | ✅完美适配 | ✅Blazor 一体 | ✅RBAC 多租户 | ✅一键部署 |
| Dify | Python | 需额外配置 | 前后端分离 | ✅完善 | ✅ |
| LibreChat | Node | ✅ | 纯前端 | ❌无账号权限 | ✅ |
基于 .NET 8、Blazor Server、PostgreSQL 与 pgvector 构建的 AI 聚合聊天平台,面向企业内部知识问答、模型统一接入、会话管理与权限管理场景。
.NET 8 · Blazor Server · Ant Design Blazor · PostgreSQL · pgvector · Apache-2.0
- AI 聊天:支持流式输出、停止生成、历史会话加载与消息持久化。
- 多模型配置:通过后台维护模型编码、供应商、接口地址、API Key、上下文参数与启用状态。
- 模型供应商:聊天能力支持 OpenAI、OpenAI Compatible、Azure OpenAI,并在 Provider 层预留 Anthropic、Gemini 扩展。
- 知识库上传:支持 PDF、DOCX、TXT、Markdown 文件上传、文本解析、切片与向量化入库。
- 向量检索基础:基于 PostgreSQL + pgvector 保存知识切片向量,为 RAG 问答提供基础能力。
- 用户与权限:基于 ASP.NET Core Identity 思路实现登录、Cookie 认证、角色与菜单权限。
- 多租户基础:核心表包含
tenant_id,默认租户可通过配置指定。 - 分层架构:Domain / Application / Infrastructure / Web 职责清晰,便于后续扩展和测试。
| 类型 | 技术 |
|---|---|
| 运行时 | .NET 8 |
| UI | Blazor Server、Razor Components、Ant Design Blazor |
| 数据访问 | Entity Framework Core 8、Npgsql |
| 数据库 | PostgreSQL、pgvector |
| 认证 | ASP.NET Core Cookie Authentication、Identity Core |
| AI 调用 | OpenAI SDK、HTTP Client、OpenAI Compatible API |
| 文件存储 | 本地文件存储,默认位于 Web 项目 App_Data 下 |
flowchart LR
U[User Browser] --> W[Web<br/>Blazor UI / Auth / Layout]
W --> A[Application<br/>Use Cases / DTO / Services]
A --> D[Domain<br/>Entities / Abstractions]
A --> I[Infrastructure<br/>EF Core / AI Provider / File Storage]
I --> DB[(PostgreSQL + pgvector)]
I --> L[Local Storage]
I --> M[AI & Embedding Providers]
| 项目 | 说明 |
|---|---|
YinianAIChatPlatform.Web |
Blazor Server 前端、页面、布局、登录登出、交互服务注册。 |
YinianAIChatPlatform.Application |
应用服务、聊天流程、知识库上传、检索、DTO 与接口定义。 |
YinianAIChatPlatform.Domain |
领域实体、通用基类、抽象接口、系统/聊天/知识库/AI 模型定义。 |
YinianAIChatPlatform.Infrastructure |
EF Core、PostgreSQL 配置、仓储、AI Provider、Embedding Provider、文件存储、文档解析。 |
YinianAIChatPlatform.Shared |
共享项目,预留跨层公共类型。 |
.
├─ Dockerfile
├─ docker-compose.yml
├─ README.md
├─ LICENSE
├─ scripts
│ ├─ docker-build.ps1
│ └─ docker-build.sh
└─ Src
├─ YinianAIChatPlatform.slnx
├─ YinianAIChatPlatform.Web
│ ├─ Components
│ ├─ Services
│ └─ wwwroot
├─ YinianAIChatPlatform.Application
├─ YinianAIChatPlatform.Domain
├─ YinianAIChatPlatform.Infrastructure
│ ├─ AI
│ ├─ Configurations
│ ├─ Embedding
│ ├─ Persistence
│ ├─ Repositories
│ └─ Sql
└─ YinianAIChatPlatform.Shared
环境要求:
- Docker 24+ 与 Docker Compose v2
- 可选:宿主机安装 Ollama,并提前执行
ollama pull bge-m3
一键启动 Web 与 PostgreSQL + pgvector:
docker compose up -d --build启动完成后访问:
http://localhost:5251
默认登录账号:
账号:admin
密码:111111
Docker Compose 会自动创建数据库 yinian_aichat,并在首次初始化 PostgreSQL 数据卷时执行:
Src/YinianAIChatPlatform.Infrastructure/Sql/InitDatabase.sql
该脚本会创建业务表、启用 pgvector,并写入默认租户、管理员角色与管理员用户。若数据库卷已经存在,PostgreSQL 官方镜像不会重复执行 /docker-entrypoint-initdb.d 下的初始化脚本;开发环境需要重建数据库时可执行:
docker compose down -v
docker compose up -d --build查看日志与停止服务:
docker compose logs -f web
docker compose down默认 Compose 配置说明:
| 项 | 默认值 |
|---|---|
| Web 地址 | http://localhost:5251 |
| 数据库地址 | 宿主机 localhost:5432,容器内 db:5432 |
| 数据库 | yinian_aichat |
| 数据库用户 | postgres |
| 数据库密码 | yinian_postgres_pwd |
| 文件与密钥卷 | yinian_app_data |
| PostgreSQL 数据卷 | yinian_postgres_data |
| Ollama 地址 | http://host.docker.internal:11434 |
如果宿主机 5432 或 5251 端口已被占用,可修改 docker-compose.yml 中的 ports 映射。生产环境部署前请修改数据库密码,并通过环境变量、Secret 或平台配置注入连接串和模型 API Key。
Windows PowerShell:
.\scripts\docker-build.ps1 -ImageName yinian/aichat-platform -Tag latestLinux / macOS:
IMAGE_NAME=yinian/aichat-platform TAG=latest bash ./scripts/docker-build.sh也可以直接使用 Docker CLI:
docker build -t yinian/aichat-platform:latest .- .NET SDK 8.0 或更高版本
- PostgreSQL 15+,并启用
pgvector - 可选:Ollama,用于本地 Embedding,例如
bge-m3 - 可选:OpenAI 或兼容 OpenAI API 的模型服务
git clone https://github.com/your-org/AIChatPlatform.git
cd AIChatPlatform创建 PostgreSQL 数据库,并启用 pgvector:
CREATE DATABASE yinian_aichat;
\c yinian_aichat;
CREATE EXTENSION IF NOT EXISTS vector;推荐使用环境变量覆盖本地配置,避免把真实密码提交到仓库:
$env:ConnectionStrings__DefaultConnection="Host=localhost;Port=5432;Database=yinian_aichat;Username=postgres;Password=your_password"
$env:EmbeddingProvider="Ollama"
$env:Ollama__Endpoint="http://localhost:11434"
$env:Ollama__EmbeddingModel="bge-m3"当前仓库已包含完整初始化 SQL:
Src/YinianAIChatPlatform.Infrastructure/Sql/InitDatabase.sql
新数据库可直接执行该脚本完成建表和默认管理员初始化。已有数据库可执行 EF 迁移:
dotnet ef database update \
--project Src/YinianAIChatPlatform.Infrastructure/YinianAIChatPlatform.Infrastructure.csproj \
--startup-project Src/YinianAIChatPlatform.Web/YinianAIChatPlatform.Web.csproj权限与管理员种子数据参考:
Src/YinianAIChatPlatform.Infrastructure/Sql/SeedSysRoleAndUserRole.sql
默认管理员账号为 admin,密码为 111111。首次部署到公网或共享环境后请立即修改默认密码。
默认使用 Ollama:
ollama pull bge-m3
ollama serve如需使用 OpenAI Embedding,请在数据库的模型配置中新增启用的 EMBEDDING 模型,并将 EmbeddingProvider 设置为 OpenAI。
DashScope与SiliconFlowProvider 目前为预留实现,调用时会抛出未实现异常。
dotnet restore Src/YinianAIChatPlatform.slnx
dotnet build Src/YinianAIChatPlatform.slnx
dotnet run --project Src/YinianAIChatPlatform.Web/YinianAIChatPlatform.Web.csproj默认启动地址:
http://localhost:5251
登录后台后进入“模型配置”,新增聊天模型:
| 字段 | 说明 |
|---|---|
| 模型编码 | 业务侧选择模型时使用,例如 gpt-4o-mini。 |
| 模型名称 | UI 展示名称。 |
| 供应商 | OpenAI、AzureOpenAI、OpenAICompatible。 |
| API 地址 | 可为空;为空时使用默认 OpenAI 地址。兼容服务可填写自有 /v1 地址。 |
| API Key | 模型服务密钥。 |
| API 模型名称 | 实际请求模型名,不填时默认使用模型名称。 |
| 模型类型 | CHAT 或 EMBEDDING。 |
| MaxToken / Temperature | 模型调用参数。 |
知识库上传页面支持 .pdf、.docx、.txt、.md、.markdown 文件。处理流程:
- 文件保存到服务器本地目录。
- 写入
sys_file。 - 解析文档文本。
- 按文本长度切片。
- 调用 Embedding Provider 生成向量。
- 保存
know_document与know_chunk。
主要配置项:
{
"ConnectionStrings": {
"DefaultConnection": "Host=localhost;Port=5432;Database=yinian_aichat;Username=postgres;Password=your_password"
},
"EmbeddingProvider": "Ollama",
"Ollama": {
"Endpoint": "http://localhost:11434",
"EmbeddingModel": "bge-m3"
},
"Authentication": {
"DefaultTenantId": 1
}
}生产环境建议通过环境变量、容器 Secret、云平台密钥管理或用户机密注入,不要提交真实连接串和 API Key。
dotnet restore Src/YinianAIChatPlatform.slnx
dotnet build Src/YinianAIChatPlatform.slnx
dotnet run --project Src/YinianAIChatPlatform.Web/YinianAIChatPlatform.Web.csprojDocker 构建:
docker compose build
docker compose up -d本次整理时已验证:
dotnet build Src/YinianAIChatPlatform.slnx
0 Warning(s), 0 Error(s)
- RAG 问答链路增强:检索召回、上下文压缩、引用来源展示。
- 模型 Provider 插件化,完善 DashScope、SiliconFlow 等实现。
- 审计日志页面与系统设置页面完善。
- 上传文件的对象存储支持。
- 自动化测试与 CI 工作流。
欢迎提交 Issue 和 Pull Request。建议流程:
- Fork 本仓库并创建功能分支。
- 保持改动聚焦,提交前执行
dotnet build。 - 对涉及业务逻辑的改动补充测试或说明验证方式。
- PR 描述中写清楚变更内容、影响范围和回滚方式。
请勿在 Issue、PR、提交记录或截图中暴露数据库连接串、API Key、生产环境地址、用户隐私数据。若误提交敏感信息,应立即轮换密钥,并从 Git 历史中清理。
本项目基于 Apache License 2.0 开源。 工作台版本提醒有同等法律效用,请认真阅读并完全遵守。 请勿将工作台版本用于商业用途。



