作者:PingCAP联合创始人兼CTO 黄东旭
OpenAI 发布了万众期待的多模态预训练大模型 GPT-4,它被称为迄今为止功能最强大的模型。自从问世以来,ChatGPT 在短短几个月间已经迅速引爆了整个科技领域。我在它刚发布的时候就开始用,现在几乎已经完全离不开它了,包括写文档、写邮件、写代码等工作,基本都在用 ChatGPT 辅助完成。
ChatGPT 可能是这个时代做出的第一次接近 AGI (Artificial general intelligence,通用人工智能) 的产品。从 ChatGPT 的表现来看,它已经不是针对某一个具体细分领域的 AI 应用,而是拥有一些通识的系统。最令我惊讶的是,它其实已经具备了一些逻辑推理的能力,这是之前任何 AI 系统都没有达到的水平。
目前基于 ChatGPT 提供的相关能力已经出现很多非常火的应用方向:
第一个是最简单的翻译。ChatGPT 的翻译能力特别强,你丢给它一篇文章,或者丢给它一段文本,可以让它直接生成一段 summary,或者做特征关键字提取,这是目前一个很典型的应用;
第二个应用是做数据清洗,比如你手上有一份 Excel 或者 CSV 文档,或其他任意的数据。过去做数据质量评估,需要很多文职人员手工去整理。现在,你丢给 ChatGPT 一个 CSV 文件,可以让它直接帮你去做类似纠错或者数据清洗的工作;
第三类应用是我个人比较感兴趣的,是跟开发者相关的东西,比如代码生成,或者像 copilot 这样的应用;
其他还有一些像比如帮你写文章或者帮你写邮件的应用。
ChatGPT 对于数据库技术的重大利好
现在, ChatGPT 背后的这些能力其实都是构建在数据上,这对于数据库或数据存储技术来说,是一个特别大的利好。那它对数据库都提出了哪些新要求呢?我们首先来看下过去大家在使用数据这件事情上会有哪些特别痛苦的点:
第一,数据存储。过去当你面向的是一堆单机数据库,而且是能力很弱的,比如 key value 或者一些支持的 workload 特别有限的数据存储技术,你就会发现很容易会造成一个个数据孤岛。而数据的价值只有在不断交叉或者不断交互的过程中,才能产生更高的价值。数据孤岛导致数据虽然存下来了,但是没有办法从中获取到更多的价值。
假设有这样一个分布式 SQL 数据库,你能够很方便地与不同部分的数据,不同的表做关联交叉分析。这看起来很好,但它带来的挑战是数据存下来后,怎么快速地把数据或者 insight 变成一个在线的 service,这件事情其实过去是 OLTP 数据库干的。过去很长一段时间, OLTP 和 OLAP 是完全分开的两个系统。 OLAP 当然可以做很复杂的 join 分析以及查询。但是你不可能直接拿一个数据仓库或者 OLAP Database 作为在线服务 ,对外实现数据变现。你还是得把它放到另外一个 OLTP 的 Database 里。
HTAP 数据库的出现,解决了两个问题:一,数据能存下来,同时底层是打通的,不用担心会产生很多数据孤岛;二,这些复杂的 query、数据的 insight ,能够直接变成一个 OLTP 或者 online service 对外提供服务。ChatGPT 很难在一个分库分表的数据库上生成正确的 SQL,这有点像巧妇难为无米之炊。但是它可以直接生成 SQL,跑在 HTAP 的 database 上,这样整体的效率就能提升很多,完成一个这样的数据 insight 的应用门槛就会低很多。
第二,数据变现。越来越多的公司都有一个叫做数据中台的部门, CEO 或者业务人员经常跑去跟数据分析师说,我想要某个数据,你帮我去跑 query 查询一下。但这里面又形成了一个矛盾, CEO 或者企业管理者是懂业务的,但是他不懂 SQL,数据分析师懂 SQL,但是又不太懂业务。ChatGPT 这种 AI 的出现,对于管理者来说,就相当于有了一个贴身的智能助理。你可以直接用自然语言和它说,我有一个决策要做,你先在 database 帮我把数据跑一遍,看看我问的问题的结果是什么。相当于直接将数据变现的门槛给降得很低,这对于数据中台或者数据分析师的行业可能会比较冲击。
我们如何将 ChatGPT 融入 TiDB?
对我来说,ChatGPT 最大的挑战其实是想象力。我们应该如何去使用它,怎么把它的能力尽可能地在不同行业里放大,这是我最近一直在想的事情。
ChatGPT 对我们这种基础软件公司来说最大的意义在于,原先很多普通人用不了这个软件,只能通过程序员或者 DBA 去操作。但现在 ChatGPT 一下把数据库的使用门槛变成了任何人都可以使用。你只要能够清楚地描述要干什么,它就能够在数据里帮你提取 insight。从这个角度看,ChatGPT 是一个具有非常深远意义的产品形态,所以我们第一时间就把它的能力集成到了 TiDB Cloud 服务里面——发布了一个自然语言转 SQL 工具 Chat2Query。
现在,大家都在讨论 ChatGPT,但事实上你可以认为 ChatGPT 只是 OpenAI 的一个 Demo,其背后的模型应该是 GPT 3.5 的一个大语言模型。 OpenAI 把这些不同的语言模型通过 Open API 的方式暴露给全世界所有的开发者,并根据你的调用收取费用。开发者就可以基于这些 API 去做自己的应用,我们就是把它的 API 用到了 TiDB Cloud 里,封装在我们的产品后面。
Chat2Query 一经推出就非常火,很多开发者在上面构建了一些非常有意思的应用。一方面,它帮助 engineer 提升了不止一个数量级的开发效率;另一方面,它结合了 ChatGPT 的能力能够自动帮你写出 SQL,这使得整个数据库软件的形态都发生了变化。
熟悉我们的朋友大概都知道,我们去年做了一个叫 OSS Insight 的开源社区数据分析平台。它最近推出了一个新功能 Data Explorer。你可以用自然语言去向它问问题,系统会自动给你答案。比如你可以问能不能为某个具体的 GitHub ID 生成一个 summary 报告,看这个 ID 平时是在贡献代码还是在提交 issue,或是只点赞。 过去通过写 SQL 当然也可以做这件事情,但是 Data Explorer 功能可以让你用自然语言去问这个问题。它通过 OpenAI 的 API 将自然语言转变成一个等价的 SQL,用这个 SQL 去背后的 TiDB 数据库中进行查询。
其实,自然语言生成 SQL 也不是什么特别新鲜的事儿,以前就有过很多的相关研究论文。这件事最让我感到震惊的是,ChatGPT 并不是一个专门针对解决自然语言到 SQL 转换问题而设计的一套系统,但是它产生的结果出奇的好。
你只要告诉它一些简单的 prompt 或是一些 hint,比如这张表大概长成什么样子,注意一些 rules 等。同时还要提醒它在写 SQL 时,最好用最佳实践。通过这些简单的 prompt ,就能让 ChatGPT 生成非常高质量的 SQL。它生成的 SQL 其实已经超越了很多专门为解决此类问题而设计的系统。
而且你会发现,我告诉 ChatGPT、OpenAI 系统的这些 prompt 信息里,并没有提供更多的信息增量。这是什么意思呢?就像你教一个小朋友做数学题,你教他的并不是怎么解具体的问题,而是告诉他应该好好审题,并再仔细想一想,这一次解题需要先去解答哪些子问题。我们只是在告诉系统如何思考问题的方式,系统就能够以一个更高的成功率去回答你想要问的问题。
未来,可能会产生一个新职业——Prompt engineering。在使用 OpenAI 的这些 ChatGPT 能力的时候,其实是有一定技巧的,很多人在使用 ChatGPT 的时候会觉得它经常胡说,但其实我们在用 OpenAI 根据表结构信息生成 SQL 时,不能简单地告诉它生成满足问题的 SQL,而应该在中间的上下文里提供很多的提示词。
举个我用过的几个 Prompt 例子:第一,我让它想象一下自己是一个 Python 编译器,或者想象一下是一个程序员,“下面你的任务是把这个问题改写成一段 Python 的程序”;第二,让它想象一下自己是一个 Python 解释器,把刚才生成的代码放到自己假想的解释器里去运行,最后把解释器返回的结果返回来。最后你会发现,当你把上下文 Prompt 一列进去,它的回答正确率大大提升,这个就是 Prompt engineering 一个很有趣的例子。Prompt engineer 本质上是在教它一些思考方式,你只要告诉这个机器 let's think step by step,正确率就能提升很多。
AI+Serverless+HTAP,数据库发展新里程碑
过去这几十年,数据库只有一种形态,就是增删改查,写 SQL。对于计算机软件来说,每一次人和软件的交互方式的变化都会促成一个巨大的革命,或者是一个变革,ChatGPT 的出现就像互联网的发明,或者蒸汽机的发明一样,必然会引发一次变革。AI+Serverless+HTAP,这几个东西融合在一起将成为数据库发展中非常重要的里程碑,它会改变接下来数据库软件本身的形态,甚至是商业模式。
ChatGPT 刚出来的时候,大家第一反应都会觉得它像搜索引擎,但我觉得不是,它并不是搜索引擎,它更像基础设施。ChatGPT 本身这个 demo 是用一个 chat board 的形式呈现在人们面前,但它真正有意义的是封装在这些应用之下的能力。未来几年,不管你做什么行业,你都要去想一想怎么去跟 AI 进行结合,不要觉得它只是 IT 圈的事,我觉得这是任何行业都有的机会。
我们千万不要低估大语言模型在未来会对人类社会产生的影响,它不再是简简单单的一个聊天机器人,它会深刻地改变所有行业。比如给程序员做辅助,它能够让一个很强的程序员的生产力提升 10 倍、 20 倍。我现在用 ChatGPT+ Copilot 后,基本不再手写太多代码。我只要把问题描述清楚,它就能够把这些代码生成出来,我最多在上面再做一些微调。虽然它不是百分之百正确,但已经节省了我百分之七八十的工作时间。这里面最核心的一点就是我们要放弃掉一个执念—— AI 不如人类强的固有观念。过去很长一段时间一谈到 AI,可能就是调调参,做个推荐系统。但现在以 ChatGPT 为代表的产品已经能实现非常多的功能,我们不能再用传统的眼光去看待这个事物。
ChatGPT 只是个开始,接下来肯定会有更多更强的产品,在通向真正的 AGI 这条路上涌现。