一个可直接运行和教学演示的校园知识库问答系统,覆盖用户认证、知识库 管理、文档切块、向量检索、引用式问答、历史记录和用户权限。
本仓库为精简演示版:
- 只保留
knowledge-base/demo/下的 2 份示例文档,避免仓库过大。 - 预构建好的 Demo 向量库通过 GitHub Release Asset 分发,clone 后下载即可运行,无需再次消耗 Embedding Token。
site-snapshot/仅保留首页与机器人 Widget 所需的最小资源。
- 学生注册、登录与个人问答历史
- 管理员用户角色、状态管理
- TXT、Markdown、PDF、DOCX 文档上传
- 文档解析、自动切块和本地向量索引
- 基于知识库的问答与来源引用
- SSE 流式回答
- 使用 DashScope Embedding 与通义千问生成引用式回答
- 前端:React 19、TypeScript、Vite、Lucide
- 后端:FastAPI、SQLite、Pydantic
- RAG:LlamaIndex、DashScope Embedding、FAISS、TopK 检索
- 文档:pypdf、python-docx
需要 Node.js 20+、Python 3.11+ 和 uv。
git clone https://github.com/<your-name>/campus-practice.git
cd campus-practice# 后端
cd backend
uv sync --extra dev
# 前端
cd ../frontend
npm installcd backend
cp .env.example .env编辑 .env,填入有效的 DashScope API Key:
DASHSCOPE_API_KEY=your-dashscope-api-key
EMBEDDING_MODEL=text-embedding-v3
LLM_MODEL=qwen-turbo向量库已预先构建好,只有在你想重新构建时才需要 Embedding Token。
cd ..
python scripts/download-demo-index.py <your-name>/campus-practice脚本会自动从 Release v1.0.0-demo 下载 campus-qa-demo-index-v1.tar.gz 并解压到 backend/data/llama_index_storage/。
如果下载失败,可手动构建(会消耗 2 个文档的 Embedding Token):
cd backend
KNOWLEDGE_BASE_DIR=../knowledge-base/demo uv run python -m app.cli终端一:后端
cd backend
uv run uvicorn app.main:app --reload终端二:前端管理后台
cd frontend
npm run dev终端三:门户首页 + 机器人 Widget
cd site-snapshot
python3 -m http.server 8080| 入口 | 地址 |
|---|---|
| 前台(门户首页 + 机器人) | http://localhost:8080/index-widget.html |
| 后台管理系统 | http://localhost:5173/#/admin |
| API 文档 | http://localhost:8000/docs |
默认管理员:
admin@campus.example
admin123
cd backend && uv run pytest -q
cd ../frontend && npm run lint && npm run buildcampus-practice/
├── backend/ FastAPI、SQLite、RAG 与测试
├── frontend/ React 管理后台与嵌入式 Widget
├── knowledge-base/
│ └── demo/ 2 份演示文档(不上传全量知识库)
├── site-snapshot/ 精简后的门户首页与 Widget 资源
├── scripts/ download-demo-index.py 等辅助脚本
├── docs/ 文档与界面截图
└── samples/ 示例资料
site-snapshot/仅保留index-widget.html、机器人 Widget 及首页渲染所需的最小静态资源,大量栏目子页面已移除。- 预构建向量库对应
knowledge-base/demo/中的 2 份文档,方便 clone 后直接演示。 - 如需接入全量河海大学知识库,请将完整
knowledge-base/目录放回本位置,并运行cd backend && uv run python -m app.cli重新构建索引。
快照仅用于本地教学演示,页面中的部分外部链接仍会跳转到河海大学线上站点。