我之前的文章《AI 原生的题库系统长什么样?》 分享过这个系统的设计思想,有不少朋友私信说想体验下,今天索性就把代码开源出来。
开源仓库地址:https://github.com/gygy-open/question-bank

主要功能
| 模块 | 说明 |
|---|---|
| 智能导入 | 上传 Word / Markdown / 图片,AI 自动抽取结构化题目(三步流程:上传 → 审核 → 入库) |
| 题库管理 | 多条件筛选、批量操作、知识点/标签关联、母子题结构编辑、软删除 |
| 知识点体系 | 按学科组织的树形知识点,向量化入库,支持 RAG 自动匹配 |
| AI 对话 | 多模型聊天(支持图片),内置工具调用:搜索题库、向量检索知识点、查标签、单题/批量出题并自动挂知识点,对话中直接生成题目草稿 |
| 审核工作流 | 草稿 → 待审 → 发布 → 归档,审核日志完整记录 |
| 学科 & 标签 | 学科 CRUD、标签分类管理 |
| 用户 & 权限 | 用户管理、角色控制、登录统计 |
| 操作审计 | 全局活动日志,支持分页与筛选 |
| 系统设置 | AI Provider / Model 热配置、Prompt Template 管理(超管专属) |
| 文件预览 | DOCX / Markdown 源文件在线预览 |
支持的题型:单选、多选、填空(多解)、判断、解答题,完整的富文本编辑 + LaTeX 公式渲染。
开源协议
项目采用 AGPL-3.0 协议:
- ✅ 自由使用、修改、部署
- ✅ 商业使用
- ⚠️ 通过网络提供服务时,需要公开修改后的源码
之所以选 AGPL,是希望使用者享受开源的同时,也能把改进回馈给社区。
技术选型
对技术感兴趣的同学可以看下,这里简单说下架构:
| 层 | 技术 |
|---|---|
| 前端 | Nuxt 4 (SPA) · Vue 3.5 · TypeScript · Tailwind v4 · Shadcn UI |
| 编辑器 | Tiptap + KaTeX + MathLive(所见即所得的公式编辑) |
| 后端 | Python 3.13 · FastAPI · SQLAlchemy 2.0 (全异步) · Alembic |
| 数据 | MySQL 8 · ChromaDB(向量检索) |
| AI | Google Gemini · OpenAI 兼容 API(DeepSeek、通义等均可接入) |
| 部署 | Docker Compose |
使用 Docker 快速体验
git clone https://github.com/gygy-open/question-bank.git
cd question-bank
cp .env.example .env
# 编辑 .env,设置 SECRET_KEY 和 MYSQL_PASSWORD
docker compose up -d --build
# 初始化数据 + 创建管理员
docker compose exec backend python scripts/initial_data.py
docker compose exec backend python scripts/create_superuser.py
打开 http://localhost 就能用了。
把这个项目开源出来,希望能帮到有需求的教研人员、老师,或者对 AI + 教育感兴趣的开发者。
GitHub 地址:https://github.com/gygy-open/question-bank
欢迎 Star ⭐、提 PR。