R可商用的企业知识库RAG + Agent + 工作流平台
AI Server 开源:一套可商用的企业知识库 + Agent + 工作流平台
文章标签:AI 知识库、RAG、Agent、工作流、FastAPI、React、开源项目
开源协议:MIT License,可用于个人项目、企业内部系统和商业化二次开发
如果你正在搭建企业 AI 应用,通常很快就会遇到这些问题:
- 企业知识分散在文档和业务系统中,普通大模型无法直接使用;
- 只向量化知识标题时,正文中的信息很难被召回;
- 把标题和全文拼接后再向量化,又容易让用户意图被长正文稀释;
- 同一条知识可能被多个索引重复召回,挤占有限的 Top-K;
- 知识编辑或删除后,数据库与向量库容易出现脏数据;
- 知识问答做好后,还需要 Agent、工具调用、工作流、权限和审计能力。
为解决这些问题,我将AI Server以 MIT License 开源。它不是单一的聊天页面,而是一套面向组织的 AI 应用管理平台,覆盖企业知识库、增强检索、Agent、工作流、模型配置、开放 API、用户权限和调用审计。
项目地址
项目同时托管在 GitHub 和 Gitee,两个仓库保持同步,可以根据网络环境任选一个访问:
- GitHub:https://github.com/DalaoT/ai-server
- Gitee:https://gitee.com/sugar_box/aizhishikuagentgongzuoliup
如果项目对你有帮助,欢迎 Star、提交 Issue 或参与 Pull Request。
一、项目能做什么
AI Server 当前提供以下主要能力:
- 多组织、用户和角色管理;
- 大语言模型、向量模型、视觉模型等统一配置;
- 企业知识库、文档解析和内容分块;
- 问题/意图层与内容层的分层向量检索;
- 检索结果按知识聚合、去重和融合排序;
- 单条知识或整个知识库的一键索引重建;
- Agent、组件、自定义工具和工作流编排;
- 对话体验、会话记录、调用日志、积分和操作审计;
- API Key、客户端和开放 API 管理;
- 可选的微信小程序客户端。
它比较适合以下场景:
- 企业内部制度、产品资料和操作手册问答;
- 售前、售后和智能客服知识助手;
- 面向多个部门或客户的多租户 AI 平台;
- 将知识库、模型和业务工具组合成业务 Agent;
- 用可视化工作流编排重复性的 AI 处理流程;
- 在现有业务系统中通过 API 接入知识问答或 Agent。
二、产品界面
1. 知识库管理
2. 知识内容管理
3. 知识库体验中心
4. 企业用户管理
以上界面均使用演示数据。
三、知识库检索是怎样增强的
1. 为什么不只向量化知识名称
只向量化知识名称或主问题,优点是意图明确、向量短,但用户询问正文中的某个细节时,如果表达方式没有出现在标题中,就很难召回对应知识。
例如一条知识的标题是“退款管理规定”,正文中写了“到账时间通常为 3—5 个工作日”。用户直接询问“钱多久能退回来”,只依赖标题向量就可能无法命中正文中的时间信息。
2. 为什么不直接把名称和全文拼接
将标题、问题和长正文全部拼成一个文本再生成单个向量,虽然实现简单,但也存在明显问题:
- 正文越长,标题表达的核心意图越容易被稀释;
- 一个向量同时承担“意图匹配”和“细节匹配”,难以分别调节;
- 文档修改后只能整体重算;
- 超长内容还会受到模型输入长度和截断策略影响。
3. 多表示、双通道召回
AI Server 采用“多表示 + 晚融合”的方式。一条知识可以建立两类向量表示:
question:知识名称、主问题和扩展问法,用于匹配用户的明确意图;content:知识正文,用于召回标题中没有出现的事实和细节。
查询流程可以简化为:
┌─ 问题/意图层向量 ─ 并行召回 ─┐ 用户问题 ─ 查询向量 ─┤ ├─ 按 knowledge_id 聚合去重 └─ 正文内容层向量 ─ 并行召回 ─┘ ↓ 加权融合与统一排序 ↓ Top-K 知识上下文问题层可以给予更高的意图匹配权重,内容层负责补充正文细节。两路结果不是简单拼接,而是按照稳定的knowledge_id聚合,避免同一条知识因为命中多个扩展问法而反复占用 Top-K。
这种方式兼顾了两类召回目标:
- 用户问题与知识名称接近时,问题层可以快速、准确地命中;
- 用户直接询问正文细节时,内容层仍有机会召回正确知识;
- 同一知识多次命中时会被合并,不会重复塞入大模型上下文;
- 后续可以独立增加关键词检索、BM25 或重排模型,而不必推翻现有结构。
4. 编辑、删除与索引一致性
数据库与向量数据库通常不支持跨系统事务。因此,真正困难的并不只是“生成向量”,还包括编辑、删除、失败恢复和重建。
AI Server 的处理思路包括:
- 每个向量文档保存稳定的知识 ID、来源类型和向量文档 ID;
- 一条知识可以对应一个内容向量和多个问题向量;
- 编辑知识时重建新索引,并清理旧向量;
- 删除知识时同时删除关联问题索引和向量文档;
- 显式记录索引状态,外部调用失败后仍然可以重新修复;
- 支持重建单条知识,也支持一键重建整个知识库。
整库重建适用于:
- 从旧版“只向量化名称”升级到分层索引;
- 更换向量模型或向量维度;
- 更换 DashVector 集群;
- 批量导入或修改知识;
- 数据库与向量库状态可能不一致。
四、Agent 与工作流
知识检索解决了“找到正确资料”的问题,但企业应用往往还需要根据资料执行具体任务。
AI Server 提供 Agent、组件、自定义工具和工作流能力,可以将以下内容组合起来:
- Agent 提示词与角色设定;
- 企业知识库;
- 大语言模型和其他 AI 模型;
- 内部接口或第三方工具;
- 可复用的业务组件;
- 多步骤工作流。
例如,可以构建:
- 查询产品知识后生成售前方案的 Agent;
- 读取企业制度并回答员工问题的内部助手;
- 根据用户输入调用业务接口的客服 Agent;
- 将分类、知识检索、模型生成和结果处理串联起来的工作流。
平台同时保留会话、模型调用、积分和操作日志,便于定位模型错误、工具超时、权限问题和实际使用成本。
五、企业级管理能力
除了知识问答与 Agent,项目还提供了面向组织管理的基础能力。
多组织与角色
系统内置以下角色层级:
| 角色 | 典型用途 |
|---|---|
host | 平台级配置、组织和全局资源管理 |
admin | 组织管理 |
operation | 日常运营和知识维护 |
user | 使用已授权的对话与应用 |
不同组织可以绑定自己的模型、知识库和资源配置,适合企业内部多部门管理,也方便二次开发成面向客户的多租户平台。
模型与外部服务
管理端可以配置不同用途的 AI 能力:
- 大语言模型:对话、Agent 和文本生成;
- 向量模型:知识入库与查询向量化;
- 多模态或视觉模型:图片和文档内容处理;
- DashVector:保存和查询知识向量;
- OSS:可选的上传文件对象存储。
API 与审计
系统支持 API Key、客户端配置和开放 API,并提供聊天日志、积分记录、操作日志、拦截词和拦截日志。
生产使用时,模型 Key、数据库密码和管理密钥应只保存在服务端。不同应用应使用独立凭据,便于限权、审计、撤销和轮换。
六、技术栈与系统结构
项目采用前后端分离架构:
| 模块 | 技术 |
|---|---|
| 后端 | Python、FastAPI、SQLAlchemy |
| 管理端 | React、Umi、TypeScript |
| 业务数据库 | MySQL,开发环境可使用 SQLite |
| 缓存与临时状态 | Redis |
| 向量数据库 | 阿里云 DashVector |
| 文件存储 | 阿里云 OSS,可选 |
| 部署 | Docker、Docker Compose、Nginx |
| 可选客户端 | 微信小程序 |
整体调用关系如下:
浏览器 / 小程序 / 第三方系统 │ ▼ Nginx + Umi 管理端 │ ▼ FastAPI 后端 ┌──────┼────────┐ ▼ ▼ ▼ MySQL/SQLite Redis AI 模型 │ DashVector / OSS本地开发可以使用 SQLite;完整的知识库向量检索需要配置向量模型和 DashVector。生产环境建议使用 MySQL、Redis、HTTPS 和反向代理。
七、使用 Docker Compose 快速部署
环境要求
- Docker 24+
- Docker Compose v2
- 可用的大语言模型和向量模型
- 阿里云 DashVector
- OSS 为可选项
1. 克隆项目
GitHub:
gitclone https://github.com/DalaoT/ai-server.gitcdai-server或者使用 Gitee:
gitclone https://gitee.com/sugar_box/aizhishikuagentgongzuoliup.gitcdaizhishikuagentgongzuoliup2. 创建环境配置
cp.env.example .env修改.env,至少替换以下配置:
MYSQL_PASSWORD=请替换为随机密码 MYSQL_ROOT_PASSWORD=请替换为另一个随机密码 SECRET_KEY=请替换为至少32位的随机字符串不要把修改后的.env、模型 API Key、数据库备份或业务日志提交到 Git。
3. 启动服务
dockercompose up-d--builddockercomposeps4. 创建第一个平台管理员
dockercomposeexecbackend python scripts/create_host.py5. 访问系统
- 管理端:http://localhost:8101
- API 文档:http://localhost:8102/docs
- 健康检查:http://localhost:8102/api/health
八、首次使用建议
登录系统后,可以按照下面的顺序配置:
- 添加大语言模型;
- 添加向量模型;
- 在全局配置中填写 DashVector;
- 按需配置 OSS;
- 创建组织并分配管理员;
- 为组织绑定大语言模型和向量模型;
- 创建知识库并录入知识;
- 生成或重建知识索引;
- 在知识库体验中心测试典型问题;
- 创建 Agent、工具和工作流。
知识库效果不理想时,建议先检查召回结果,不要直接修改 Agent 提示词。可以重点检查:
- 知识标题是否表达了真实的用户意图;
- 正文内容是否过长、是否需要按主题分块;
- 扩展问法是否覆盖常见表达;
- 向量模型与 DashVector 是否配置正确;
- 更换模型后是否执行了整库重建;
- 同一知识的重复召回是否已经正确聚合。
九、MIT 开源与商业使用
AI Server 使用 MIT License。你可以:
- 用于个人项目或企业内部系统;
- 修改源码并进行二次开发;
- 集成到商业产品;
- 分发、再许可或销售修改后的软件。
使用和分发时,需要保留 MIT License 中的版权声明和许可声明。
需要注意的是,MIT License 只覆盖本项目源码,不代表外部服务免费。大模型、向量模型、DashVector、OSS 以及其他第三方 API 可能产生费用,也需要遵守各自的服务条款和许可证。
十、当前限制与后续方向
为了让使用者能够合理评估项目,下面是目前需要注意的限制:
- 当前向量数据库实现以阿里云 DashVector 为主;
- Docker Compose 示例主要面向单机部署;
- 大规模知识库的索引重建后续可以进一步改造成异步任务;
- 高可用、集中监控、跨区域备份需要结合实际生产环境补充;
- 存量数据库升级前应先备份,并审核和验证迁移脚本。
后续可以继续扩展:
- 抽象统一的
VectorStore接口,支持 Qdrant、pgvector、Milvus; - 对超长正文使用块级向量,并继续按知识聚合;
- 加入关键词/BM25 通道,形成混合检索;
- 增加重排模型,提高最终 Top-K 精度;
- 建立离线测试集,评估 Recall@K、MRR 和最终回答正确率;
- 将索引任务改造成支持进度、重试和死信队列的后台任务。
结语
企业知识库并不只是“把文档向量化”,还需要处理召回精度、重复结果、数据一致性、权限、审计、模型配置和实际业务执行。
AI Server 希望把这些常见能力整理成一套可以直接部署、持续扩展的开源基础平台。如果你正在开发企业知识库、RAG、Agent 或工作流应用,可以从这个项目开始体验,也欢迎一起完善。
- GitHub:https://github.com/DalaoT/ai-server
- Gitee:https://gitee.com/sugar_box/aizhishikuagentgongzuoliup
如果觉得项目有价值,欢迎 Star、Fork、提交 Issue 或 Pull Request。
