产品设计|对话式 chatBI 系统建设(上篇)
用大语言模型打造对话式ChatBI系统,正在真正降低数据分析的门槛,让数据分析这件事变得更智能、更亲民。这篇文章的核心话题,正是围绕这个方向展开的——包括LLMs在ChatBI系统中的应用、产品设计中的关键问题与解法、以及知识库管理和多轮对话的重要性。
先说说背景。借助LLMs大模型的能力,通过NLP自然语言理解技术,业务部门现在可以直接用对话的方式获取数据,系统自动生成BI图表——折线图、饼图统统不在话下。对比从前那种靠拖拉拽自助生成图表的方式,大模型赋能后,数据分析的门槛又往下降了一大截,直观感受就是“更聪明了”。
在研究了一下“腾讯云ChatBI”和“网易数帆ChatBI”之后,结合对LLMs技术的理解,从产品经理的视角,试着完成了一套产品设计。
先看看下方2张效果图——不得不说,结合LLMs之后的产品效果确实很惊艳:一句话就能出结果。
先抛几个问题,然后再给出产品方案:
- 用户输入的需求不明确怎么办?
- 如何让LLMs生成准确的SQL数据查询语句?
- 技术路线:Text2SQL还是Text2DSL?
- 系统如何自动化选择展示图表类型?
- LLMs是否应该主动处理“数据建模”任务?
穿插一张趣图:
(我家傻喵在看我写公众号...笑屎!你它喵看得懂不?)
整体业务流程
DataNotes
- 用户输入自然语言
- 用户意图识别
- RAG知识召回
- LLMs组装SQL查询语句
- 发起数据查询
- 自动生成图表展示
如何识别用户意图
DataNotes
先罗列出用户可能的提问方式:
| 提问 | 提问分析 |
| 门店销量是多少? | 缺少“时间周期”、“分析维度(例如要去统计哪些区域门店?)” |
| 华东区域本月业绩完成情况? | 在数据库中,只有“销量”、“订单数量”,并不存在“业绩”这类词汇 |
| 华东区域去年支出成本是多少? | 非别名问题。数据库中不存在“成本”词汇,但有“销售额”、“利润” |
| 上个月大促活动期间销售额一共多少? | “大促活动”的时间是几号到几号? |
针对这些情况,给出产品解决方案:
提问:“门店销量是多少?”——通过“多轮对话”功能去追问用户,直到采集明确的需求信息。
提问:“华东区域本月业绩完成情况?”——通过“RAG知识库”添加别名,将“业绩”映射为“销量”。
提问:“华东区域去年支出成本是多少?”——通过“RAG知识库”添加计算公式:成本=销售额-利润。
提问:“上个月大促活动期间销售额一共多少?”——通过“RAG知识库”添加大促活动的时间范围信息。
在这个产品方案中,一共引入了两个功能:
知识库管理
多轮对话
构建RAG知识库管理
DataNotes
知识库管理,是为了解决LLMs通用型不足的短板。企业中存在大量业务专有名词和知识,为了让LLMs准确理解这些业务并精准识别用户意图,引入“知识库管理”功能非常必要。
一般而言,知识库管理的数据类型包括:结构化数据和非结构化数据。在产品设计时,可以考虑允许人员导入PDF格式的业务知识,或者按结构化形式创建录入表格数据,两种形式均可。
以结构化知识为例:
- 知识ID:rag_001
- 知识名称:大促活动时间范围
- 知识解释:是指2024年5月2日至2024年5月12日
- 提问参考:2024年5月份大促活动期间销售额一共多少?
多轮对话明确用户意图
DataNotes
为了完善用户需求信息,在交互上采用“多轮对话”形式,让需求变得更加完整。多轮对话的过程目标是“完善用户需求”,核心目的是“精准识别用户意图”。
从数据角度来看,多轮对话最终产出的结果包括:
- 明确的分析主体
- 明确的分析维度
- 明确的时间范围
- 明确的意图分类(按指标展示还是图表展示)
“上月华东地区门店的销售额是多少”——这是多轮对话的理想结果。
- 明确的分析主体:门店
- 明确的分析维度:华东地区门店
- 明确的时间范围:上月
- 明确的意图分类:销售额指标展示