PingCAP 唐刘:一个咨询顾问对 TiDB Chat2Query Demo 提出的脑洞
导读
近日,TiDB Cloud 发布了 Chat2Query 功能,在 TiDB Cloud 上通过自然语言提问,即可生成相应的 SQL,通过 TiDB Cloud 对上传的任意数据集进行分析。Gartner 也在一份有关 ChatGPT 对数据分析影响研究的报告中提及了 PingCAP 的 Chat2Query 产品。
本文分享了唐刘在展示 Chat2Query demo 过程中的一些思考。探讨了想打造一款好的产品,从用户角度出发的思考方式以及与用户交流的重要性:当我们向用户展示产品能力时,我们往往习惯站在技术的角度出发,然而当用户并不具备完备的相关技术背景时,我们需要换位思考,了解用户的工作流程和思维方式,才能真正让用户理解和接受我们的产品。
最近一段时间,一件非常让我自豪的事情就是我们在 TiDB Cloud 上面发布了基于 OpenAI 的智能数据探索功能 - Chat2Query。见到朋友,我都会非常开心地跟他们去推荐这个功能,跟他们现场演示如何使用,每当看到他们 「aha」 的表情,这个成就感还是挺强的。

但是,我推荐的朋友几乎全是有技术背景的人,所以当我跟一位不懂技术的朋友进行推荐的时候,我才突然意识到,我们的这款产品离好看以及好用,还有很长的路要走。
因为我的朋友是一位咨询顾问,她对于世界 500 强的财务表报数据非常感兴趣。刚好,我手上有一份今年的财务数据,于是就开始给她演示如何在 Chat2Query 里面,智能对数据进行洞察。
/ 啥,什么是 Database? /
于是,我先开始上传数据,到了导入数据的面板,我上传完成文件之后,我突然意识到一个很好玩的事情,而恰恰在同时,我的朋友问了一个问题也印证了这个事情。

因为我的朋友不太懂技术,更别提懂数据库了,于是她问了我一个看起来很傻的问题 - 「什么是 Database?」
对的,这个问题看起来非常的低级,什么是 Database?对于一个做了这么多年,用了这么多年数据库的我来说,这问题貌似很简单。但在那个时候,我突然明白,在我看来非常显然的一个单词,对于很多用户来说是完全不可理解的。也许有人会说,我的朋友压根不是我们产品的目标客户,没准是的,但从另一方面来说,有多少人会立刻理解我们在上图那个操作?或者我们能不能将上面那个设置的步骤变得更加的简单和好用?
/ 用户的心智模型 /
于是我就跟我朋友讨论:“你期望如何来使用 Chat2Query?”我朋友回答道:“我是一个重度 Excel 用户,对我来说,我要做的就是上传 Excel 文件,然后我就能对这个 Excel 进行分析了。”
这里可以看到,我的朋友不知道什么是 Database,但其实她日常工作的 Excel,其实跟 Database 的概念是能联系上的,一个 Excel 就是一个 Database,而 Excel 里面的 Sheet 就是 Table。所以如果我朋友要用这个产品,一个更直观的方式就是她上传好一个 Excel 文件之后,我们默认的就按照这个文件名给她建立一个 Database,为 Excel 文件里面的每个 Sheet 建立对应的 Table,根本不需要暴露任何的 Database 和 Table 的概念。
所以一开始,如果我跟我朋友先从 Excel 探讨,用她之前的知识体系来做映射,没准她会更容易理解我们产品。如果一开始,我们就能很好的支持 Excel 相关的概念和操作,没准对我朋友就是一个替换 Excel 的首选了。
/ 好看又要好用 /
数据导入成功之后,我们进入到 Chat2Query,自然我知道,我的朋友不会使用,即使 get started page 里面已经说了可以使用 -- 然后再带上指令,触发 AI 的功能,自动生成 SQL,但这个仍然是不直观。于是我就问我的朋友,你期望如何分析你上传的数据,我的朋友说的很直观,给我打开了 Google 的主页。朋友说到,一个产品,能打动她,一个很重要的事情就是好看以及简单,Chat2Query 整个的界面交互,让她是没有太多的意愿使用的,上手难度太高,也不好看。
对我朋友来说,她需要更加简单易用的交互界面,在她的认知里面,我们这个智能数据洞察的功能就应该跟 Google 一样,一个搜索框,问问题,得到答案,然后生成 Excel 给她做后面的分析。
/ 用户多层需求 /
我两继续讨论如何才能让她更好的使用 Chat2Query,毕竟我朋友是重度 Excel 用户,我们如何能给她更大的价值。我朋友想了想,如果 Chat2Query 能做到三层,那么将会很吸引她:
- 第一层 - 处理她上传的私有数据,例如多个 Excel 文件。相比于简单的 Excel 处理,Chat2Query 可以在成百上千的 sheet 中帮助她获得一些洞察。
- 第二层 - 对她在 TiDB cloud 上的私有数据以及能与 PingCAP 在 TiDB cloud 上托管的公开数据集进行查询分析。
- 第三层 - 她可以将她在其他服务商的账号密码给我们,让 Chat2Query 能在第二层的基础上对她在其他服务商的数据进行联合查询分析。
当我朋友跟我说这些的时候,我其实内心是很惊讶的。我最近在规划 TiDB Cloud 未来的技术架构方向,就是在思考通过构建一个弹性的计算引擎,以及数据 meta 的服务,来让用户非常方便的做到上面 3 层的操作。我非常高兴看到用户有类似的需求。
然后我的朋友又继续说到,你这个能不能有历史记录的功能,能将我之前的洞察结果保存下来,甚至有没有对比功能,对不同时间的查询结果进行对比分析。不过后来我们讨论到,这个没准在外面的工具做可能更好,所以 Chat2Query 最好要提供一个 API 服务出去。实话,我这个不懂技术的朋友能想到 API,以及对 API 收费,以及对接其他的 BI 工具,还是挺让我吃惊的 😃
/ 写在最后 /
这次与我的朋友的演示让我意识到了几点重要的事情:
- 真正试着站在用户的角度思考问题是很重要的。我们需要了解用户平常使用的工具和完成的工作,并理解他们的思维方式。
- 产品不仅要好看,也要好用。这对研发工程师来说是一个巨大的挑战,但幸运的是,这个世界上有很多这样的产品,我们可以学习借鉴。
- 用户是最好的老师,与用户交流能获得非常不同的对产品的洞察。
最后,我希望我的朋友能成为我们的标杆用户,她非常愿意接受这个角色。
BTW, 本文有一些文本使用了 ChatGPT 进行了润色。
最后,如果你想体验 TiDB Cloud + AI 的能力,欢迎点击尝试 TiDB Cloud,也希望收到更多来自大家的反馈。
相关文章:
PingCAP 唐刘:一个咨询顾问对 TiDB Chat2Query Demo 提出的脑洞
导读 近日,TiDB Cloud 发布了 Chat2Query 功能,在 TiDB Cloud 上通过自然语言提问,即可生成相应的 SQL,通过 TiDB Cloud 对上传的任意数据集进行分析。Gartner 也在一份有关 ChatGPT 对数据分析影响研究的报告中提及了 PingCAP 的…...
力扣-销售分析III
大家好,我是空空star,本篇带大家了解一道简单的力扣sql练习题。 文章目录前言一、题目:1084. 销售分析III二、解题1.正确示范①提交SQL运行结果2.正确示范②提交SQL运行结果3.正确示范③提交SQL运行结果4.正确示范④提交SQL运行结果5.其他总结…...
U-Boot 之七 详解 Driver Model 架构、配置、命令、初始化流程
U-Boot 在 2014 年 4 月参考 Linux Kernel 的驱动模型设计并引入了自己的 Driver Model(官方简称 DM) 驱动架构。这个驱动模型(DM)为驱动的定义和访问接口提供了统一的方法,提高了驱动之间的兼容性以及访问的标准性。 …...
大数据算法重点
1 大数据亚线性空间算法 场景:用二进制存储一个数字N,需要log(N)的空间 问题:如果N特别大而且这样的N又特别的多,该怎么办呢? 思路:减少一些准确性,从而节省更多的空间。 解决办法:使…...
【Eclipse】The import xxxx cannot be resolved 问题解决
在Eclipse使用过程中,某一个类明明存在,但是使用import导入时,却总是提示The import xxxx cannot be resolved的错误,解决办法如下: 点击Project->Clean......
LinkWeChat系统Docker版部署注意事项
具体部署手册:https://www.yuque.com/linkwechat/help/ffi7bu注意事项:启动类配置文件路径需要修改,各个模块启动类原配置如下:.properties("spring.config.name:bootstrap", "config/run/bootstrap.yml")各个…...
【高数】不定积分之有理函数的积分
文章目录前言有理函数积分的通用解法有理函数的特殊解法前言 这个专栏开始更新高等数学的解题方法,本专栏没有特别强调概念,主要是让大家熟悉考研中的一些题型以及如何求解 关键步骤用蓝色高亮提示 总结方法用红色高亮提示 注意事项用绿色高亮提示 希望…...
Java——数组
目录 前言 一、数组的定义 二、数组声明和创建 三、三种初始化及内存分析 Java内存分析 三种初始化 静态初始化 动态初始化 数组的默认初始化 数组的四个基本特点 四、下标越界及小结 五、数组的使用 For-Each循环 数组作方法入参 数组作返回值 六、二维数组 七…...
产品分析|虎扑APP
不同于传统的体育新闻门户网站,虎扑以篮球社区起家,在经历了从体育论坛到体育新闻网站的发展后,又逐渐回归社区发展。 目前,虎扑汇聚了大量的男性用户,俨然成为了“互联网直男的自留地”。特立独行的发展方向使得虎扑不断发展壮大,同时也使得虎扑逐渐触碰到了行业天花板。…...
有限差分法-二维泊松方程及其Matlab程序实现
2.2 偏微分方程的差分解法 2.2.1 二维泊松方程 考虑区域 Ω \Omega Ω 上的二维泊松问题: { − ( ∂ 2...
【设计模式】6.代理模式
概述 代理模式:为一个对象提供一个替身,以控制对这个对象的访问。即通过代理访问目标对象 这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。 被代理的对象可以是:远程对象、创建开销大的对象或需要安全…...
SRC挖掘之Access验证校验的漏洞挖掘
漏洞已修复,感谢某大佬的知识分享。 任意用户密码重置->可获取全校师生个人mingan信息 开局就是信息收集。 对于挖掘edu的信息收集 1.可尝试谷歌搜索语法,获取学号信息 2. 旁站的渗透获取 3. 学校的贴吧获取(大部分都是本校学生) 当然我就是闲&a…...
GG-21 100V 5A逆功率继电器
1 用途 GG-21逆功率继电器在出现逆功率时,从电网中断开交流发电机。 2 概述 逆功率继电器是基于感应式原理(具有旋转磁场)而工作。 继电器导磁体由两个磁路系统组成:上磁路系统和下磁路系统。电流线圈安装在上磁路系统中,它由接在发电机某相的…...
MyBatis中#{}和${}的区别
目录 前言 1、处理参数的方式不同 2、${}的优点 3、SQL注入问题 4、like查询问题 前言 #{}和${}都可以在MyBatis中用来动态地接收参数,但二者在本质上还是有很大的区别。 1、处理参数的方式不同 ${} :预编译处理 MyBatis在处理#{}时,…...
ElementUi的使用
ElementUi使用说明 element ui安装与配置 npm i element-ui –S项目入口文件main.js 导入 Element-UI 相关资源// 导入组件库 import ElementUI from element-ui; // 导入组件相关样式 import element-ui/lib/theme-chalk/index.css; // 配置 Vue 插件 Vue.use(ElementUI);文档…...
termux手机端安装mysql(MariaDB)
目录1 下载MariaDB2 配置MariaDB3 启动MariaDB服务器查看进程pid杀死进程4 登录 Mysqltermux用户登录MySQLroot用户登录MySQL5 配置 MariaDB 远程登录创建一个可远程登录的用户:用户授权:刷新授权:6 停止 MariaDB 服务器7 可选,但…...
Python枚举类定义和使用(详解版)
一些具有特殊含义的类,其实例化对象的个数往往是固定的,比如用一个类表示月份,则该类的实例对象最多有 12 个;再比如用一个类表示季节,则该类的实例化对象最多有 4 个。 针对这种特殊的类,Python 3.4 中新…...
京东HBase异地多活调研
京东HBase平台架构 HBase Replication原理 HBase的Replication是基于WAL日志文件的,在主集群中的每个RegionServer上,由ReplicationSource线程来负责推送数据,在备集群的RegionServer上由ReplicationSink线程负责接收数据。ReplicationSourc…...
【LeetCode】剑指 Offer 18. 删除链表的节点(题目一) p119 -- Java Version
题目链接:https://leetcode.cn/problems/shan-chu-lian-biao-de-jie-dian-lcof/ 1. 题目介绍(18. 删除链表的节点) 给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。 返回删除后的链表的头节点。 注意&…...
SpringMVC异步请求
背景 Tomcat等应用服务器的连接线程池实际上是有限制的;每一个连接请求都会耗掉线程池的一个连接数;如果某些耗时很长的操作,如对大量数据的查询操作、调用外部系统提供的服务以及一些 IO 密集型操作等,会占用连接很长时间&#…...
uniapp 对接腾讯云IM群组成员管理(增删改查)
UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...
Vue记事本应用实现教程
文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...
如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...
【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...
ffmpeg(四):滤镜命令
FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
