Files
bxh/README.md

6.5 KiB
Raw Blame History

旅行知识图谱管理系统

Python FastAPI React Docker Graph

面向贵州、贵阳旅行场景的知识图谱管理系统。项目包含 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.mddocs/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 后端依赖

不会上传 .envnode_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-postgreszn-kg-new2-falkordb 容器,并且想把最新数据重新导出到仓库:

bash scripts/export_snapshots.sh

然后提交 snapshots/ 中更新后的 dump 文件即可。快照文件接近 GitHub 单文件建议上限,更新前请先确认文件大小不超过 GitHub 的 100 MB 单文件限制。

生产使用提醒

默认账号、数据库密码和 AUTH_SECRET 仅用于演示。正式部署前请修改 .env 或 compose 环境变量,并为 LLM、高德等外部服务单独配置密钥。更多建议见 SECURITY.md