README.md
4.4 KB
ERP 表单知识图谱 (multi-granularity KG + RAG)
把 xlyweberp 低代码平台的 1748 张业务表单 结构化成多粒度知识图谱,打包成 LangChain4j 的 GraphRAG 语料。所有视图直接建在平台自带的配置表上(配置表本身就是一张潜在 KG, 这里只是把边物化出来)。
数据库连接
本地 ~/.my.cnf 默认指向不存在的库 xlyweberp_saas_ai,必须 带 --no-defaults:
mysql --no-defaults -h127.0.0.1 -P33307 -uroot -plocal xlyweberp_saas
三个粒度
| 层 | 关注 | 视图 | 规模 | 消费方式 |
|---|---|---|---|---|
| L1 | 业务域(路由) | viw_kg_domain |
11 域 | ⇒ 常驻 system prompt |
| L2 ⭐ | 单据流转(最有用) |
viw_kg_edge_flow / viw_kg_form_neighbors
|
411 边 | ⇒ tool 按需查 |
| L3 | 实体字段 ER(NL2SQL) |
viw_kg_edge_ref + viw_kg_field_dict
|
1597 FK / 38k 术语 | ⇒ tool 按需查 |
消费分层(agentic RAG): L1 体量小且永远相关 → 直接进 system prompt 做路由地图;
L2/L3 大且稀疏 → 做成 agent tools(DynamicExeDbService.findSql 薄封装)按需索引,
L3 工具必须"按词查询"而非整表 dump。L1 的 11 个域对齐 ai_agent 的 8 个业务智能体
(+基础资料/设备/其他→ERP代理人),可直接驱动场景路由。
视图/脚本一览(按依赖顺序)
-
viw_kg_domain— L1 业务域地图(11 行):域→域流转上卷 + 锚点单据 + 对应智能体,渲染进 system prompt。 -
viw_ai_useful_forms— 1748 张有用业务表单目录(此前已建)。节点主键sFormId,菜单sModuleId。 -
viw_kg_edge_flow— 单据流转边:源菜单 --生成--> 目标菜单。 目标由gdsconfigformslave上BtnCopyTo.<Action>行的sActiveId解析(照搬存储过程Sp_Ai_AddCommonAfterNew;.ActXxx只是标签)。411 边 / 51 自环 / 404 端点命中目录。 完整覆盖 报价→订单→送货→对账→发票→收款 与 采购申请→订单→入库→对账→发票→付款。 -
viw_kg_form— 表单节点富化(业务域 / 数据源 / 上下游单据数 / AI工具挂载)。1748 行。 -
viw_kg_edge_ref— 外键/引用边:源表.字段 --引用--> 目标表.主键。 解析gdsconfigformslave.sRelation(逗号分隔多跳字段&关联表&主键&显示字段)的第一跳。 1597 边;目标多为ele*/sis*主数据字典。bTgtMaster标记引用主数据。 -
viw_kg_form_card— 每表单一段可向量化的结构化卡片文本sCard(合并节点+上下游+字段中文名)。 -
viw_kg_field_dict— 中文名→字段→表 术语字典(38342 条),带外键 join 提示,供 NL2SQL 接地。 -
viw_kg_form_neighbors— 每表单的 1-hop 子图(上/下游单据 + 引用实体表),GraphRAG 的「图扩展」步物化。 -
export_form_cards.sh— 导出 1748 张卡片为 JSONL(供灌向量库)。生成文件 gitignore,按需重跑。
一键重建
# 注意:zsh 不对未加引号的变量做分词,用数组
DB=(mysql --no-defaults -h127.0.0.1 -P33307 -uroot -plocal xlyweberp_saas)
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 viw_kg_form_neighbors viw_kg_domain; do
"${DB[@]}" < "$v.sql" # viw_kg_domain 依赖 viw_kg_form + viw_kg_edge_flow,放最后
done
./export_form_cards.sh form_cards.jsonl # → 1748 行 JSONL
依赖顺序:edge_flow → form → (edge_ref) → form_card / field_dict。edge_ref 独立于 form。
GraphRAG 用法(L2/L3 扩展)
- 向量召回:把用户问题 embed,在 Milvus 里对
form_cards.jsonl的text找 top-k 表单卡片。 - 图扩展:对召回的表单,沿
viw_kg_edge_flow(上下游单据)+viw_kg_edge_ref(关联主数据表) 拉一跳邻居,拼成子图上下文。 - 术语接地:用
viw_kg_field_dict把问题里的中文词映射到真实列 + join 目标,喂给 NL2SQL。 - 取数:命中表单后统一走
POST /business/getBusinessDataByFormcustomId/{sFormId}?sModelsId={sModuleId}。
校验基线
以 ai_tool(62 张 form-backed 工具,sSrcFormId=菜单id)为 ground truth 校验召回。