DataWorks Copilot:大模型時代數(shù)據(jù)開發(fā)的新范式
DataWorks 是阿里云一站式智能化數(shù)據(jù)開發(fā)與治理平臺,支持搭配MaxCompute/Hologres/AnalyticDB/StarRocks/EMR/CDH 等大數(shù)據(jù)引擎,為企業(yè)構(gòu)建數(shù)據(jù)倉庫、數(shù)據(jù)湖以及湖倉一體(Lakehouse)現(xiàn)代數(shù)據(jù)架構(gòu)提供數(shù)據(jù)平臺產(chǎn)品解決方案。
作為阿里巴巴大數(shù)據(jù)平臺建設者,DataWorks 從 2009 年起不斷發(fā)展和沉淀阿里巴巴大數(shù)據(jù)建設方法論并產(chǎn)品化,在阿里內(nèi)部每月有超過50000 名員工在使用 DataWorks 生產(chǎn)數(shù)據(jù)和消費數(shù)據(jù)。DataWorks 在阿里云上與數(shù)萬家政務/金融/零售/互聯(lián)網(wǎng)/能源/制造等客戶攜手,助力企業(yè)數(shù)字化轉(zhuǎn)型升級,目前 DataWorks 云上日均調(diào)度任務實例規(guī)模已經(jīng)超 1700 萬。
隨著大模型的不斷發(fā)展,大模型在數(shù)據(jù)產(chǎn)品中的應用也逐步得到了驗證和落地,DataWorks 也于去年正式推出了 Copilot 產(chǎn)品,以幫助數(shù)據(jù)開發(fā)工程師和數(shù)據(jù)分析師提升SQL 開發(fā)和分析的效率和體驗。今天,我想給大家介紹一下 DataWorks Copilot 近期的一些產(chǎn)品進展。
一、阿里云 DataWorks 產(chǎn)品簡介
DataWorks 是阿里云一站式智能化數(shù)據(jù)開發(fā)與治理平臺,DataWorks 是一站式數(shù)據(jù)平臺的倡導者和踐行者。DataWorks 支持搭配阿里云大數(shù)據(jù)計算服務 MaxCompute,實時數(shù)據(jù)倉庫 Hologres、AnalyticDB、StarRocks,開源數(shù)據(jù)湖及湖倉一體平臺 EMR、CDH 等計算引擎,提供了以下產(chǎn)品服務:
- 數(shù)據(jù)集成:支持離線數(shù)據(jù)同步、實時數(shù)據(jù)同步,同時支持整庫數(shù)據(jù)同步、分庫分表數(shù)據(jù)同步、全增量一體化數(shù)據(jù)同步、數(shù)據(jù)入湖等場景。
- 數(shù)據(jù)開發(fā)工具鏈:支持數(shù)據(jù)建模、數(shù)據(jù)開發(fā)、任務調(diào)度和任務運維監(jiān)控,DataWorks 自研的大規(guī)模、高性價比、全托管免運維的任務調(diào)度引擎,能夠保障企業(yè)大數(shù)據(jù)生產(chǎn)的安全性和穩(wěn)定性,讓企業(yè)專注于數(shù)據(jù)業(yè)務本身。
- 數(shù)據(jù)治理工具鏈:支持數(shù)據(jù)地圖、數(shù)據(jù)質(zhì)量、數(shù)據(jù)安全和數(shù)據(jù)資產(chǎn)治理,DataWorks 提供了主動式、自動化的數(shù)據(jù)治理工具,幫助企業(yè)主動發(fā)現(xiàn)數(shù)據(jù)問題、自動化處置數(shù)據(jù)問題并實時評估數(shù)據(jù)健康程度,讓企業(yè)數(shù)據(jù)治理可持續(xù)發(fā)展和落地。
- 數(shù)據(jù)消費工具鏈:支持智能數(shù)據(jù)洞察,通過 AI 增強分析幫助企業(yè)快速獲得數(shù)據(jù)見解;支持數(shù)據(jù)服務,通過低代碼化數(shù)據(jù) API 構(gòu)建與編排服務加速企業(yè)數(shù)據(jù)應用和數(shù)據(jù)流轉(zhuǎn)。
進入大模型時代,一站式數(shù)據(jù)平臺為全面智能化創(chuàng)造了條件,通過 Data + AI 雙輪驅(qū)動,有效提升了企業(yè)數(shù)據(jù)價值的獲取效率。在大模型應用過程中,Prompt Engineering 環(huán)節(jié)尤為重要,一站式數(shù)據(jù)平臺可以提供全面的數(shù)據(jù)支持和豐富的上下文信息,利用大模型 In-Context Learning 的能力,可以幫助大模型更好地理解企業(yè)業(yè)務知識;同時,借助 AI Agent 能力,可以實現(xiàn)通過統(tǒng)一的自然語言交互界面與圖形交互界面相結(jié)合的方式,讓一站式數(shù)據(jù)平臺內(nèi)部的子產(chǎn)品模塊做到更好的協(xié)同,從而實現(xiàn)一站式數(shù)據(jù)平臺的全面智能化,為企業(yè)數(shù)據(jù)開發(fā)工程師、數(shù)據(jù)分析師和業(yè)務人員在數(shù)據(jù)生產(chǎn)和數(shù)據(jù)消費提供更好的用戶體驗和更高的工作效率,最終幫助企業(yè)進一步實現(xiàn)“降本增效”。
二、DataWorks Copilot 產(chǎn)品演進方向
目前 DataWorks Copilot 主要有兩個演進方向,一個方向是智能 SQL 編程助手,輔助 SQL 編程,支持 NL2SQL 及 SQL 代碼補全;另一個方向是 AI Agent,提供 LUI(自然語言用戶界面),以提升產(chǎn)品功能操作的便捷性和用戶體驗。本文主要介紹 DataWorks Copilot 在智能 SQL 編程助手方向上的產(chǎn)品進展與產(chǎn)品能力。
三、DataWorks Copilot 之 NL2SQL
NL2SQL(自然語言生成 SQL)并不是一個新的產(chǎn)品方向,在大模型出來之前已經(jīng)發(fā)展了很多年,但一直沒能取得突破性進展,只能在特定場景使用,并且需要做大量的事先數(shù)據(jù)準備和知識圖譜構(gòu)建。大模型的出現(xiàn),讓 NL2SQL 迎來了曙光,極大提升了 NL2SQL 的普適性,簡化了 NL2SQL 的實現(xiàn)路徑,讓 NL2SQL 具備了廣泛落地應用的可能。DataWorks Copilot 通過大模型技術(shù),在 NL2SQL 方向經(jīng)過一年多的實踐,我們在以下幾個應用場景取得了較好的落地效果。
1. 簡單數(shù)據(jù)查詢
數(shù)據(jù)查詢,即通過自然語言生成 SQL,再執(zhí)行 SQL 以查詢數(shù)據(jù),也就是我們?nèi)粘Kf的“取數(shù)”場景。目前 DataWorks Copilot 在單表數(shù)據(jù)查詢場景已經(jīng)有不錯的效果,比如“按日志和行為分組統(tǒng)計用戶數(shù)量和商品數(shù)量,行為包含瀏覽和加購,日期從 20240101 到 20240331”,Copilot 能夠準確理解語義和數(shù)據(jù)表的 Schema 信息并生成正確的 SQL 語句。這個十分適合數(shù)據(jù)分析師、業(yè)務人員日常實現(xiàn)通過“說話”就可以便捷地查詢和獲取數(shù)據(jù)。
2. SQL 優(yōu)化與轉(zhuǎn)換
DataWorks Copilot 可以幫你實現(xiàn) SQL 優(yōu)化和轉(zhuǎn)換,這其實是一個 SQL 生成 SQL 的場景,比如你有一個 SQL 執(zhí)行后的結(jié)果是一組多列的數(shù)據(jù)集,你想把這個數(shù)據(jù)集轉(zhuǎn)為多行的數(shù)據(jù)集,以便用于繪制出一個餅圖,你只需要選中當前的 SQL 然后對 Copilot 說“修改 SQL,將其結(jié)果從列轉(zhuǎn)置為行”,DataWorks Copilot 就會幫你生成列轉(zhuǎn)行的 SQL。有了 DataWorks Copilot,你不用記憶復雜的 SQL 技巧,只需要用自然語言說出你心里想要的效果,Copilot 可以自動幫你改寫和優(yōu)化 SQL,讓你事半功倍。
3. SQL 語法查詢與講解
DataWorks Copilot 也是一個非常聰明的、隨叫隨到的 SQL 學習小助手,它可以幫助你查詢 SQL 語法,讓你學習 SQL 不用再去翻閱幫助文檔、用搜索引擎或者求助別人。DataWorks Copilot 根據(jù)你問的 SQL 問題進行詳細的講解,還會附帶 SQL 示例幫助你更好的學習理解。
4. 函數(shù)查詢
與語法查詢類似,DataWorks Copilot 還可用于查詢函數(shù),它同樣會給出包含函數(shù)功能介紹、輸入輸出參數(shù)和 SQL 示例在內(nèi)的信息,幫助你快速理解函數(shù)。
5. 功能咨詢
有時候,你想要通過 SQL 實現(xiàn)一個功能,但你既不知道要用哪種 SQL 語法也不知道用哪個函數(shù)來實現(xiàn),這時,你只需要對 DataWorks Copilot 直接用自然語言描述你的訴求(Tips:盡可能的直白描述你想要達到的功能效果),例如“一張表有一個自動遞增的 id 字段,不連續(xù),如何按頁獲取 id 的范圍”,Copilot 就會直接給出建議并幫你寫好 SQL 示例。
6. 注釋生成
我們通常自己懶得寫代碼注釋,同時又討厭別人的代碼不寫注釋,有了 DataWorks Copilot 這個“矛盾”就可以輕松化解。Copilot 可以一鍵為你的 SQL 代碼生成注釋,比如批量為你的 DDL 語句生成字段的 Comment,你只需要進行簡單的微調(diào)即可,這將極大地提高你的 SQL 可讀性和開發(fā)效率。
7. SQL 解釋
DataWorks Copilot 不僅可以為 SQL 注釋,也可以解釋 SQL。如果你是一名略懂些 SQL 但又不十分精通 SQL 的同學,在工作中經(jīng)常要向數(shù)倉工程師或者 BI 同學提“取數(shù)”的需求,對方給你一條復雜 SQL 語句,你似懂非懂但又想改下 SQL 以用于別的場景,這個時候就可以讓 DataWorks Copilot 來解釋一個這個 SQL。Copilot 會耐心的將這個復雜 SQL 拆解為多段子查詢,并逐一講解其中的功能,介紹其中使用到的函數(shù),幫助你理解這個 SQL 寫法和用途,讓你快速掌控這個 SQL 語句。
8. SQL 一鍵糾錯
即使是專業(yè)的數(shù)據(jù)工程師也會在 SQL 開發(fā)過程中出現(xiàn)各類 SQL 錯誤,例如缺少標點、括號、函數(shù)使用不正確、語法不完整等等。這些場景,DataWorks Copilot 都可以幫助你快速發(fā)現(xiàn)問題,糾正錯誤,并生成正確的 SQL,從而大大降低你自己尋找錯誤和糾正 SQL 的時間。
以上是 DataWorks Copilot 在 NL2SQL 方向上的 8 種適用場景和能力,當然,DataWorks Copilot 可能還會很多讓人意想不到的點,你可盡情發(fā)揮你的想象,通過 Prompt 讓 Copilot 為你生成 SQL,讓你從繁復的 SQL 編程中提升效率,有更多的時間來思考業(yè)務本身。
四、DataWorks Copilot 之 SQL 代碼補全
代碼補全是編程類 Copilot 的主要場景和能力。目前市場上主流的編程類 Copilot 往往是對 Java、Python 等高級語言的支持,對 SQL 支持的好的并不多見。眾所周知,SQL 代碼補全往往比 Java、Python 類高級語言的代碼補全更具挑戰(zhàn)性,主要原因有以下幾個方面:
- 上下文和環(huán)境的依賴性:SQL 代碼不是獨立存在的,而是依賴于數(shù)據(jù)表的元數(shù)據(jù)信息以及表與表之間的關(guān)聯(lián)關(guān)系。
- SQL 語義多樣性:實現(xiàn)同一種查詢結(jié)果,可以有多種 SQL 寫法,如何實現(xiàn)“最佳”寫法存在挑戰(zhàn)。
- 語法簡潔但高度專業(yè)化:SQL 語法簡潔但每一個關(guān)鍵字、函數(shù)或語法都有特定的含義,大模型要準確理解這些得通過針對性的訓練學習。
- 執(zhí)行計劃和性能考量: 這跟數(shù)據(jù)庫底層的執(zhí)行計劃有關(guān),需要考慮如何書寫才能使 SQL 的性能最優(yōu)。
- 數(shù)據(jù)庫特異性:市面上不同的數(shù)據(jù)庫往往存在不同的 SQL 方言,存在差異,針對這種差異性我們要投入大量時間做 SQL 數(shù)據(jù)集準備、數(shù)據(jù)標注、模型微調(diào)。
- 高度業(yè)務相關(guān)性:SQL 語句通常與特定業(yè)務高度相關(guān),比如一個指標存在特定的計算口徑,這是與公司業(yè)務相關(guān),通用的大模型也無法提前學習。
n公開的 SQL 數(shù)據(jù)集比 Java、Python 少:這導致基模型本身對 SQL 的理解和能力就比 Java、Python 等語言要差。
DataWorks Copilot 針對以上的幾個挑戰(zhàn),面向 SQL 代碼補全方向做了大量的模型微調(diào)和 Prompt Engineering 工作,并發(fā)揮出一站式平臺的優(yōu)勢,目前在 SQL 補全的準確性已經(jīng)優(yōu)于通用類編程 Copilot。以下列舉幾項目前 DataWorks Copilot SQL 代碼補全比較擅長的場景。
- 有規(guī)律的代碼連續(xù)推薦:例如 case when 語句,只需寫出前一兩行,Copilot 就知道接下來該怎么寫。
- 字段、字段別名推薦:Copilot 可以借助元數(shù)據(jù)信息自動推薦一些關(guān)聯(lián)的字段,還可以自動生成字段別名。
- 注釋推薦、分區(qū)字段推薦、Group by 字段推薦、Order by 字段推薦等。
- 根據(jù)上下文自動聯(lián)想推薦代碼:比如下圖中展示了根據(jù) SELECT 語句,推薦出 INSERT OVERWRITE 代碼和 CREATE TABLE 代碼,Copilot 可以幫助你輕松將寫好的 SELECT 語句轉(zhuǎn)化為一個用于生產(chǎn)調(diào)度的數(shù)據(jù)任務。
五、小結(jié)
以上我們介紹了 DataWorks Copilot 目前在智能 SQL 編程助手方向所具備的能力,主要包括:自然語言生成 SQL、SQL 代碼補全、注釋生成、SQL 解釋、問答/函數(shù)查詢、SQL 糾錯、SQL 優(yōu)化等。
希望 DataWorks Copilot 可以成為你的私人 SQL 編程助手,幫助你學習 SQL、編寫 SQL,提升 SQL 開發(fā)和數(shù)據(jù)分析的效率。目前 DataWorks Copilot 已經(jīng)開啟“邀測”,可以到阿里云 DataWorks 產(chǎn)品詳情頁面申請,也可聯(lián)系您的客戶經(jīng)理或者解決方案架構(gòu)師申請。