# RAG 泛化改造整合与运行说明 ## 1. 交付范围 本源码包来自 `agent-management-rag` 工作分支,基线为本地 `master` 分支。交付包不包含 Git 历史、密钥、本地数据库、上传文件、日志、Python 虚拟环境、Node 依赖和 Java 构建产物。 主要新增页面: - `/kb/rag`:多源 RAG 问答运行台。 - `/kb/rag-governance`:Schema 授权、生成规则和动态 Few-shot 治理台。 ## 2. 相比 master 的主要改造 ### 2.1 多源 RAG - 新增统一的文档、结构化数据库和 Neo4j 图谱证据模型。 - 新增知识库及数据源绑定配置,支持按数据源独立启停和配置。 - 结构化数据与图谱检索并行执行,最终与 Milvus 文档证据融合。 - 新增 RAG 回答生成接口,回答只能依据检索证据。 ### 2.2 Text-to-SQL 与 Text-to-Cypher - 根据真实数据库 Schema 动态生成 SQL/Cypher,不再仅依赖固定模板。 - SQL 支持表白名单、表提示、业务文档、最大行数和动态 Few-shot。 - Cypher 支持 Label、Relationship、Property 白名单、最大深度和业务规则。 - 生成结果在 Java 侧执行只读安全校验。 - 自动生成的查询执行前先进行 `EXPLAIN`;失败时结合 Schema 和脱敏错误自动修复一次,再次失败则终止。 ### 2.3 Schema 画像与语义目录 - 自动发现 MySQL/H2 等结构化数据库的 Table、Column 和类型。 - 自动发现 Neo4j 的 Label、Relationship、Property 及连接方向。 - 为表、Label 和 Relationship 建立向量语义目录。 - 大型 Schema 按问题语义裁剪;小型已授权 Schema 完整保留。 - Schema 画像带版本和缓存,可手动刷新。 ### 2.4 RAG 治理 - 根据实际 Schema 和业务描述生成“建议开放的业务子图”。 - 治理结果统一为 `suggestedConfig` 和 `examples`: - `suggestedConfig` 回填授权表单,人工点击“应用”后才生效。 - `examples` 导入后默认未审核,审核通过后才参与生成。 - 支持可视化审核 Table、Label、Relationship、Property 和生成规则。 - 授权区按 Label、Relationship、Table 树状折叠;加载时回显已保存配置,避免默认全选误扩大白名单。 - 支持动态 Few-shot 启用、停用和删除。 - 自动学习的成功查询默认未审核;损坏编码、明显乱码和写操作案例不会进入案例库。 - 仅把实际返回证据的自动查询纳入学习,0 行结构化结果不会生成 Few-shot。 - 模型建议在展示和应用前会再次与真实 Schema 取交集,空授权不能启用自动生成。 - LLM 治理建议超时时,按向量语义目录生成确定性草稿,避免页面长时间无响应。 ### 2.5 问题规划与稳定性 - 根据已启用数据源自动拆解结构化数据和图谱子问题。 - SQL 与图谱任务使用独立线程池并行执行。 - RAG AI Bridge 设置短超时和无重试策略,失败时返回可见诊断。 - 修复 Milvus 稀疏向量兼容、文档索引与本地 Embedding Bridge 交互问题。 ### 2.6 前端 - 新增多源 RAG 工作台、证据面板、过程状态和融合结果。 - 新增 RAG 治理中心和导航入口。 - 新增 Cytoscape 图谱结果展示及 Markdown 安全渲染依赖。 ## 3. 环境要求 - Windows 10/11(当前脚本重点验证环境) - Java 17 - Maven 3.6+ - Node.js 18+ 与 npm - Python 3.10 或 3.11,建议使用独立虚拟环境 - Docker Desktop - Milvus 2.5.5 - Neo4j 5 Community - 一个 OpenAI 兼容的聊天模型接口 建议预留至少 8 GB 内存;首次启动本地 `BAAI/bge-m3` 会下载约 2 GB 模型文件。 ## 4. 配置 ### 4.1 Java 应用 复制: ```powershell Copy-Item backend/src/main/resources/application.yml.example backend/src/main/resources/application.yml ``` 至少检查这些环境变量: ```powershell $env:OPENAI_API_KEY="你的模型密钥" $env:JASYPT_KEY="生产环境随机密钥" $env:EMBEDDING_BRIDGE_PYTHON_PATH="python" $env:RAG_AI_BRIDGE_ENABLED="true" ``` `application.yml` 不应提交或在环境之间直接传播真实密钥。 ### 4.2 RAG AI Bridge 复制示例配置: ```powershell Copy-Item backend/rag-ai-bridge/.env.example backend/rag-ai-bridge/.env Copy-Item backend/rag-ai-bridge/config.example.yaml backend/rag-ai-bridge/config.yaml ``` 填写 `.env` 中的 `OPENAI_API_KEY`、`NEO4J_PASSWORD`,并按模型服务修改 `config.yaml` 的 `model` 和 `base_url`。 安装依赖: ```powershell python -m pip install -r backend/rag-ai-bridge/requirements.txt python -m pip install -r backend/embedding-bridge/requirements.txt ``` ### 4.3 Milvus `docker-compose.yml` 默认数据目录是 `F:/Services/milvus-2.5.5/volumes`。其他机器必须先覆盖: ```powershell $env:MILVUS_DATA_DIR="D:/Services/milvus/volumes" docker compose up -d ``` 端口:`19530`(gRPC)、`9091`(管理/健康接口)。 ### 4.4 Neo4j Neo4j 独立部署,不由当前 `docker-compose.yml` 创建: ```powershell docker run -d --name neo4j-community --restart unless-stopped ` -p 7474:7474 -p 7687:7687 ` -e NEO4J_AUTH=neo4j/请替换为强密码 ` -v neo4j_community_data:/data ` -v neo4j_community_logs:/logs ` -v neo4j_community_import:/var/lib/neo4j/import ` -v neo4j_community_plugins:/plugins ` neo4j:5-community ``` 页面中保存图谱源时只保存连接配置;真正查询时才建立连接。 ## 5. 构建与启动 Windows 一键启动: ```powershell .\run.bat ``` 脚本会检查 Docker、启动或复用 Milvus、启动 RAG AI Bridge、构建前后端并运行 Spring Boot。Neo4j 需要提前单独启动。 只构建: ```powershell .\run.bat build ``` 手工构建: ```powershell Set-Location frontend npm ci npm run build Set-Location ../backend mvn clean package java -jar target/agent-management-1.0.0.jar ``` 默认地址和端口: | 服务 | 地址/端口 | |---|---| | Web/Spring Boot | `http://127.0.0.1:2438` | | Embedding Bridge | `127.0.0.1:18732` | | RAG AI Bridge | `127.0.0.1:18733` | | Milvus | `127.0.0.1:19530` | | Neo4j Browser | `http://127.0.0.1:7474` | | Neo4j Bolt | `bolt://127.0.0.1:7687` | ## 6. 测试 ### 6.1 自动化测试 ```powershell Set-Location backend mvn test Set-Location rag-ai-bridge python -m pytest -q Set-Location ../../../frontend npm ci npm run build ``` 当前交付前基线:Java 24 项测试、Python 8 项测试、前端生产构建均通过。 ### 6.2 基础联通性 ```powershell .\run.bat status ``` 应看到 `2438`、`18732`、`18733`、`19530`、`7474`、`7687` 处于监听状态。 ### 6.3 功能验收建议 1. 在“结构化数据”中创建并测试数据库连接。 2. 在“知识图谱”中创建并测试 Neo4j 连接。 3. 打开“RAG 治理”,选择数据源并刷新画像。 4. 输入业务描述,生成业务子图与案例。 5. 审核 Table/Label/Relationship/Property 和生成规则后应用。 6. 导入 Few-shot,确认默认未启用;审核一条后再测试问题。 7. 在“RAG”工作台分别测试仅结构化、仅图谱和多源全选。 8. 检查证据面板中的 SQL、图谱节点/关系、诊断信息和最终回答。 9. 使用不存在的字段提问,确认系统经过 `EXPLAIN`/一次修复后执行或安全失败。 10. 使用删除、更新、建表等诱导问题,确认只读校验拒绝写操作。 ## 7. 整合注意事项 - 本改造新增多个尚未进入 `master` 的实体和 JPA 表;首次启动由 `ddl-auto: update` 自动创建。 - 不要把交付环境现有的 `application.yml`、H2 数据文件或 Neo4j/Milvus 卷直接覆盖。 - 合并时重点检查 `run.bat`、前端路由/侧栏、Embedding Bridge 和数据源服务接口冲突。 - 白名单是安全边界;生成建议不会自动放权,必须人工审核后应用。 - 新环境首次建立数据源后应刷新 Schema 画像并重新生成、审核 Few-shot。 - `generationRules` 是模型软约束;Java 只读校验、Schema 白名单和查询上限是硬约束。 ## 8. 未包含内容 - `.git` 与任何提交历史 - `application.yml`、`.env`、`config.yaml` 等本地密钥配置 - `data`、`uploads`、Milvus/Neo4j/H2 数据 - `node_modules`、`target`、日志、缓存和本地模型文件