3.8 KiB
3.8 KiB
name, description
| name | description |
|---|---|
| data-structure-fetcher | 通过文本实体匹配→向量检索→大模型加权汇总三步流程,从数据字典库中智能匹配业务需求所需的数据源及字段。当用户需要了解数据结构、查找表字段、查询数据字典或询问有哪些数据可用时,使用此技能。 |
数据结构获取 Skill
技能描述
采用三步匹配流程,直接调用脚本获取数据源:
- 向量检索:调用
embedding_api_call.py,传入用户完整问题 - 文本实体匹配:从问题中提取核心实体,对每个实体依次调用
wenben_api_call.py - 加权汇总:解析两份结果 → 加权融合(向量 0.6 + 文本 0.4)→ 输出推荐 Top 5 表
目录结构
data-structure-fetcher/
├── SKILL.md
└── scripts/
├── embedding_api_call.py # 向量检索脚本
└── wenben_api_call.py # 文本匹配脚本
使用方法
步骤 1:提取查询实体
从用户问题中提取核心业务实体/关键词。例如:
- "统计各投诉处理部门的投诉受理量" → 提取:"投诉"、"部门"、"受理量"
步骤 2:调用向量检索(一次)
python /root/.config/opencode/skills/data-structure-fetcher/scripts/embedding_api_call.py "用户完整问题" 10
步骤 3:调用文本匹配(每个实体依次调用)
python /root/.config/opencode/skills/data-structure-fetcher/scripts/wenben_api_call.py "实体1" 5
python /root/.config/opencode/skills/data-structure-fetcher/scripts/wenben_api_call.py "实体2" 5
# ... 每个实体依次调用
注意:所有实体的返回结果需合并去重,作为文本匹配的总结果。
步骤 4:解析脚本返回结果
两个脚本均返回 Markdown 表格格式,需从中提取结构化信息:
- 向量检索结果:包含
distance字段(相似度,越小越匹配) - 文本匹配结果:不包含
distance字段
每个结果包含:
ID:库名.表名(如db_dwd.dwd_crm_srv_complaint_rt)元数据:JSON 格式,含schema_name、table_name、table_cn_name、table_comment、table_owner、field_count文档内容:字段清单,格式如字段名(类型)、字段中文名、...
步骤 5:加权融合排序
综合得分 = 向量归一化得分 × 0.6 + 文本归一化得分 × 0.4
- 向量得分:
score = 1 - distance,然后 min-max 归一化到 [0,1] - 文本得分:按命中顺序归一化(首次出现得分最高)
- 来源标记:
both— 两个源都命中(★ 最高置信度)vector_only— 仅向量命中(□)text_only— 仅文本命中(□)
步骤 6:输出 Top 5 推荐表
================================================================================
📊 推荐数据源 Top 5
================================================================================
★ 1. db_dwd.dwd_crm_srv_complaint_rt
中文名:投诉整合层主表
表注释:投诉业务整合宽表
综合得分:0.9200
来源:both (向量=0.950, 文本=0.875)
负责人:蒋平川
□ 2. db_dwa.dwa_crm_base_sr_compln_3rd
中文名:投诉三级延伸全量宽表
综合得分:0.8000
来源:vector_only (向量=0.820, 文本=0.000)
负责人:郭鑫超
================================================================================
触发指令
- "查找相关表"、"推荐数据源"、"这个指标用哪些表"
- "查询数据结构"、"有哪些表可以统计 XX"
- "需要了解数据结构"、"查找表字段"、"查询数据字典"
被 requirement-analyzer 调用
当 requirement-analyzer 进入模块 3(数据源匹配)时,自动调用本 skill,按上述流程执行脚本并汇总结果。