基于 Vue 3、FastAPI、LangChain、MySQL 与 Qdrant 的单用户知识库问答项目。
当前项目已经从早期的通用 ChatGPT 中转模式,重构为“知识库优先”的问答系统,主要能力包括:
- JWT 登录与单用户后台种子账号
- 支持
pdf / docx / md / txt文档上传 - 文档切片、向量化、Qdrant 检索
- 会话与消息历史持久化到 MySQL
- 回答展示引用来源
- 检索不足时自动切换到模型直答兜底
| 层级 | 技术 |
|---|---|
| 前端 | Vue 3 + Vite + Naive UI |
| 后端 | FastAPI + SQLAlchemy + Alembic |
| 检索 | LangChain + Qdrant |
| 持久化 | MySQL |
| 部署 | Docker Compose |
先复制模板文件:
cp .env.example .env
cp backend/.env.example backend/.env前端通常保持默认即可;后端需要重点确认这些字段:
SECRET_KEYOPENAI_CHAT_API_KEYOPENAI_CHAT_API_BASEOPENAI_CHAT_MODELOPENAI_EMBEDDING_API_KEYOPENAI_EMBEDDING_API_BASEOPENAI_EMBEDDING_MODELADMIN_USERNAMEADMIN_PASSWORD
统一使用项目根目录的 Compose 入口:
docker compose up -d --build- 前端:
http://127.0.0.1:8080 - 后端 API:
http://127.0.0.1:8000 - MySQL:
127.0.0.1:3307 - Qdrant:
http://127.0.0.1:6333
默认初始化账号:
- 用户名:
hehe - 密码:
123456
docker compose ps
docker compose logs -f backend
docker compose down- 打开网页并登录。
- 进入
知识库页面。 - 上传
pdf / docx / md / txt文档。 - 等待文档状态变为
ready。 - 回到聊天页面,针对知识库内容提问。
仓库中自带了一套演示资料,位于 sample-kb。
pnpm install
pnpm dev后端推荐直接通过 Docker Compose 运行。如果需要本地 Python 调试,可在 backend/ 目录下准备虚拟环境,并结合 backend/.env 启动 FastAPI。
src/:Vue 前端backend/:FastAPI 后端docker/:前端容器使用的 nginx 配置sample-kb/:示例知识库文档kubernetes/:Kubernetes 部署模板
- 本项目已不再使用旧的 Node 后端。
- 根目录
docker-compose.yml是当前唯一维护的 Compose 入口。 - 当知识库未命中足够相关片段时,系统会切换到模型直答模式,并只展示来源标题。
- 当前仓库未提交真实密钥;发布时请仅提交
.env.example,不要提交本地.env。 kubernetes/目录现已提供与当前架构匹配的部署模板,但部署前仍需替换镜像地址和密钥配置。
当前仓库未附带开源许可证;如果你准备公开开源,建议补充一个明确的 LICENSE 文件。