Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

一念 AI 智能聊天平台

国内唯一 .NET8 Blazor 一体化私有化 AI 聚合平台,原生兼容 Ollama,内置 pgvector 轻量化 RAG,政企内网专用,无跨栈部署成本

项目 技术栈 Ollama 原生支持 一体化前后端 内网权限 / 多租户 Docker 一键部署
AIChatPlatform .NET8 ✅完美适配 ✅Blazor 一体 ✅RBAC 多租户 ✅一键部署
Dify Python 需额外配置 前后端分离 ✅完善
LibreChat Node 纯前端 ❌无账号权限

一念 AI 智能聊天平台 Logo

基于 .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]
Loading

分层说明

项目 说明
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 一键部署

环境要求:

  • 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。

Docker 镜像构建脚本

Windows PowerShell:

.\scripts\docker-build.ps1 -ImageName yinian/aichat-platform -Tag latest

Linux / 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 的模型服务

1. 克隆项目

git clone https://github.com/your-org/AIChatPlatform.git
cd AIChatPlatform

2. 配置数据库

创建 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。首次部署到公网或共享环境后请立即修改默认密码。

3. 配置 Embedding

默认使用 Ollama:

ollama pull bge-m3
ollama serve

如需使用 OpenAI Embedding,请在数据库的模型配置中新增启用的 EMBEDDING 模型,并将 EmbeddingProvider 设置为 OpenAI

DashScopeSiliconFlow Provider 目前为预留实现,调用时会抛出未实现异常。

4. 运行项目

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 展示名称。
供应商 OpenAIAzureOpenAIOpenAICompatible
API 地址 可为空;为空时使用默认 OpenAI 地址。兼容服务可填写自有 /v1 地址。
API Key 模型服务密钥。
API 模型名称 实际请求模型名,不填时默认使用模型名称。
模型类型 CHATEMBEDDING
MaxToken / Temperature 模型调用参数。

知识库流程

知识库上传页面支持 .pdf.docx.txt.md.markdown 文件。处理流程:

  1. 文件保存到服务器本地目录。
  2. 写入 sys_file
  3. 解析文档文本。
  4. 按文本长度切片。
  5. 调用 Embedding Provider 生成向量。
  6. 保存 know_documentknow_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.csproj

Docker 构建:

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。建议流程:

  1. Fork 本仓库并创建功能分支。
  2. 保持改动聚焦,提交前执行 dotnet build
  3. 对涉及业务逻辑的改动补充测试或说明验证方式。
  4. PR 描述中写清楚变更内容、影响范围和回滚方式。

安全说明

请勿在 Issue、PR、提交记录或截图中暴露数据库连接串、API Key、生产环境地址、用户隐私数据。若误提交敏感信息,应立即轮换密钥,并从 Git 历史中清理。

许可证

本项目基于 Apache License 2.0 开源。 工作台版本提醒有同等法律效用,请认真阅读并完全遵守。 请勿将工作台版本用于商业用途。

About

企业内网私有化 AI 助手 | .NET + Ollama 本地部署 | 支持 RAG 知识库检索增强 | 局域网多人协同聊天 | 无需联网,数据安全私有化

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages