当前位置: 首页 > news >正文

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 当前提供以下主要能力:

  1. 多组织、用户和角色管理;
  2. 大语言模型、向量模型、视觉模型等统一配置;
  3. 企业知识库、文档解析和内容分块;
  4. 问题/意图层与内容层的分层向量检索;
  5. 检索结果按知识聚合、去重和融合排序;
  6. 单条知识或整个知识库的一键索引重建;
  7. Agent、组件、自定义工具和工作流编排;
  8. 对话体验、会话记录、调用日志、积分和操作审计;
  9. API Key、客户端和开放 API 管理;
  10. 可选的微信小程序客户端。

它比较适合以下场景:

  • 企业内部制度、产品资料和操作手册问答;
  • 售前、售后和智能客服知识助手;
  • 面向多个部门或客户的多租户 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.gitcdaizhishikuagentgongzuoliup

2. 创建环境配置

cp.env.example .env

修改.env,至少替换以下配置:

MYSQL_PASSWORD=请替换为随机密码 MYSQL_ROOT_PASSWORD=请替换为另一个随机密码 SECRET_KEY=请替换为至少32位的随机字符串

不要把修改后的.env、模型 API Key、数据库备份或业务日志提交到 Git。

3. 启动服务

dockercompose up-d--builddockercomposeps

4. 创建第一个平台管理员

dockercomposeexecbackend python scripts/create_host.py

5. 访问系统

  • 管理端:http://localhost:8101
  • API 文档:http://localhost:8102/docs
  • 健康检查:http://localhost:8102/api/health

八、首次使用建议

登录系统后,可以按照下面的顺序配置:

  1. 添加大语言模型;
  2. 添加向量模型;
  3. 在全局配置中填写 DashVector;
  4. 按需配置 OSS;
  5. 创建组织并分配管理员;
  6. 为组织绑定大语言模型和向量模型;
  7. 创建知识库并录入知识;
  8. 生成或重建知识索引;
  9. 在知识库体验中心测试典型问题;
  10. 创建 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。

http://www.jsqmd.com/news/1291104/

相关文章:

  • Python-Flask职位数据分析系统开发实战
  • 物理学十大经典悖论:从芝诺到薛定谔的猫的认知突破
  • 2026 年当下,中原诚信的三轮打药机供货商哪家强,过去两天喷完三亩,现在它能省一半时间?这玩意儿到底是什么宝贝? - 行业推荐【认证官】
  • 中药-治疗肾病方子
  • 单片机计算机毕设之基于嵌入式技术的流量阈值自定义设置装置设计 ,基于单片机的工业流量智能管控终端开发(010401)
  • 技术方案的编写指南——从需求到设计文档的结构化表达方法
  • STM32 SPI从机模式实战:HAL库配置、中断与DMA驱动详解
  • 终极指南:VSCode Mermaid Preview高效图表可视化解决方案
  • 从MySQL到Redis:隔离级别、事务与持久化的全面对比
  • 游戏开发中文字符渲染与得分计算:UTF-8编码处理实践
  • UE5蓝图进阶:变量与函数构建模块化游戏逻辑
  • 答辩PPT不用硬熬✨被OKBIYE这些高阶学术功能惊艳到了
  • GESP2026年3月认证C++七级( 第一部分选择题(1-7))精讲
  • 文件夹批量重命名:从系统工具到Python脚本的完整指南
  • 2026 AI 编程工具横评:Copilot、Cursor、Claude Code,你的工作流该选谁
  • 根轨迹分析:从原理到实践,掌握线性系统动态性能的图形化工具
  • 华为设备Bootloader解锁终极指南:PotatoNV快速安全解锁麒麟芯片
  • CAN FD与经典CAN 2.0帧结构深度对比与工程实践指南
  • STM32串口在线动态配置:HAL库实战与避坑指南
  • 当 AI 遇到 Kubernetes:在生产环境部署与管理 AI 服务的终极指南
  • Unity3D开源项目精选:从架构到渲染,十大工具提升开发效率
  • 2026年度优选天津东丽区宴会厅推荐指南:深度剖析津海阁御尚礼宴的宴席服务逻辑 - 装修教育财税推荐2026
  • Waves Ultimate 17一键安装完整版安装教程Waves 17最新版VR/R2R下载专用混音插件Win/Mac系统Waves 17/16/15/14视频安装教程一键安装完整版混音插件
  • 终于不用手动调格式[特殊字符]OKBIYE排版真的太懂毕业生了
  • Kimi K3开放权重了:2.8万亿参数意味着什么?普通电脑能跑吗?小白一文看懂
  • C语言杨辉三角:从二维数组到组合数公式的三种高效解法
  • FreeRTOS下FATFS多任务安全访问:互斥锁封装实现指南
  • Hermes 协作上手记:模型跑得通,流程卡在哪?
  • 基于S7-300 PLC与组态王的工业恒压供水系统设计
  • 思源宋体TTF:为什么7个字重能彻底改变你的中文设计体验?