Commit 11f33a4d024a7dd2667fe190ebf386390f6d1a7c

Authored by zichun
1 parent 03fa2ceb

Add sql/README: document the ERP forms knowledge graph (L1/L2/L3 + GraphRAG)

Showing 1 changed file with 60 additions and 0 deletions
sql/README.md 0 → 100644
  1 +# ERP 表单知识图谱 (multi-granularity KG + RAG)
  2 +
  3 +把 xlyweberp 低代码平台的 **1748 张业务表单** 结构化成多粒度知识图谱,打包成
  4 +LangChain4j 的 GraphRAG 语料。所有视图直接建在平台自带的配置表上(配置表本身就是一张潜在 KG,
  5 +这里只是把边**物化**出来)。
  6 +
  7 +## 数据库连接
  8 +
  9 +本地 `~/.my.cnf` 默认指向不存在的库 `xlyweberp_saas_ai`,**必须** 带 `--no-defaults`:
  10 +
  11 +```sh
  12 +mysql --no-defaults -h127.0.0.1 -P33307 -uroot -plocal xlyweberp_saas
  13 +```
  14 +
  15 +## 三个粒度
  16 +
  17 +| 层 | 关注 | 视图 | 规模 |
  18 +|-----|--------------------|-----------------------------------------|------|
  19 +| L1 | 业务域(路由) | `viw_kg_form.sDomain` | ~11 域 |
  20 +| L2 ⭐| 单据流转(最有用) | `viw_kg_edge_flow` | 411 边 |
  21 +| L3 | 实体字段 ER(NL2SQL)| `viw_kg_edge_ref` + `viw_kg_field_dict` | 1597 FK / 38k 术语 |
  22 +
  23 +## 视图/脚本一览(按依赖顺序)
  24 +
  25 +1. **`viw_ai_useful_forms`** — 1748 张有用业务表单目录(此前已建)。节点主键 `sFormId`,菜单 `sModuleId`。
  26 +2. **`viw_kg_edge_flow`** — 单据流转边:源菜单 --生成--> 目标菜单。
  27 + 目标由 `gdsconfigformslave` 上 `BtnCopyTo.<Action>` 行的 **`sActiveId`** 解析(照搬存储过程
  28 + `Sp_Ai_AddCommonAfterNew`;`.ActXxx` 只是标签)。411 边 / 51 自环 / 404 端点命中目录。
  29 + 完整覆盖 报价→订单→送货→对账→发票→收款 与 采购申请→订单→入库→对账→发票→付款。
  30 +3. **`viw_kg_form`** — 表单节点富化(业务域 / 数据源 / 上下游单据数 / AI工具挂载)。1748 行。
  31 +4. **`viw_kg_edge_ref`** — 外键/引用边:源表.字段 --引用--> 目标表.主键。
  32 + 解析 `gdsconfigformslave.sRelation`(逗号分隔多跳 `字段&关联表&主键&显示字段`)的第一跳。
  33 + 1597 边;目标多为 `ele*`/`sis*` 主数据字典。`bTgtMaster` 标记引用主数据。
  34 +5. **`viw_kg_form_card`** — 每表单一段可向量化的结构化卡片文本 `sCard`(合并节点+上下游+字段中文名)。
  35 +6. **`viw_kg_field_dict`** — 中文名→字段→表 术语字典(38342 条),带外键 join 提示,供 NL2SQL 接地。
  36 +7. **`export_form_cards.sh`** — 导出 1748 张卡片为 JSONL(供灌向量库)。生成文件 gitignore,按需重跑。
  37 +
  38 +## 一键重建
  39 +
  40 +```sh
  41 +DB="mysql --no-defaults -h127.0.0.1 -P33307 -uroot -plocal xlyweberp_saas"
  42 +for v in viw_ai_useful_forms viw_kg_edge_flow viw_kg_form viw_kg_edge_ref viw_kg_form_card viw_kg_field_dict; do
  43 + $DB < "$v.sql"
  44 +done
  45 +./export_form_cards.sh form_cards.jsonl # → 1748 行 JSONL
  46 +```
  47 +
  48 +> 依赖顺序:edge_flow → form → (edge_ref) → form_card / field_dict。edge_ref 独立于 form。
  49 +
  50 +## GraphRAG 用法(L2/L3 扩展)
  51 +
  52 +1. 向量召回:把用户问题 embed,在 Milvus 里对 `form_cards.jsonl` 的 `text` 找 top-k 表单卡片。
  53 +2. 图扩展:对召回的表单,沿 `viw_kg_edge_flow`(上下游单据)+ `viw_kg_edge_ref`(关联主数据表)
  54 + 拉一跳邻居,拼成子图上下文。
  55 +3. 术语接地:用 `viw_kg_field_dict` 把问题里的中文词映射到真实列 + join 目标,喂给 NL2SQL。
  56 +4. 取数:命中表单后统一走 `POST /business/getBusinessDataByFormcustomId/{sFormId}?sModelsId={sModuleId}`。
  57 +
  58 +## 校验基线
  59 +
  60 +以 `ai_tool`(62 张 form-backed 工具,`sSrcFormId`=菜单id)为 ground truth 校验召回。