Files
2026-05-29 21:20:57 +08:00

122 lines
3.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 国土空间规划课程智能体
基于大模型和 RAG 的国土空间规划课程智能问答系统,支持多模态文档理解、知识图谱、AI 绘图和论坛交流。
## 功能概览
| 模块 | 说明 |
|------|------|
| **智能问答** | RAG 检索增强生成,支持流式输出、多模型切换、思考过程展示 |
| **多模态 RAG** | PDF 图片自动提取 + VLM 描述生成,问答结果中直接展示图片 |
| **知识库管理** | 上传 PDF/DOCX/TXT/MD 文档,自动分块、向量化入库 |
| **课程内容** | 知识图谱可视化,教材章节结构浏览 |
| **AI 绘图** | 文生图(Stable Diffusion)、图生图,SiliconFlow API 驱动 |
| **论坛** | 分类讨论区,支持发帖、回复 |
| **用户系统** | JWT 认证,管理员/普通用户角色分离 |
## 技术架构
```
用户浏览器
Next.js 15 (:8001) ←── Turbopack 构建
│ /api/* → 反向代理
│ /images/* → 反向代理
FastAPI (:8000)
├── LangGraph 工作流 (analyze → retrieve → generate)
├── RAG 管线
│ ├── text2vec-base-chinese (嵌入)
│ ├── ChromaDB (向量存储)
│ ├── pymupdf (PDF 图片提取)
│ └── Qwen3-VL-8B (图片描述生成)
├── LLM 路由
│ ├── SiliconFlow (Qwen/DeepSeek 系列)
│ └── DeepSeek 官方 API
└── SQLAlchemy ORM
├── SQLite (本地开发)
└── PostgreSQL (Docker 部署)
```
## 技术栈
**后端**: Python 3.12 / FastAPI / LangChain / LangGraph / ChromaDB / SQLAlchemy / pymupdf
**前端**: Next.js 15 / React 19 / TypeScript / TailwindCSS / shadcn/ui / Zustand
**部署**: Docker + Supervisor (单容器) / PostgreSQL
## 快速开始
### 本地开发
**后端** (终端 1):
```bash
cd backend
uv sync
uv run main.py # http://localhost:8000
```
**前端** (终端 2):
```bash
cd web
pnpm install
pnpm dev # http://localhost:8001
```
### Docker 部署
```bash
cp env.example .env # 编辑 .env,配置 SILICONFLOW_API_KEY 等
docker-compose up -d # http://localhost:8001
```
## 项目结构
```
course_agent_od/
├── backend/
│ ├── main.py # 应用入口
│ ├── pyproject.toml # 依赖 (uv)
│ └── src/
│ ├── api/ # FastAPI 路由
│ ├── core/ # 配置、数据库、安全
│ ├── rag/ # RAG 管线
│ │ ├── chains.py # RAGChain
│ │ ├── retrievers.py # KnowledgeBaseRetriever
│ │ ├── document_loaders.py # PDFImageExtractor
│ │ ├── vector_store.py # ChromaDB 封装
│ │ └── prompts.py # 提示词模板
│ ├── llm/ # LLM 客户端 + VLM
│ ├── graph/ # LangGraph 工作流
│ ├── models/ # SQLAlchemy ORM
│ └── services/ # 业务逻辑
├── web/
│ ├── next.config.js # 反向代理配置
│ └── src/
│ ├── app/(main)/ # 页面路由
│ ├── components/chat/ # 聊天组件
│ ├── store/ # Zustand 状态管理
│ └── lib/api.ts # API 客户端
├── data/ # 运行时数据 (.gitignore)
├── docker/ # Docker + Supervisor 配置
├── Dockerfile
└── docker-compose.yml
```
## 环境变量
关键变量见 `env.example`
| 变量 | 说明 |
|------|------|
| `SILICONFLOW_API_KEY` | SiliconFlow LLM/VLM API 密钥 (必需) |
| `DATABASE_URL` | SQLite 或 PostgreSQL 连接串 |
| `SECRET_KEY` | JWT 签名密钥 |
| `POSTGRES_PASSWORD` | PostgreSQL 密码 (Docker) |
## 许可证
MIT License