智能体开发利器-本体论-小白入门学习指引+demo实战讲解

0 阅读13分钟

智能体开发利器-本体论-小白入门学习指引+demo实战讲解

本文档整合了本体论基础、AI应用结合、Demo实践三部分内容,形成完整的知识体系。


第一章:本体论基础

1.1 什么是本体论

本体论(Ontology) 一词源于哲学,来自希腊语 "ontos"(存在)和 "logos"(学问),意为"关于存在的学问"。

在计算机科学和人工智能领域,本体论被定义为:

"对领域知识的形式化、明确的规范说明" —— Tom Gruber (1993)

mindmap
  root((本体论))
    哲学视角
      事物的本质
      存在的方式
      事物间关系
    计算机科学
      共享概念模型
      形式化规范
      机器可理解
    核心价值
      知识共享
      知识复用
      逻辑推理
      语义互操作

1.2 本体论的核心要素

classDiagram
    class 本体核心要素 {
        <<概念>>
    }
    
    class Class {
        +概念/类
        +层次结构
        +继承关系
    }
    
    class Property {
        +数据类型属性
        +对象属性
        +描述特征
    }
    
    class Relation {
        +part-of
        +kind-of
        +instance-of
        +related-to
    }
    
    class Instance {
        +具体实例
        +类的具体化
        +实际数据
    }
    
    class Axiom {
        +逻辑规则
        +约束条件
        +推理基础
    }
    
    本体核心要素 <|-- Class
    本体核心要素 <|-- Property
    本体核心要素 <|-- Relation
    本体核心要素 <|-- Instance
    本体核心要素 <|-- Axiom
要素说明示例
类(Class)领域中的概念或实体类型产品、客户、订单
属性(Property)类的特征或状态产品名称、价格、库存
关系(Relation)类与类之间的联系客户→下单→订单
实例(Instance)类的具体化iPhone 15 是产品的实例
公理(Axiom)逻辑规则和约束订单必须包含至少一个产品

1.3 本体论与知识图谱的关系

flowchart LR
    subgraph Schema["📋 模式层(本体论)"]
        direction TB
        S1["概念定义"]
        S2["属性定义"]
        S3["关系定义"]
        S4["约束规则"]
    end
    
    subgraph Data["💾 数据层(知识图谱)"]
        direction TB
        D1["实体实例"]
        D2["属性值"]
        D3["关系实例"]
        D4["事实数据"]
    end
    
    Schema -->|"实例化"| Data
    Data -->|"验证"| Schema
    
    S1 --> D1
    S2 --> D2
    S3 --> D3
    S4 --> D4

关系说明

  • 本体论是知识图谱的模式层(Schema Layer)
  • 知识图谱是本体论的实例化(Instantiation)
  • 本体定义"是什么",知识图谱存储"具体有什么"

第二章:本体论与AI应用

2.1 AI系统的知识瓶颈

flowchart TB
    subgraph Problems["⚠️ AI系统的知识瓶颈"]
        P1["问题1:知识表示<br/>如何让机器理解领域知识?"]
        P2["问题2:知识获取<br/>如何高效获取和整理知识?"]
        P3["问题3:知识推理<br/>如何从已知推导新知识?"]
        P4["问题4:知识共享<br/>如何在不同系统间传递知识?"]
    end
    
    subgraph Solution["✅ 本体论的解决方案"]
        S1["形式化概念定义"]
        S2["结构化知识建模"]
        S3["规则推理引擎"]
        S4["标准化语义接口"]
    end
    
    P1 --> S1
    P2 --> S2
    P3 --> S3
    P4 --> S4

2.2 本体论在AI架构中的位置

flowchart TB
    subgraph App["🎯 AI应用层"]
        A1["智能问答"]
        A2["推荐系统"]
        A3["语义搜索"]
        A4["决策支持"]
    end
    
    subgraph Engine["⚙️ 推理引擎层"]
        E1["规则推理"]
        E2["图推理"]
        E3["机器学习推理"]
    end
    
    subgraph Ontology["🧠 本体层(知识模式)"]
        O1["概念定义"]
        O2["属性定义"]
        O3["关系定义"]
        O4["约束规则"]
    end
    
    subgraph Data["💾 数据层"]
        D1["结构化数据"]
        D2["半结构化数据"]
        D3["非结构化数据"]
    end
    
    App --> Engine
    Engine --> Ontology
    Ontology --> Data

2.3 本体论与大语言模型(LLM)的结合

flowchart LR
    subgraph LLM_Only["❌ 纯LLM方案"]
        L1["用户输入"] --> L2["LLM处理"]
        L2 --> L3["可能产生幻觉"]
    end
    
    subgraph LLM_Onto["✅ LLM + 本体方案"]
        LO1["用户输入"] --> LO2["LLM处理"]
        LO3["本体知识库"] --> LO2
        LO2 --> LO4["精准结构化输出"]
    end
    
    LLM_Only -.->|"增强"| LLM_Onto

增强方式

方式说明效果
知识注入将本体知识作为上下文提供给LLM减少幻觉
约束生成利用本体约束LLM的输出格式结构化输出
验证推理用本体验证LLM输出的合理性提高准确率
语义映射将自然语言映射到本体概念精准理解

2.4 本体论与RAG的结合

flowchart TB
    subgraph Traditional["📋 传统RAG"]
        T1["Query"] --> T2["向量检索"]
        T2 --> T3["Top-K文档"]
        T3 --> T4["LLM生成"]
    end
    
    subgraph OntoRAG["🧠 本体增强RAG"]
        O1["Query"] --> O2["实体识别"]
        O2 --> O3["本体推理"]
        O3 --> O4["精准检索"]
        O4 --> O5["LLM生成"]
        
        O6["本体知识库"] --> O2
        O6 --> O3
    end
    
    Traditional -.->|"升级"| OntoRAG

本体增强RAG的优势

  • 精准检索:基于本体概念而非向量相似度
  • 知识扩展:通过本体关系发现相关知识
  • 推理能力:支持多跳推理问题

2.5 本体论与 Harness 的深度比较

2.5.1 本质定义的对比
flowchart TB
    subgraph Ontology["🧠 本体论 (Ontology)"]
        direction TB
        O_Def["本质:知识表示方法"]
        O_Q["回答:知识是什么?"]
        O_Focus["关注:概念、属性、关系"]
        O_Role["角色:AI系统的'大脑'<br/>存储和理解知识"]
        O_State["状态:静态的知识结构"]
        
        O_Def --> O_Q --> O_Focus --> O_Role --> O_State
    end
    
    subgraph Harness["⚙️ Harness"]
        direction TB
        H_Def["本质:评估/执行框架"]
        H_Q["回答:任务怎么做?"]
        H_Focus["关注:执行、验证、反馈"]
        H_Role["角色:AI系统的'质检员'<br/>验证输出质量"]
        H_State["状态:动态的执行流程"]
        
        H_Def --> H_Q --> H_Focus --> H_Role --> H_State
    end
    
    Ontology <-.->|"互补"| Harness
2.5.2 设计哲学的根本差异
维度本体论Harness
核心问题"知识如何表示?""任务如何执行?"
思维模式静态建模思维动态验证思维
设计起点从领域知识出发从任务目标出发
产出物概念模型、知识图谱测试用例、评估指标
成功标准知识是否完整、一致任务是否正确完成
迭代方式扩展概念和关系增加测试覆盖
2.5.3 与 LLM 的关系对比
flowchart LR
    subgraph Before["输入阶段"]
        User["用户输入"]
    end
    
    subgraph Onto_Role["🧠 本体论的作用"]
        direction TB
        O1["知识注入"]
        O2["约束生成"]
        O3["语义映射"]
        O1 --> O2 --> O3
    end
    
    subgraph LLM["🤖 LLM处理"]
        L["大语言模型"]
    end
    
    subgraph Harness_Role["⚙️ Harness的作用"]
        direction TB
        H1["输出验证"]
        H2["质量评估"]
        H3["反馈优化"]
        H1 --> H2 --> H3
    end
    
    subgraph After["输出阶段"]
        Result["最终结果"]
    end
    
    User --> Onto_Role --> LLM --> Harness_Role --> Result

本体论在 LLM 前置阶段的作用

作用具体方式效果
知识注入将本体知识嵌入 System PromptLLM 获得领域知识
约束生成定义输出格式和取值范围减少幻觉、结构化输出
语义映射自然语言→本体概念精准理解用户意图

Harness 在 LLM 后置阶段的作用

作用具体方式效果
输出验证检查输出是否符合预期格式过滤无效输出
质量评估计算准确率、相关性等指标量化模型表现
反馈优化根据评估结果调整 Prompt持续改进系统
2.5.4 典型代表与核心能力

本体论工具生态

类型代表工具核心能力
本体编辑器Protégé, WebProtégé可视化构建本体模型
知识图谱数据库Neo4j, Amazon Neptune存储和查询本体实例
语义推理引擎Pellet, HermiT基于本体进行逻辑推理
本体标准语言OWL, RDF, JSON-LD形式化描述本体

Harness 工具生态

类型代表框架核心能力
评估 Harnesslm-evaluation-harness, LightEval模型基准测试
测试 HarnessOpenAI Evals, Promptfoo输出质量验证
Agent HarnessLangChain, LlamaIndex, AutoGen工具调用与工作流编排
监控 HarnessLangSmith, Weights & Biases运行时追踪与调试
2.5.5 实战场景对比

场景一:构建智能客服系统

flowchart TB
    subgraph Problem["业务需求"]
        P["智能客服系统<br/>回答产品相关问题"]
    end
    
    subgraph Onto_Solution["🧠 本体论方案"]
        O1["定义产品本体<br/>产品、功能、价格、故障"]
        O2["定义关系<br/>产品-包含-功能<br/>故障-属于-产品"]
        O3["注入LLM<br/>作为知识背景"]
        O1 --> O2 --> O3
    end
    
    subgraph Harness_Solution["⚙️ Harness方案"]
        H1["定义测试用例<br/>100个常见问题"]
        H2["定义评估指标<br/>准确率、相关性"]
        H3["持续评估优化<br/>迭代改进Prompt"]
        H1 --> H2 --> H3
    end
    
    P --> Onto_Solution
    P --> Harness_Solution
    
    Onto_Solution --> Result["完整的智能客服"]
    Harness_Solution --> Result
方案贡献局限
本体论让LLM理解产品知识,回答准确无法验证回答质量
Harness验证回答质量,持续优化无法提供领域知识

场景二:SQL生成系统

阶段本体论贡献Harness贡献
知识准备定义数据库表结构、字段语义、约束规则-
输入理解将自然语言映射到表名、字段名-
SQL生成约束LLM生成合法SQL语法-
输出验证-验证SQL语法正确性
执行测试-测试SQL能否正确执行
结果评估-评估查询结果准确性
2.5.6 技术架构的融合模式
flowchart TB
    subgraph Layer1["第一层:知识层"]
        Onto["本体知识库<br/>概念/属性/关系/约束"]
    end
    
    subgraph Layer2["第二层:理解层"]
        LLM1["LLM + 本体知识"]
        Mapping["语义映射"]
        Constraint["约束生成"]
    end
    
    subgraph Layer3["第三层:执行层"]
        Task["任务执行"]
        Tool["工具调用"]
        Output["输出生成"]
    end
    
    subgraph Layer4["第四层:验证层"]
        Harness["Harness评估"]
        Metrics["指标计算"]
        Feedback["反馈优化"]
    end
    
    Onto --> LLM1 --> Mapping --> Constraint
    Constraint --> Task --> Tool --> Output
    Output --> Harness --> Metrics --> Feedback
    Feedback -.->|"优化"| LLM1

融合模式说明

层级主要技术输入输出
知识层本体论领域知识结构化知识模型
理解层本体论 + LLM用户输入 + 本体知识语义理解结果
执行层LLM/Agent理解结果执行结果
验证层Harness执行结果质量评估报告
2.5.7 选择决策框架
flowchart TD
    Start["项目需求分析"] --> Q1{"是否需要领域知识建模?"}
    
    Q1 -->|"是"| Q2{"知识是否复杂?<br/>(多概念、多关系)"}
    Q1 -->|"否"| Q3{"是否需要质量验证?"}
    
    Q2 -->|"是"| Onto["本体论为主<br/>构建知识模型"]
    Q2 -->|"否"| Simple["简单Prompt<br/>+ 少量示例"]
    
    Q3 -->|"是"| Q4{"是否需要持续评估?"}
    Q3 -->|"否"| Basic["基础实现"]
    
    Q4 -->|"是"| Harness["Harness为主<br/>建立评估体系"]
    Q4 -->|"否"| Manual["人工验证"]
    
    Onto --> Q5{"是否需要质量保证?"}
    Simple --> Q5
    
    Q5 -->|"是"| Hybrid["本体论 + Harness<br/>融合方案"]
    Q5 -->|"否"| Final["实施"]
    
    Harness --> Final
    Hybrid --> Final
    Basic --> Final
    Manual --> Final

决策矩阵

需求特征推荐方案理由
复杂领域知识 + 高质量要求本体论 + Harness 融合知识建模 + 质量验证
复杂领域知识 + 快速上线本体论为主知识准确性优先
简单任务 + 高质量要求Harness为主验证体系优先
简单任务 + 快速上线Prompt工程成本最低
长期演进系统本体论 + Harness可维护 + 可优化
2.5.8 总结:互补而非替代
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│              本体论与Harness的协同关系                       │
│                                                             │
│   ┌─────────────────────────────────────────────────────┐  │
│   │                                                     │  │
│   │    本体论              Harness                      │  │
│   │    ┌─────┐            ┌─────┐                      │  │
│   │    │知识 │            │验证 │                      │  │
│   │    │建模 │            │评估 │                      │  │
│   │    └──┬──┘            └──┬──┘                      │  │
│   │       │                  │                          │  │
│   │       │    ┌────────┐    │                          │  │
│   │       └───>│  LLM   │<───┘                          │  │
│   │            │ 核心   │                               │  │
│   │            └────────┘                               │  │
│   │                                                     │  │
│   │    前置增强          后置验证                        │  │
│   │                                                     │  │
│   └─────────────────────────────────────────────────────┘  │
│                                                             │
│   本体论:让LLM"懂" → Harness:让LLM"对"                   │
│                                                             │
└─────────────────────────────────────────────────────────────┘

核心观点

  • 本体论解决"LLM懂不懂"的问题——知识理解
  • Harness解决"LLM对不对"的问题——质量验证
  • 两者是互补关系,而非替代关系
  • 成熟的AI系统需要两者结合才能达到最佳效果

第三章:Demo实践 - 销售数据大屏

Demo 效果展示

以下为本体论驱动的销售数据大屏 Demo 截图,展示了从自然语言输入到动态大屏生成的完整效果。

截图1:系统主界面

展示大屏整体布局和组件分布

截图2:自然语言输入-按照示例引导提示

用户输入自然语言查询示例

截图3:自然语言输入-自定义聊天提示

根据用户输入动态生成的销售大屏

3.1 核心本体文件

本项目通过三个核心本体文件定义了完整的知识模型,实现从自然语言到动态大屏的智能转换。

3.1.1 业务本体(business-ontology.json)

业务本体定义了销售领域的核心概念、指标、维度和业务规则。

核心指标定义

{
  "metrics": {
    "sales_amount": {
      "name": "销售额",
      "aliases": ["销售金额", "销售总额", "营收", "营业额"],
      "definition": "在一定时间内完成销售的商品或服务的总金额",
      "unit": "元",
      "business_meaning": "衡量企业销售规模的核心指标,反映市场占有率和营收能力",
      "related_metrics": ["order_count", "profit", "avg_order_amount"],
      "common_questions": [
        "本月的销售额是多少?",
        "哪个产品销售额最高?",
        "销售额环比增长多少?"
      ]
    },
    "order_count": {
      "name": "订单数",
      "aliases": ["订单量", "成交单数", "订单总数"],
      "unit": "单",
      "business_meaning": "反映交易活跃度和客户购买频次"
    },
    "profit": {
      "name": "利润",
      "aliases": ["净利润", "盈利", "收益"],
      "unit": "元",
      "business_meaning": "反映企业盈利能力和经营效率"
    }
  }
}

维度定义

{
  "dimensions": {
    "time": {
      "name": "时间维度",
      "levels": ["年", "季度", "月", "周", "日", "小时"],
      "common_filters": {
        "今天": "date = date('now')",
        "本月": "date >= date('now', 'start of month')",
        "最近7天": "date >= date('now', '-7 days')"
      }
    },
    "region": {
      "name": "地区维度",
      "values": ["华东", "华南", "华北", "华中", "西南", "西北", "东北"]
    },
    "category": {
      "name": "产品类别维度",
      "values": ["电子产品", "服装鞋帽", "食品饮料", "家居用品", "美妆护肤"]
    },
    "channel": {
      "name": "渠道维度",
      "values": ["线上商城", "线下门店", "分销渠道", "微信小程序", "抖音直播"]
    }
  }
}

本体论体现

  • 概念(Concept):指标、维度作为核心概念
  • 属性(Property):name、aliases、unit、business_meaning
  • 关系(Relation):related_metrics 定义指标间的关联
  • 实例(Instance):具体的维度值如"华东"、"电子产品"
3.1.2 组件能力本体(component-capabilities.json)

组件能力本体定义了可视化组件的类型、配置规则和选择策略。

组件定义

{
  "components": {
    "MetricCard": {
      "description": "指标卡片,用于展示单个核心指标的数值",
      "best_for": ["展示汇总数据", "KPI指标", "单一数值展示"],
      "data_requirements": {
        "fields": "需要1个数值字段",
        "aggregation": "通常使用SUM、AVG、COUNT等聚合函数"
      },
      "config_schema": {
        "title": { "type": "string", "description": "卡片标题" },
        "value": { "type": "number", "description": "指标值" },
        "unit": { "type": "string", "description": "单位" },
        "format": { "type": "string", "enum": ["number", "currency", "percent"] }
      }
    },
    "LineChart": {
      "description": "折线图,用于展示数据随时间变化的趋势",
      "best_for": ["趋势分析", "时间序列数据", "对比多条数据线"],
      "data_requirements": {
        "x_axis": "需要时间或有序类别字段",
        "y_axis": "需要1个或多个数值字段"
      }
    },
    "BarChart": {
      "description": "柱状图,用于比较不同类别的数值大小",
      "best_for": ["排名对比", "类别比较", "TOP N展示"]
    },
    "PieChart": {
      "description": "饼图,用于展示各部分占整体的比例",
      "best_for": ["占比分析", "构成分析", "百分比展示"]
    }
  }
}

组件选择规则

{
  "selection_rules": {
    "single_value": {
      "description": "当结果只有一个数值时",
      "recommended": ["MetricCard"],
      "reason": "适合展示KPI指标"
    },
    "time_series": {
      "description": "当数据包含时间字段且需要看趋势时",
      "recommended": ["LineChart", "AreaChart"],
      "reason": "适合展示时间趋势变化"
    },
    "category_comparison": {
      "description": "当需要比较不同类别的大小时",
      "recommended": ["BarChart"],
      "reason": "适合排名和对比分析"
    },
    "proportion": {
      "description": "当需要展示各部分占整体比例时",
      "recommended": ["PieChart"],
      "reason": "适合占比分析"
    }
  }
}

本体论体现

  • 概念层次:Component → LineChart/BarChart/PieChart 继承关系
  • 语义属性:best_for 描述组件的适用场景
  • 推理规则:selection_rules 定义组件选择的逻辑
3.1.3 数据库模式本体(db-schema.json)

数据库模式本体定义了数据表结构、字段语义和表间关系。

表结构定义

{
  "tables": {
    "daily_orders": {
      "description": "每日订单汇总表,记录每天的总体销售数据",
      "business_purpose": "用于分析整体销售趋势、计算核心KPI指标",
      "columns": {
        "date": { "type": "TEXT", "description": "日期,格式YYYY-MM-DD" },
        "sales_amount": { "type": "REAL", "description": "销售额(元)" },
        "order_count": { "type": "INTEGER", "description": "订单数" },
        "customer_count": { "type": "INTEGER", "description": "客户数" },
        "profit": { "type": "REAL", "description": "利润(元)" }
      },
      "common_queries": [
        "按时间范围汇总销售额、订单数等",
        "计算同比、环比增长率"
      ]
    },
    "product_sales": {
      "description": "产品销售明细表,按产品类别统计销售数据",
      "columns": {
        "category": { "type": "TEXT", "description": "产品类别" },
        "sales_amount": { "type": "REAL", "description": "该类别销售额" }
      }
    },
    "region_sales": {
      "description": "地区销售明细表,按地区统计销售数据",
      "columns": {
        "region": { "type": "TEXT", "description": "地区" },
        "sales_amount": { "type": "REAL", "description": "该地区销售额" }
      }
    }
  }
}

本体论体现

  • 概念:Table、Column 作为核心概念
  • 属性:description、type、business_purpose
  • 关系:表间通过 date 字段关联

3.2 LLM 查询服务核心代码

LLM 查询服务是连接用户自然语言与本体知识的桥梁,核心代码位于 llm-query.js

3.2.1 本体加载与知识注入
class LLMQueryService {
  constructor() {
    this.apiKey = process.env.MINIMAX_API_KEY || '';
    this.baseUrl = process.env.MINIMAX_BASE_URL || 'https://api.minimax.chat/v1';
    
    // 加载本体文件
    this.dbSchema = this.loadOntology('db-schema.json');
    this.componentCapabilities = this.loadOntology('component-capabilities.json');
    this.businessOntology = this.loadOntology('business-ontology.json');
  }

  loadOntology(filename) {
    const filePath = path.join(__dirname, '../ontology', filename);
    const content = fs.readFileSync(filePath, 'utf-8');
    return JSON.parse(content);
  }
}

本体论体现:将三个本体文件加载到内存,为后续推理提供知识基础。

3.2.2 System Prompt 构建
buildSystemPrompt() {
  // 从本体提取表结构信息
  const tablesInfo = Object.entries(this.dbSchema.tables || {}).map(([name, info]) => {
    const columns = Object.keys(info.columns || {}).join(', ');
    return `${name}(${columns})`;
  }).join('\n');

  return `你是销售数据分析助手。判断用户意图并生成相应响应。

【数据库表结构】
${tablesInfo}

【SQLite语法规则】
- 数据库类型: SQLite
- 本月: date >= date('now', 'start of month')
- 最近7天: date >= date('now', '-7 days')

【意图判断规则】
1. 元数据查询:用户问"有哪些数据" → is_metadata_query: true
2. 帮助指导:用户问"怎么提问" → is_help: true
3. 数据查询:用户要查具体数据 → 生成 SQL
4. 普通对话:问候、闲聊 → is_chat: true

【返回格式】
{
  "understanding": "简短理解",
  "is_metadata_query": true 或 false,
  "is_help": true 或 false,
  "is_chat": true 或 false,
  "chat_response": "友好回复",
  "sql": "SELECT ... FROM ..."
}`;
}

本体论体现

  • 知识注入:将 db-schema 本体注入 System Prompt
  • 约束生成:定义返回格式,约束 LLM 输出结构
3.2.3 意图理解与 SQL 生成
async generateSQL(userMessage) {
  const response = await axios.post(
    `${this.baseUrl}/text/chatcompletion_v2`,
    {
      model: 'abab6.5s-chat',
      messages: [
        { role: 'system', content: this.buildSystemPrompt() },
        { role: 'user', content: userMessage }
      ],
      temperature: 0.3
    }
  );

  const content = response.data.choices?.[0]?.message?.content || '';
  return this.parseSQLResponse(content);
}

parseSQLResponse(content) {
  const parsed = JSON.parse(cleanContent);
  
  // 安全检查:只允许 SELECT 语句
  if (parsed.sql) {
    const sqlLower = parsed.sql.toLowerCase();
    if (sqlLower.includes('insert') || sqlLower.includes('update') || 
        sqlLower.includes('delete') || sqlLower.includes('drop')) {
      return { fallback: true, message: 'SQL包含不允许的操作' };
    }
  }
  return parsed;
}

本体论体现

  • 语义映射:自然语言 → SQL(通过本体约束)
  • 安全约束:基于规则过滤危险操作
3.2.4 智能可视化决策
async analyzeAndVisualize(queryResult, userMessage, sqlInfo) {
  const prompt = `分析以下查询结果,决定最佳展示方式。

用户问题: ${userMessage}
SQL: ${sqlInfo.sql}
查询结果: ${JSON.stringify(queryResult.slice(0, 10))}

可用组件:
- MetricCard: 单个数值展示
- LineChart: 趋势图
- BarChart: 柱状图
- PieChart: 饼图
- DataTable: 数据表格

返回JSON格式:
{
  "message": "对用户问题的回答",
  "components": [{"type": "组件类型", "title": "标题", "config": {...}}]
}`;

  const response = await axios.post(/* ... */);
  return this.parseVisualizationResponse(content, queryResult);
}

本体论体现

  • 组件选择推理:基于 component-capabilities 本体
  • 配置生成:根据数据特征动态生成组件配置
3.2.5 主处理流程
async processQuery(userMessage) {
  // Step 1: LLM 判断意图并生成 SQL
  const sqlInfo = await this.generateSQL(userMessage);
  
  // Step 2: 根据意图类型处理
  if (sqlInfo.is_chat) {
    return { message: sqlInfo.chat_response, responseType: 'text' };
  }
  
  if (sqlInfo.is_metadata_query) {
    return { message: this.generateMetadataResponse(), responseType: 'text' };
  }

  // Step 3: 执行 SQL
  const sqlResult = this.executeSQL(sqlInfo.sql);

  // Step 4: LLM 分析并决定展示方式
  const visualization = await this.analyzeAndVisualize(sqlResult.data, userMessage, sqlInfo);

  return {
    message: visualization.message,
    components: visualization.components,
    data: visualization.data,
    responseType: 'dashboard'
  };
}

本体论体现

  • 多阶段推理:意图理解 → SQL生成 → 组件选择
  • 知识驱动:每个阶段都依赖本体知识

3.3 整体架构

flowchart TB
    subgraph Input["📥 用户语义输入"]
        User["👤 用户"]
        Query["查看本月销售趋势"]
    end
    
    subgraph Ontology["🧠 本体推理层"]
        Components["📦 components.json<br/>组件本体"]
        DataSources["📊 datasources.json<br/>数据源本体"]
        Rules["🔀 rules.json<br/>映射规则本体"]
    end
    
    subgraph Output["🖥️ 大屏生成"]
        Dashboard["📈 动态大屏"]
    end
    
    User --> Query
    Query --> Ontology
    Ontology --> Dashboard
    
    Components --- DataSources
    DataSources --- Rules

架构说明

层级职责核心文件
输入层接收用户自然语言查询-
本体层语义理解、意图推理、组件选择components.json, datasources.json, rules.json
输出层动态生成大屏配置-

第四章:当前技术方案 - 纯LLM处理

4.1 技术架构演进

flowchart LR
    subgraph RuleBased["📋 规则编排方案(早期)"]
        direction TB
        R1["用户输入"] --> R2["关键词匹配<br/>rules.json"]
        R2 --> R3["规则引擎<br/>拼接SQL"]
        R3 --> R4["映射规则<br/>选择组件"]
        R4 --> R5["生成大屏"]
    end
    
    subgraph LLMBased["🤖 纯LLM方案(当前)"]
        direction TB
        L1["用户输入"] --> L2["LLM理解<br/>自然语言"]
        L2 --> L3["LLM直接<br/>生成SQL"]
        L3 --> L4["LLM分析<br/>决定组件"]
        L4 --> L5["生成大屏"]
    end
    
    RuleBased -.->|"演进"| LLMBased

4.2 当前技术架构

flowchart TB
    subgraph User["👤 用户层"]
        Input["用户输入<br/>本月销售额是多少?"]
    end
    
    subgraph LLM_Layer["🤖 LLM处理层"]
        subgraph Prompt["📝 System Prompt"]
            Metrics["可用指标<br/>sales_amount, order_count..."]
            Dimensions["可用维度<br/>region, category, channel..."]
            TimeRange["可用时间<br/>this_month, last_7_days..."]
            IntentTypes["意图类型<br/>dashboard, query, insight..."]
            SQLRules["SQLite语法规则"]
        end
        
        MiniMax["MiniMax LLM<br/>abab6.5s-chat"]
        
        JSON["结构化JSON响应<br/>{message, responseType, collectedData}"]
    end
    
    subgraph Services["⚙️ 后端服务层"]
        direction LR
        Query["analytics.query()<br/>数据查询"]
        Insight["insight.generateInsights()<br/>洞察报告"]
        Predict["prediction.batchPredict()<br/>预测分析"]
        Dashboard["ontologyService<br/>大屏生成"]
    end
    
    subgraph Frontend["🖥️ 前端渲染"]
        Vue["Vue3 + ECharts"]
    end
    
    Input --> MiniMax
    Metrics --> MiniMax
    Dimensions --> MiniMax
    TimeRange --> MiniMax
    IntentTypes --> MiniMax
    SQLRules --> MiniMax
    
    MiniMax --> JSON
    
    JSON -->|responseType: query| Query
    JSON -->|responseType: insight| Insight
    JSON -->|responseType: predict| Predict
    JSON -->|responseType: dashboard| Dashboard
    
    Query --> Vue
    Insight --> Vue
    Predict --> Vue
    Dashboard --> Vue

4.3 技术方案对比

维度规则编排方案(早期)纯LLM方案(当前)
意图识别基于 rules.json 关键词匹配LLM 理解自然语言
SQL 生成规则引擎拼接LLM 直接生成
可视化决策rules.json 映射规则LLM 分析结果决定
代码维护修改 JSON 配置文件修改 System Prompt
灵活性受限于预定义规则灵活应对各种问法
准确性规则覆盖范围内准确依赖 Prompt 质量
调试难度易(看日志)难(需看 LLM 返回)

4.4 纯LLM方案的优势与挑战

mindmap
  root((纯LLM方案))
    优势
      更强的语义理解
        理解各种表达方式
        不依赖关键词
      零规则维护
        无需维护映射规则
        减少配置文件
      自然交互
        像人与人对话
        更好的用户体验
      可扩展性
        新增指标只需更新Prompt
        快速迭代
    挑战
      Prompt工程
        需要精心设计
        持续优化
      输出稳定性
        LLM输出可能不稳定
        需解析容错
      调试困难
        无法精确控制行为
        黑盒特性
      Token成本
        复杂Prompt消耗更多
        API调用费用

第五章:有无本体论的方案对比

5.1 没有本体论时的实现方案

方案一:硬编码规则匹配
flowchart LR
    Input["用户输入"] --> Match["关键词匹配"]
    Match --> Table["查表映射"]
    Table --> SQL["拼接SQL"]
    SQL --> Output["输出结果"]
    
    style Match fill:#ffcccc
    style Table fill:#ffcccc

问题

  • ❌ 每次新增需求都要改代码
  • ❌ 无法处理未预定义的表达
  • ❌ 维护成本高
方案二:纯LLM自由发挥
flowchart LR
    Input["用户输入"] --> LLM["LLM处理"]
    LLM --> Output["输出结果"]
    
    style LLM fill:#ffcccc

问题

  • ❌ LLM不知道数据库结构,会"幻觉"
  • ❌ 可能生成不存在的表名/字段名
  • ❌ 无法保证SQL正确性

5.2 有本体论的方案

flowchart TB
    Input["用户输入<br/>本月销售额是多少?"]
    
    subgraph Ontology["🧠 本体知识库"]
        Schema["db-schema.json<br/>表结构定义"]
        Metrics["datasources.json<br/>指标定义"]
        Rules["rules.json<br/>推理规则"]
    end
    
    Input --> LLM["LLM + 本体知识"]
    Schema --> LLM
    Metrics --> LLM
    Rules --> LLM
    
    LLM --> SQL["正确SQL<br/>SELECT SUM(sales_amount)<br/>FROM daily_order_summary<br/>WHERE date >= date('now','start of month')"]
    
    SQL --> Result["准确结果<br/>销售额: 285.6万元"]

5.3 总结对比

对比项无本体论有本体论
开发效率需要大量硬编码配置驱动,快速迭代
准确率60-70%90%+
可维护性改代码改配置文件
扩展性每次都要改代码增加本体定义即可
用户体验经常出错稳定可靠

本体论的核心价值

让 LLM 从"猜测"变成"理解",从"不稳定"变成"可控"


第六章:总结与展望

6.1 本体论实践的核心收获

mindmap
  root((本体论实践))
    理论层面
      知识的形式化表示
      概念与关系的定义
      推理规则的建立
    技术层面
      三层本体设计
        组件本体
        数据源本体
        映射规则本体
      LLM与本体的结合
      纯LLM方案的演进
    实践层面
      销售大屏Demo
      语义到配置的转换
      动态可视化生成

6.2 技术演进路径

timeline
    title 本体论技术演进
    2023 : 规则编排方案
          : 基于JSON配置
          : 关键词匹配
    2024 : 纯LLM方案
          : System Prompt注入
          : 自然语言理解
    未来 : 混合智能方案
          : 本体+LLM深度融合
          : 自适应推理

6.3 未来优化方向

  1. 混合方案:规则做安全网,LLM做灵活处理
  2. Prompt版本化:管理不同版本的System Prompt
  3. 输出验证:增加LLM输出的结构化验证
  4. 本体重返:将本体论知识更好地融入Prompt

6.4 核心价值总结

 本体论 + AI = 可解释、可推理、可扩展的智能系统