資料庫ChatGPT外掛來了,SQL使用體驗進一步起飛
簡介
基於 ChatGPT API 和 OpenMLDB 資料庫實現的 openmldb-chatgpt-plugin 專案開源了,作為人類迄今為止最強AI模型之一(GPT4未開放API),集成了 ChatGPT 模型的資料庫有多好用,下面將帶大家體驗一下。
原理
實現原理是在ChatGPT API基礎上做了一定的 Prompt engineering ,沒有用 fine tune ,在標準SQL場景上效果已經非常不錯,具體的 system prompt 設計大家可以看原始碼實現。
這個外掛對於其他 SQL 資料庫理論上也適用,不過因為加了一些直接查詢資料庫內容的整合功能,目前還是推薦使用 OpenMLDB 。使用時需要全程聯網,並且需要 OpenAI API key 和特定的網路條件,暫無條件的可以直接看下面的 Prompt 演示效果。
指令演示
自然語言對話能力
openmldb-chatgpt-plugin(後文簡稱 GPT 外掛)有 ChatGPT 本身的自然語言對話能力,可以直接在客戶端用中英文來詢問資料庫的基本用法以及特定SQL語法的介紹,這部分不需要特別的 prompt 優化,只是比 ChatGPT 網頁版減少需要開啟瀏覽器提問的步驟。
並且得益於多輪對話的實現,使用者可以根據上下文提問,相比傳統搜尋引擎找到需要的資料效率進一步提高。預設中文輸出對國內使用者也更加友好。
SQL執行、分析與推薦
使用者在 GPT 外掛執行的 SQL 程式碼,實際也會提交到 OpenMLDB 叢集執行,並且使用者輸入( User > )、資料庫輸出( OpenMLDB > )和 GPT 模型輸出( GTP > )都會有不同的字首和顏色區分。
上圖處理按照使用者命令執行 SQL 外,還對上表的 SQL 語句進行了概要分析,介紹這個表的名字,以及每一列的型別以及含義,最後還推薦使用 Insert 和 Select 語句進行插入和查詢,這就是對 ChatGPT 模型使用 Prompt 工程實現的執行、分析與推薦功能。
後面無論是 Insert 語句還是其他 SQL 語句,在執行後都會經過 AI 模型的解析與推薦,在執行 SQL 過程中不自覺學到了更多知識。這裡也有些 Prompt 工程技巧,如果不希望每次推薦的內容接近,可以通過 temperature 引數控制文字生成的“探索性”。
複雜表分析
對於使用者建立的一個列較多稍微複雜對錶,GPT 外掛也會適時地進行資料分析,除了簡單統計列數和 Schema 等基礎功能,它還會根據表名和列名資訊進一步發掘內容,對原始資料表列的含義分析得清清楚楚。例如下面的表中,“乘客上下車時間”、“上下車地點的經緯度”等資訊都可以分析和翻譯出來,在沒有額外資訊收集和程式設計實現的基礎上提供這些資訊對資料科學家來說也是一種饋贈。
失敗SQL除錯和更正
前面例子展示的是能夠成功執行的 SQL ,對於使用者已經編寫沒有語法錯誤的 SQL 進行分析只是“錦上添花”,但如果可以快速幫助使用者解決執行失敗的 SQL 那才是“雪中送炭”。通過 SQL 語句本身以及 OpenMLDB 提供的錯誤資訊,ChatGPT 模型顯然是具備這種 SQL 除錯以及 SQL 更正的能力。
上面是一個 SQL 語法正確但型別錯誤的情況,對於有經驗的 SQL 工程師通過錯誤資訊也許能猜測出錯誤的端倪,但能夠以自然語言的形式並且無比正確地直接告訴使用者錯誤地方以及後續的更正方案,從我個人測試的多個場景來看,這個能夠 7*24 小時工作的工具已經可以媲美身邊高階的 DBA 了。
複雜SQL分析能力
下面是 OpenMLDB 官方文件的一個例子,使用 SQL 進行時許特徵的抽取並且儲存樣本檔案。
首先 ChatGPT 模型解析的 SQL 語義毫無問題,但更令人驚訝的是,因為這個 SQL 語法確實不是在所有 SQL 都支援的,這裡最後面補充的注意事項充分表明”定製化“模型與通用閒聊機器人的區別。本外掛提供的 SQL 解析能力都是建立在使用 OpenMLDB 資料庫的基礎上,對於非通用 SQL 能夠解析並且講清楚與標準 SQL 的區別,目前恐怕除了資料庫的核心研發和深度使用者也很少人可以“理解”清楚。
資料庫內容查詢
前面演示的功能主要是 text to sql、SQL 分析等功能,放在 ChatGPT 網頁端或者任意公開的 ChatGPT 服務上都可以做,但 OpenMLDB ChatGPT 外掛還是做了內容的深度整合,可以以自然語言的形式來查詢資料庫的內容。
這裡還演示了 ChatGPT 無比優秀的連續對話能力,可以以不同粒度、不同角度多次按需查詢,查到的內容不僅正確,而且還根據中文語義進一步豐富了內容,格式也工整,可以很容易讓它輸出我們需要的 CSV 或者任意格式,這是程式設計師人工寫程式碼無論如何都達不到的效率。
總結
實際上 ChatGPT 外掛很多的功能程式碼也是基於 ChatGPT 模型生成的,雖然不能直接按照個人需要實現整個資料庫外掛,但它強大的程式碼搜尋和生成能力已經可以簡化我們大量搜尋學習時間,而基於歷史積累的海量 SQL 文獻,它的專業能力更是可以得到程式設計師甚至資深 DBA 的認可。
除了上面的 Prompt 提示詞和功能演示,ChatGPT 模型還有非常多可玩、易用、高效的用法等待大家去挖掘。
- 資料庫ChatGPT外掛來了,SQL使用體驗進一步起飛
- 實時特徵計算平臺架構方法論和基於 OpenMLDB 的實踐
- 自動化知識圖譜表示:從三元組到子圖
- 深入淺出特徵工程 -- 基於 OpenMLDB 的實踐指南(下)
- 深入淺出特徵工程 -- 基於 OpenMLDB 的實踐指南(下)
- 基於OpenMLDB v0.4.0快速搭建全流程線上AI應用
- OpenMLDB v0.4.0 正式釋出,全面增強以 SQL 為核心的開發和管理體驗
- OpenMLDB Weekly Update(2021.10.11-2021.10.18)
- OpenMLDB Weekly Update(2021.9.27-2021.10.4)
- OpenMLDB:一文了解帶引數查詢語句(paramterized query statement) 的細節
- OpenMLDB Weekly Update(2021.9.19-2021.9.26)
- OpenMLDB Weekly Update(2021.9.12-2021.9.19)
- OpenMLDB Weekly Update(2021.9.5-2021.9.12)
- OpenMLDB Weekly Update(2021.8.30-2021.9.6)
- 懸賞計劃 | 參與Gitee X OpenMLDB開源專案還能“賺錢”?做開源才不是「用愛發電」!
- 國內AI領域首次!第四正規化OpenMLDB優化創新論文被國際資料庫頂會VLDB錄用
- 【大賽招募】報名首屆全國人工智慧創新應用大賽—智慧計算專題賽,瓜分賽道20萬、力爭決賽100萬!
- 關於持久記憶體你瞭解多少?