旅行知识图谱管理系统
面向贵州、贵阳旅行场景的知识图谱管理系统。项目包含 FastAPI 后端、React 管理后台、PostgreSQL 管理库、FalkorDB 图数据库、图谱 schema、采集/抽取脚本和可恢复的数据快照。用户 clone 仓库后可以直接用 Docker 启动完整系统,并恢复随仓库发布的图谱数据。
项目亮点
- 完整后台:数据源、批次、实体审核、证据质量、图谱广场、发布回滚、权限、任务和通知模块。
- 双数据库架构:PostgreSQL 保存后台业务数据与审核流程,FalkorDB 保存可查询图谱。
- 可复现数据:仓库内置 PostgreSQL 与 FalkorDB 快照,下载后可恢复图谱数据。
- Docker 一键启动:
docker compose up -d --build同时启动 API、管理后台、PostgreSQL 和 FalkorDB。 - 旅行客服场景:内置固定线路、周边资源、酒店报价、车辆、行程推荐和图谱问答相关接口。
- 可扩展 Agent:保留高德、网页、小红书、抖音、事件抽取、多源对齐、审计等 Agent 代码。
系统架构
flowchart LR
U["运营/标注/客服用户"] --> W["React 管理后台 /admin"]
W --> A["FastAPI 后端 /v1/admin"]
A --> P[("PostgreSQL\nkg_admin_new2")]
A --> F[("FalkorDB\nguiyang_new2\nguiyang_spatial_v1")]
A --> S["Schema 与采集脚本"]
A --> L["OpenAI 兼容 LLM\n可选"]
A --> M["高德地图 API\n可选"]
更详细的模块说明见 docs/ARCHITECTURE.md。
快速启动
需要先安装并启动 Docker Desktop。
git clone https://github.com/3452078359-xuexue/travel-knowledge-graph.git
cd travel-knowledge-graph
docker compose up -d --build
启动完成后打开:
http://localhost:8102/admin
演示账号:
用户名:admin@example.com
密码:change-me
常用服务端口:
| 服务 | 默认地址 |
|---|---|
| 管理后台/API | http://localhost:8102 |
| 管理后台页面 | http://localhost:8102/admin |
| API 文档 | http://localhost:8102/docs |
| PostgreSQL | localhost:5433 |
| FalkorDB Redis 协议 | localhost:6380 |
| FalkorDB Browser | http://localhost:3002 |
数据快照
仓库包含可恢复快照:
| 数据库 | 快照文件 | 默认库/图 |
|---|---|---|
| PostgreSQL | snapshots/postgres/kg_admin_new2.dump |
database kg_admin, schema kg_admin_new2 |
| FalkorDB | snapshots/falkordb/dump.rdb |
graph guiyang_new2, guiyang_spatial_v1 |
当前快照包含约 80609 条空间 POI、37457 条候选实体,以及 FalkorDB 中的贵阳与旅行社相关图谱。详细结构见 docs/reports/new2_current_kg_schema_snapshot.md 和 docs/DATA_SNAPSHOTS.md。
PostgreSQL 初始化脚本只会在 Docker 数据卷首次创建时执行。如果要丢弃本地修改并从仓库快照重新恢复:
docker compose down -v
docker compose up -d --build
验证命令
检查 API:
curl http://localhost:8102/v1/admin/health
检查 PostgreSQL:
docker compose exec postgres psql -U admin -d kg_admin \
-c "SELECT COUNT(*) FROM kg_admin_new2.amap_spatial_pois;"
检查 FalkorDB 图列表:
docker compose exec falkordb redis-cli -p 6379 GRAPH.LIST
项目结构
.
├── app/ # FastAPI 后端、API 路由、Agent、图谱核心逻辑
├── admin-web/ # React + Vite 管理后台源码
├── docker/ # Docker 初始化脚本
├── docs/ # 项目说明、架构、部署、数据和报告文档
├── schema搭建/ # 图谱 schema、百科样例数据和 DSL 资料
├── scripts/ # 采集、构建、发布和快照导出脚本
├── snapshots/ # 可恢复数据库快照
├── Dockerfile # 后端镜像与前端静态资源构建
├── docker-compose.yml # 一键启动完整系统
├── .env.example # 本地配置模板
└── requirements.txt # Python 后端依赖
不会上传 .env、node_modules/、运行日志、浏览器缓存、本地 Docker 数据卷和临时文件。仓库保留系统源码、Docker 配置、schema、脚本、必要报告和数据库快照。
文档导航
| 文档 | 内容 |
|---|---|
| docs/PROJECT_OVERVIEW.md | 系统定位、业务能力和功能地图 |
| docs/ARCHITECTURE.md | 容器、后端、前端和数据架构 |
| docs/DEPLOYMENT.md | Docker 部署、端口、环境变量和常见问题 |
| docs/DATA_SNAPSHOTS.md | 数据快照、恢复、重导出和校验 |
| docs/API_REFERENCE.md | API 分组、常用接口和调用示例 |
| docs/MAINTENANCE.md | 维护流程、发布检查和仓库边界 |
| CONTRIBUTING.md | 开发参与和提交规范 |
| SECURITY.md | 演示账号、密钥和生产安全建议 |
| CHANGELOG.md | 版本记录 |
本地开发
后端开发:
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
python -m uvicorn app.main:app --host 0.0.0.0 --port 8102 --reload
前端开发:
cd admin-web
npm install
npm run dev
前端构建产物会输出到 app/static/admin/,Docker 镜像构建时会自动完成这一步。
更新快照
如果本机已有 zn-kg-new2-postgres 和 zn-kg-new2-falkordb 容器,并且想把最新数据重新导出到仓库:
bash scripts/export_snapshots.sh
然后提交 snapshots/ 中更新后的 dump 文件即可。快照文件接近 GitHub 单文件建议上限,更新前请先确认文件大小不超过 GitHub 的 100 MB 单文件限制。
生产使用提醒
默认账号、数据库密码和 AUTH_SECRET 仅用于演示。正式部署前请修改 .env 或 compose 环境变量,并为 LLM、高德等外部服务单独配置密钥。更多建议见 SECURITY.md。