创建知识库提升准确率

更新时间:
复制为 MD 格式

通过配置常用问题模板、术语及业务逻辑,可有效扩充大模型的基础知识。这能显著提升模型对业务需求的理解与转换能力,从而生成更精确的数据查询代码。

功能概述

ChatBI 通过大语言模型理解自然语言问题并生成 SQL 查询。虽然大模型具备强大的通用能力,但在处理业务特定场景时,仍需要补充领域知识以提升准确性。知识库正是为此设计的核心功能。知识库支持以下三种对象:问题模板术语管理业务逻辑

对象类型

解决的问题

典型应用场景

问题模板

固定分析需求的快速响应

高频查询(如"各门店月度销售额排行")、复杂多表关联查询、需要精确字段映射的场景

术语管理

行业/业务专用词汇的准确识别

缩写词(如"MoM"月环比、"YoY"同比)、多语言术语、同义词映射

业务逻辑

业务规则和计算逻辑的标准化

业务指标定义(如"有效订单=订单金额>0且状态=已支付")、数据过滤规则

功能入口

重要

知识库仅限 ChatBI 管理员查看与编辑,不对成员开放。

  1. 进入ChatBI功能入口。

    您需要先登录阿里云,然后通过浏览器访问ChatBI智能数据洞察页面。请根据您的DataWorks资源组、数据集等业务所在地域按需选择。

    华东1(杭州)ChatBI入口

    华东2(上海)ChatBI入口

    华南1(深圳)ChatBI入口

    中国香港 ChatBI入口

    西南1(成都)ChatBI入口

    华北2(北京)ChatBI入口

    华北3(张家口)ChatBI入口

    印度尼西亚(雅加达)ChatBI入口

  2. 管理员在页面左侧导航栏单击知识库,进入知识库页面。

    image

配置知识库

ChatBI的知识库管理对象包括:问题模板术语管理业务逻辑

配置问题模板

进入知识库页面,单击问题模板页签,您可以通过两种方式新增问题模板:

  • 通过页面配置。

    1. 在知识库页面,单击新增,进入新建问题模板页面。

    2. 配置问题模板的相关参数:

      参数

      描述

      问题

      定义在会话中的常用问题,例如:

      门店A中商品B的月度销售额趋势。

      问题中支持以${参数名}格式包含变量,若在此处定义变量,须在参数处补充变量的枚举值或样本值。变量定义如:

      ${shopName}中${commodityName}的月度销售额趋势。

      SQL

      基于问题描述提供能够准确、正确执行的数据查询SQL。 若问题中包含${参数名},则SQL中也需要包含同名参数,例如:

      SELECT shop_name, commodity_name, sales, month
      FROM ads_order_table
      WHERE shop_Name = ${shopName}
      AND commodity_Name = ${commodityName}
      ORDER BY month;

      参数

      若问题和SQL中包含${参数名},请补充参数的枚举值或样本值,例如:

      ${参数名}: [“参数值1”,”参数值2”,”参数值3”]

      数据集

      指定该问题模板对哪些数据集生效。若不指定,则全局生效。

    3. 配置完成,单击保存

  • 通过本地文件批量导入。

    1. 在知识库页面,单击导入新增

    2. 在导入弹窗中,单击下载模板,在模板中填写问题模板模板脚本模板参数数据集。各参数解释与通过页面配置类似。

    3. 拖拽本地文件或单击弹窗中的,选择需要导入的文件。

    4. 添加完成后,单击确认

配置建议

  • 优先配置高频问题:统计用户最常问的 Top 20 问题,优先为其配置模板。

  • 使用参数化提升复用性:将可变部分(如门店名称、商品名称、时间范围)定义为 ${参数名},一个模板可覆盖多个类似问题。

  • SQL 需经过验证:配置前务必在数据集上实际执行 SQL,确保语法正确且返回预期结果。

配置术语管理

进入知识库页面,单击术语管理页签,您可以通过两种方式新增术语:

  1. 通过页面配置。

    1. 单击新增,进入新建术语管理页面。

    2. 配置问题模板的关键参数:

      参数

      描述

      术语

      业务交流和分析中涉及到的常用和专业词汇,例如:月环比。

      别名

      术语的同义词、缩写、全称、多语言翻译等。输入别名后回车,支持添加多个别名。

      数据集

      指定该问题模板对哪些数据集生效。若不指定,则全局生效。

    3. 配置完成,单击保存

  2. 通过本地文件导入。

    1. 在知识库页面,单击导入新增

    2. 在导入弹窗中,单击下载模板,在模板中填写术语别名描述数据集。各参数解释与通过页面配置类似。

    3. 拖拽本地文件或单击弹窗中的,选择需要导入的文件。

    4. 添加完成后,单击确认

配置建议

  • 优先配置业务专用术语:重点添加行业黑话、缩写、内部代号等大模型不了解的词汇。

  • 建立完整的别名体系:一个术语配置中文全称、英文缩写、口语表达等多种形式,例如:"月环比"的别名包括["MoM", "Month over Month", "环比", "月度环比增长率"]。

  • 避免与通用词冲突:不要为常见词(如"订单""用户")配置术语,除非有特殊业务含义。

配置业务逻辑

进入知识库页面,单击业务逻辑页签,您可以通过两种方式新增业务逻辑:

  1. 通过页面配置。

    1. 进入新建业务逻辑页面。

    2. 配置问题模板的关键参数:

      参数

      描述

      业务概念

      业务交流和分析中涉及到的常用概念的名称,例如:有效订单。

      逻辑解释

      对业务概念的名称下一个定义,例如:ord_cnt_1d>0 表示有效订单。

      数据集

      指定该问题模板对哪些数据集生效。若不指定,则全局生效。

      字段

      选择数据集后,可选择数据集下的表中字段,将业务概念跟物理表/字段进行关联。

    3. 配置完成,单击保存

  2. 通过本地文件批量导入。

    1. 在知识库页面,单击导入新增

    2. 在导入弹窗中,单击下载模板,在模板中填写业务概念逻辑解释关联表字段数据集。各参数解释与通过页面配置类似。

    3. 拖拽本地文件或单击弹窗中的,选择需要导入的文件。

    4. 添加完成后,单击确认

配置建议

  • 定义关键业务指标:将核心 KPI 的计算逻辑配置为业务逻辑,如"有效订单""活跃用户""转化率"等。

  • 逻辑解释要具体:不仅说明是什么,还要说明如何计算,例如:"有效订单 = valid_order_flag = 1 且 sales_amount > 0"。

  • 关联物理字段:选择业务逻辑涉及的所有相关字段,帮助模型理解字段间的关系。

管理知识库

ChatBI 管理员可以对创建的知识库进行编辑,与删除等。

编辑知识库对象

  1. 在页面左侧导航栏单击知识库,进入知识库页面。

  2. 在知识库页面的各个对象的页签中,单击操作列的编辑,进入编辑页面。

    各参数解释与配置知识库保持一致。

查看知识库对象

  • 您可以在知识库各个页签顶部的搜索框中输入关键字后回车,对搜索对象进行快捷定位。

  • 您也可以单击某个知识库对象,查看该对象的详情。

删除知识库对象

在知识库各个页签,找到已添加的知识库对象,单击操作列的删除,将该对象从知识库中删除。

场景案例分析

以下通过电商销售分析场景,对比有无知识库配置时 ChatBI 的表现差异,帮助您直观理解知识库的价值。

场景说明

某电商企业使用 ChatBI 分析销售数据,底层表结构如下:

  • 表名:ads_order_table

  • 关键字段:shop_name(门店名称)、product_name(商品名称)、sales_amount(销售额)、order_date(订单日期)、valid_order_flag(有效订单标志,1 表示有效)

案例1:问题模板的价值

用户提问

"华东区旗舰店的 iPhone 手机上个月销售额是多少?"

❌ 没有配置知识库

ChatBI 理解:

  • 可能无法准确识别"华东区旗舰店"对应的字段值

  • "iPhone 手机"可能被理解为包含"iPhone"关键字

  • "上个月"的时间范围可能计算错误

生成的 SQL(可能错误):

SELECT SUM(sales_amount)
FROM ads_order_table
WHERE shop_name LIKE '%华东%'
  AND product_name LIKE '%iPhone%'
  AND order_date >= '2026-02-01'
  AND order_date < '2026-03-01';

问题:

  • shop_name LIKE '%华东%' 可能匹配到错误的门店

  • 没有过滤有效订单

  • 时间范围可能不准确

结果:⚠️ 数据不准确或查询失败

✅ 配置了问题模板

知识库配置:

问题

${region}${shopName}的${productCategory}${period}销售额是多少?

SQL

SELECT SUM(sales_amount) as total_sales
FROM ads_order_table
WHERE shop_name = ${shopName}
  AND product_category = ${productCategory}
  AND order_date >= ${startDate}
  AND order_date < ${endDate}
  AND valid_order_flag = 1;

参数

${shopName}: ["华东区旗舰店","华南区旗舰店","华北区专卖店"]
${productCategory}: ["iPhone","iPad","MacBook","AirPods"]
${period}: ["上个月","本月","上周","本周"]

ChatBI 工作流程:

  1. 匹配到问题模板

  2. 提取参数:shopName="华东区旗舰店",productCategory="iPhone",period="上个月"

  3. 自动计算时间范围:2026-02-01 至 2026-03-01

  4. 使用模板 SQL 生成精确查询

生成的 SQL(正确):

SELECT SUM(sales_amount) as total_sales
FROM ads_order_table
WHERE shop_name = '华东区旗舰店'
  AND product_category = 'iPhone'
  AND order_date >= '2026-02-01'
  AND order_date < '2026-03-01'
  AND valid_order_flag = 1;

结果:✅ 精确匹配,查询准确

案例2:术语管理的价值

用户提问

"华东区旗舰店上个月的 MoM 增长率是多少?"

❌ 没有配置术语

ChatBI 理解:

  • 无法识别"MoM"的含义

  • 可能理解为字段名或直接报错

结果:⚠️ "未找到相关字段 MoM" 或理解错误

✅ 配置了术语管理

知识库配置:

术语

月环比

别名

["MoM", "Month over Month", "环比", "月度环比增长率"]

描述

当月数据相比上月的增长百分比

ChatBI 工作流程:

  1. 识别"MoM"是"月环比"的别名

  2. 理解需要计算 (当月-上月)/上月 × 100%

  3. 生成包含上个月和上上个月数据的查询

生成的 SQL(正确):

WITH monthly_sales AS (
  SELECT
    DATE_FORMAT(order_date, '%Y-%m') as month,
    SUM(sales_amount) as sales
  FROM ads_order_table
  WHERE shop_name = '华东区旗舰店'
    AND valid_order_flag = 1
    AND order_date >= '2026-01-01'
    AND order_date < '2026-03-01'
  GROUP BY DATE_FORMAT(order_date, '%Y-%m')
)
SELECT
  (curr.sales - prev.sales) / prev.sales * 100 as mom_growth_rate
FROM monthly_sales curr
JOIN monthly_sales prev
  ON prev.month = '2026-01'
  AND curr.month = '2026-02';

结果:✅ 正确计算月环比增长率

案例3:业务逻辑的价值

用户提问

"统计华东区旗舰店上个月有效订单的销售额"

❌ 没有配置业务逻辑

ChatBI 理解:

  • 不清楚"有效订单"的具体定义

  • 可能遗漏关键过滤条件

生成的 SQL(不完整):

SELECT SUM(sales_amount)
FROM ads_order_table
WHERE shop_name = '华东区旗舰店'
  AND order_date >= '2026-02-01'
  AND order_date < '2026-03-01';

问题:没有过滤有效订单条件

结果:⚠️ 数据包含无效订单,结果偏大

✅ 配置了业务逻辑

知识库配置:

业务概念

有效订单

逻辑解释

valid_order_flag = 1 且 sales_amount > 0 表示有效订单

关联字段

ads_order_table.valid_order_flag, ads_order_table.sales_amount

ChatBI 工作流程:

  1. 识别"有效订单"是业务概念

  2. 从知识库获取业务逻辑定义

  3. 自动添加过滤条件

生成的 SQL(正确):

SELECT SUM(sales_amount) as valid_sales
FROM ads_order_table
WHERE shop_name = '华东区旗舰店'
  AND order_date >= '2026-02-01'
  AND order_date < '2026-03-01'
  AND valid_order_flag = 1
  AND sales_amount > 0;

结果:✅ 精确统计有效订单销售额

如何验证知识库生效

配置知识库后,您可以通过以下方式验证其是否生效:

  1. 在 ChatBI 会话中提问:使用配置的问题模板中的示例问题进行提问,查看生成的 SQL 是否符合预期。

  2. 测试术语识别:在问题中使用配置的术语别名(如"MoM"),观察 ChatBI 是否能正确理解。

  3. 验证业务逻辑:询问涉及业务概念的问题(如"有效订单"),检查生成的 SQL 是否包含正确的业务逻辑过滤条件。

  4. 对比前后效果:记录配置知识库前后的问答准确率变化,量化评估改进效果。

常见问题

  • Q: 知识库配置后不生效怎么办?

    A: 请检查以下几点:

    1. 确认知识库对象已关联到正确的数据集(或设置为全局生效)

    2. 检查问题模板的 SQL 语法是否正确,参数名是否匹配

    3. 验证用户提问的表述是否与问题模板相似度足够高

    4. 术语和业务逻辑需要在问题中明确提及才会触发

  • Q: 多个知识库规则冲突时如何处理?

    A: ChatBI 会根据以下优先级处理:

    1. 数据集级配置优先于全局配置

    2. 问题模板具有最高优先级,会直接使用模板 SQL

    3. 建议定期检查并合并重复或冲突的配置

  • Q: 知识库会影响 ChatBI 性能吗?

  • A: 不会。知识库是通过检索匹配的方式工作,对问答响应速度影响极小(通常小于 100ms)。合理的知识库配置反而能提升整体效率,因为减少了错误重试和人工干预。