# kgrag 迁移指南 ## 概述 本目录包含将 kgrag 图谱系统从旧服务器完整迁移到新服务器的脚本。 迁移采用**方案A**:迁移高亮PDF文件 + 批量更新 Neo4j 中的溯源 URL。 ## 迁移前准备 在执行任何脚本前,先修改各脚本顶部的变量配置区。 ### 需要确认的信息 | 信息 | 说明 | 示例 | |------|------|------| | 旧服务器 SSH 地址 | 用于 rsync 拉取文件 | `root@192.168.0.46` | | 旧服务器 APP 目录 | kgrag 部署根目录 | `/app` | | 新服务器 APP 目录 | 目标部署根目录 | `/app` | | 旧服务 BASE URL | 写入 Neo4j 的 URL 前缀 | `http://192.168.0.46:59085` | | 新服务 BASE URL | 迁移后对外服务的 URL 前缀 | `http://192.168.1.100:59085` | | 旧 Neo4j 连接地址 | 用于导出快照(可选) | `bolt://192.168.0.46:57687` | | 新 Neo4j 连接地址 | 用于导入和更新 URL | `bolt://localhost:7687` | --- ## 执行步骤 ### 步骤 1:迁移文件 在**新服务器**上执行: ```bash bash 01_copy_files.sh ``` 该脚本通过 rsync 从旧服务器拉取: - `/app/files/`(原始文档) - `/app/files/uploads_v1/`(高亮注释 PDF,溯源链接的实际目标) - `/app/kg_output/`(实体关系抽取 JSON) - `kg_snapshot.json`(全量快照,含 Embedding) - 所有代码文件 ### 步骤 2:重建 Neo4j 图谱 在**新服务器**上执行: ```bash bash 02_load_neo4j.sh ``` 该脚本调用 `batch_kg_build.py --phase load_snapshot` 将 `kg_snapshot.json` 导入新 Neo4j。 > 注意:此方式不保留节点的 `*_timeline` 历史字段。 > 如需完整历史,改用 `neo4j-admin database dump/load` 做数据库级备份(需停服)。 ### 步骤 3:批量更新溯源 URL 在**新服务器**上执行: ```bash python 03_update_neo4j_urls.py ``` 该脚本将 Neo4j 中所有节点 `knowledge_source` 字段里的旧服务器地址替换为新地址。 ### 步骤 4:更新配置文件 在**新服务器**上执行: ```bash bash 04_update_config.sh ``` 该脚本更新 `config.py`、`batch_kg_build.py`、`app.py` 中的硬编码 IP 地址。 ### 步骤 5:验证迁移结果 在**新服务器**上执行: ```bash python 05_verify_migration.py ``` 该脚本检查文件完整性、Neo4j 节点数量、溯源 URL 可访问性。 --- ## 目录结构说明 迁移完成后,新服务器上的文件布局应与旧服务器一致: ``` /app/ ├── files/ # 原始文档(PDF/DOCX/XLSX等) │ └── uploads_v1/ # 高亮注释 PDF(溯源跳转目标) ├── kg_output/ # 每个文档的实体关系 JSON(断点续跑用) ├── kg_snapshot.json # 全量图谱快照(重建 Neo4j 的输入) ├── fault_wenjian/ # 超时/失败文件记录 ├── entity_registry.json # 动态实体类型注册表 ├── tree_data.json # 树状结构数据 ├── config.py # 模型/服务地址配置(迁移后需修改) ├── app.py # FastAPI 主程序 ├── batch_kg_build.py # 批量图谱构建脚本 ├── graph_search/ # 图检索模块 ├── kg_build/ # 图谱构建模块 └── ... # 其他代码模块 ``` --- ## 常见问题 **Q:迁移后溯源点击没有跳转到正确页面?** A:检查步骤3是否执行成功,确认新服务的 `PREFIX_URL` 与 `NEW_BASE_URL` 一致。 **Q:`01_copy_files.sh` 报 Permission denied?** A:确保新服务器已添加旧服务器的 SSH 公钥,或改用密码认证(rsync 会提示输入)。 **Q:`02_load_neo4j.sh` 报模块找不到?** A:先在新服务器上安装依赖:`pip install -r requirements.txt`。 **Q:高亮 PDF 文件很多,rsync 很慢?** A:可加 `--bwlimit=50000`(限速 50MB/s)避免占满带宽,或分批执行。