深入了解Text2SQL開源項目(Chat2DB、SQL Chat 、Wren AI 、Vanna)
- 前言
-
- 1.Chat2DB
- 2.SQL Chat
- 3.Wren AI
- 4.Vanna
前言
在數據驅動決策的時代,將自然語言查詢轉化為結構化查詢語言(SQL)的能力變得日益重要。無論是小型創業公司還是大型企業,都希望能夠更輕松地從海量的數據中挖掘出有價值的見解。然而,對于那些不熟悉SQL或者數據庫架構的用戶來說,直接編寫復雜的查詢語句往往是一個巨大的挑戰。正是為了解決這一問題,Text2SQL技術應運而生,它允許用戶通過簡單的自然語言描述來獲取他們所需的數據庫信息。
近年來,隨著人工智能和機器學習領域的迅速發展,Text2SQL技術也取得了顯著的進步。多個開源項目如雨后春筍般涌現,它們致力于降低非技術人員與數據庫交互的門檻,同時提高專業開發人員的工作效率。在這篇文章中,我們將深入探討幾個具有代表性的Text2SQL開源項目:Chat2DB、SQL Chat、Wren AI 和 Vanna。這些項目不僅展示了當前Text2SQL技術的最高水平,還預示了未來該領域可能的發展方向。
在文章:Text2SQL(NL2sql)對話數據庫:設計、實現細節與挑戰
Text2SQL連接數據庫的實踐細節及示例代碼
有更多的Text2SQL知識了解。
1.Chat2DB
GitHub Star :17.5k stars
GitHub鏈接地址:https://github.com/CodePhiliaX/Chat2DB
可私有化部署。
快速入門文檔鏈接:https://chat2db-ai.com/resources/docs/start-guide/getting-started
功能:
1.創建數據庫連接
數據庫連接是使用Chat2DB的第一步,需要連接到你的數據庫才能進行后續的操作。點擊左側的數據庫連接,然后點擊New connection,選擇你使用的數據庫,填寫數據庫連接信息,點擊保存即可。
2.創建 AI 數據集
創建連接后,會有一個彈窗詢問你是否需要設置 AI 數據集。設置 AI 數據集可以更好地幫助 AI 理解你的數據庫表結構,生成更準確的答案。這也是 Chat2DB 的一大亮點。
3.使用 Chat2DB 數據庫開發
連接成功后,可以雙擊連接或右鍵進入連接,然后可以在Chat2DB中進行數據庫的增刪改查操作,也可以使用AIGC能力,直接使用自然語言查詢數據庫,也可以使用SQL轉自然語言。
4.已支持的數據庫:
5.AI 生成報表
AI自動生成報表系統能夠根據用戶的特定需求,自動從多個數據源中提取數據,并基于這些數據的特點和趨勢生成高度定制化的報表。 這些報表不僅包含豐富的圖表、表格以及匯總數據,還能夠通過先進的分析算法提供深入的洞察,幫助用戶更直觀地理解數據背后的含義,從而支持高效決策。
6.AI 對話
- AI建表
- AI 數據集
- AI SQL 優化
- AI SQL 轉化
- RestAPI接口
- Excel 智能問答
- AI文本生成圖表
- AI SQL 智能提示
- AI SQL 轉自然語言
- AI 自然語言生成 SQL
2.SQL Chat
GitHub Star :4.7k stars
GitHub鏈接地址:https://github.com/sqlchat/sqlchat
支持本地部署
SQL Chat 是一種基于聊天的 SQL 客戶端,它使用自然語言與數據庫通信,實現對數據庫的查詢、修改、添加和刪除等操作。
SQL Chat 是由 Next.js 構建的,它支持以下數據庫,并將隨著時間的推移支持更多:
- MySQL
- PostgreSQL
- MSSQL
- TiDB Cloud
功能:
數據隱私保護:所有數據庫連接配置僅存儲在本地瀏覽器中,用戶可通過瀏覽器設置清除這些數據。確保了連接信息的安全性和隱私性。
API交互限制:僅有數據庫模式信息被發送至OpenAI API,任何表數據均不上傳,保障數據安全。
數據庫連接能力:提供直接連接公網數據庫的功能,便于用戶即時查詢。
查詢執行限定:支持對連接的數據庫執行查詢操作,但限制于查詢,不支持如INSERT等其他SQL操作。
SQL優化建議:能夠根據提供的SQL語句給出常規優化建議,特別是對于復雜的長SQL語句有良好的分析能力。
集成會話功能:包含SQL查詢執行認證的會話功能,增強用戶體驗。
現有局限性:目前會話功能僅限于SQL查詢操作,若能擴展至全部SQL操作(包括寫操作和DDL語句),將極大提升管理數據庫的便利性。
3.Wren AI
GitHub Star :2.2k stars
GitHub鏈接地址:https://github.com/Canner/WrenAI
支持本地部署
Wren AI 是一個開源的 SQL AI 代理,它使數據、產品和業務團隊能夠通過聊天、內置精心設計的直觀 UI 和 UX 以及與 Excel 和 Google 表格等工具無縫集成來獲取見解。將 RAG 與 LLM 結合使用以查詢數據庫.
結合RAG(檢索增強生成,Retrieval-Augmented Generation)和LLM(大語言模型,Large Language Models)以查詢數據庫是一個復雜的過程,涉及到多個技術和方法的融合。通過將這兩個技術結合起來,可以提高信息檢索和自然語言處理任務的效率和準確性。然而,正如你所指出的,這個過程在四個關鍵階段面臨著挑戰:上下文收集、檢索、SQL 生成和協作。下面是這些挑戰的具體分析以及可能的解決方案,以便優化內容用于寫博客。
第1階段:上下文收集挑戰
互操作性和數據鏈接
挑戰:不同來源的數據和元數據服務之間的互操作性,以及將數據與文檔存儲中的元數據相關聯。
解決方案:采用統一的數據模型和標準化接口來促進跨系統的信息交換。使用語義網技術如RDF(資源描述框架)和OWL(Web本體語言)可以幫助建立豐富的上下文關聯。
第2階段:檢索挑戰
向量存儲優化和語義搜索精度
挑戰:優化向量存儲以提高搜索效率,同時確保語義搜索能夠準確理解查詢意圖。
解決方案:利用先進的機器學習算法改進向量索引策略,并采用預訓練的語言模型進行語義解析,以增強查詢理解和結果排序。
第3階段:SQL生成挑戰
SQL查詢的準確性和方言適應性
挑戰:生成符合語法且可執行的SQL查詢,并適應不同數據庫系統的特定SQL方言。
解決方案:訓練專門針對SQL生成的LLM,并集成對多種數據庫系統的知識。可以考慮使用模板或模式匹配來輔助生成兼容的查詢。
第4階段:協作挑戰
集體知識積累和訪問控制
挑戰:有效整合用戶反饋以改進系統性能,同時遵守組織的數據訪問政策和隱私法規。
解決方案:建立社區驅動的知識庫平臺,允許用戶提交改進建議和錯誤報告。對于訪問控制,應實施細粒度的權限管理機制,確保只有授權人員能訪問敏感數據。
功能:
-
以任何語言處理數據
Wren AI 會說您的語言,例如英語、德語、西班牙語、法語、日語、韓語、葡萄牙語、中文等。通過向 Wren AI 詢問您的業務問題來解鎖有價值的見解。它超越了表面的數據分析,揭示了有意義的信息,并簡化了從潛在客戶評分模板到客戶細分的答案獲取過程。 -
具有精心設計的 UI/UX 的語義索引
Wren AI 實施了語義引擎架構來提供您業務的 LLM 上下文;您可以輕松地在數據架構上建立一個邏輯表示層,以幫助 LLM 更多地了解您的業務環境。 -
使用上下文生成 SQL 查詢
借助 Wren AI,您可以使用“建模定義語言”處理元數據、架構、術語、數據關系以及計算和聚合背后的邏輯,從而減少重復編碼并簡化數據聯接。 -
無需編寫代碼即可獲得見解
在 Wren AI 中開始新對話時,您的問題將用于查找最相關的表。從這些中,LLM 生成三個相關問題供用戶選擇。您還可以提出后續問題以獲得更深入的見解。 -
輕松導出和可視化您的數據
Wren AI 提供無縫的端到端工作流程,使您能夠輕松地將數據與 Excel 和 Google 表格等流行的分析工具連接起來。這樣,您的見解仍然可以訪問,從而可以使用您最熟悉的工具進行進一步分析。
Wren A開源的主要特點在于建立數據模型
數據模型確實為數據庫或信息系統中數據的結構和關系提供了一個概念框架,而Wren AI中的“模型”、“視圖”以及“實體關系圖(ERD)”等概念則是這一框架的具體實現形式。下面我們將詳細解釋這些組件如何在Wren AI環境中運作,并且它們是如何幫助用戶更好地理解和操作數據的。
- 模型
在Wren AI中,“模型”不僅僅是指傳統意義上的數據模型,它是一個更復雜的單元,集成了架構、元數據、關系、計算字段以及其他自定義語義信息。這意味著每個模型都不僅僅是數據的容器,而且是具有豐富描述的數據對象集合,能夠表達數據之間的復雜關系和邏輯。通過這種方式,模型可以幫助人們和AI服務更深刻地理解數據的本質,從而提高數據分析和決策的質量。
- 視圖
視圖作為虛擬表,是Wren AI的一個重要特性,它允許用戶基于一個或多個基礎模型的數據創建定制化的展示。與實際存儲數據的表不同,視圖并不直接存儲數據,而是根據預定義的查詢動態生成結果集。這種機制不僅節省了存儲空間,還提供了靈活性,讓用戶可以根據需要快速調整數據展示的方式。此外,通過“另存為視圖”的功能,用戶可以保存特定的查詢結果,以便于日后重復使用或分享。
- 實體關系圖(ERD)
實體關系圖是在Wren AI的建模頁面提供的可視化工具,用于直觀地展示各個模型及其相互之間的關系。ERD以圖形化的方式呈現了系統內的數據結構,使用戶能夠輕松識別數據元素之間的關聯,如一對一、一對多或多對多的關系。在這個圖表中,模型通常用藍色塊表示,而視圖則用綠色塊標識,這樣的顏色區分有助于快速辨識不同的數據結構類型。ERD對于設計和理解復雜的數據模型特別有用,因為它能夠清晰地揭示數據之間的聯系,促進團隊成員間的溝通和協作。
總的來說,Wren AI通過其模型、視圖和ERD等功能,為用戶提供了一套強大的工具來管理和分析數據,確保數據能夠被高效地組織起來以滿足業務需求。這些特性共同作用,不僅提高了數據處理的效率,也增強了用戶對數據的理解和掌控能力。
4.Vanna
GitHub Star :12.3k stars
GitHub鏈接地址:https://github.com/vanna-ai/vanna
支持本地部署
Vanna 的核心是一個 Python 軟件包,它使用檢索增強來幫助您使用 LLM 為數據庫生成準確的 SQL 查詢。
Vanna 通過兩個簡單的步驟工作 - 在數據上訓練 RAG“模型,然后提出問題,這些問題將返回 SQL 查詢,這些查詢可以設置為在向量數據庫上自動運行。
訓練 RAG“模型:
數據包含建表語句、相關的SQL查詢示例以及對表或字段的注釋等文檔信息。這些信息將被轉化為向量形式(即進行Embedding),并存儲在專門的向量庫中。這些向量表示使得系統能夠高效地理解和檢索結構化數據的相關信息。
問題處理與SQL生成:
向Vanna提出一個問題時,系統會在向量庫中搜索與該問題最相關的信息。
檢索到的相關信息會被傳遞給大型語言模型,它根據上下文生成適當的SQL查詢。
生成的SQL查詢可以直接設置為自動執行,以在您的數據庫上運行,從而快速獲得所需的數據結果。
選擇 Vanna.AI 的原因可以歸結為幾個關鍵優勢:
-
透明度與靈活性:Vanna Python包以及前端集成的開源性質意味著用戶可以獲得完整的代碼透明度,并且可以根據自己的需求進行定制或修改。這對于那些希望在自己的基礎設施上運行解決方案、保持對技術棧完全控制的企業尤其有吸引力。
-
復雜數據集的高精度訓練數據相關性:Vanna的性能直接與其所接收的訓練數據量成正比。更多的訓練數據能夠提高模型對于大型復雜數據集的理解和處理能力,從而提升查詢結果的準確性。這對于擁有大量歷史數據或者需要處理復雜查詢的企業來說是一個重要的賣點。
-
數據隱私保護:Vanna 設計之初就考慮到了安全性,確保數據庫內容不會被發送到 LLM(除非特定功能要求),并且元數據存儲層僅能訪問架構、文檔和查詢信息。這種設計極大地減少了敏感數據暴露的風險,符合嚴格的隱私法規和企業內部的安全政策。
-
持續改進:隨著用戶的使用頻率增加,Vanna的模型會通過不斷添加新的訓練數據來優化自身的性能。這意味著系統會隨著時間推移變得更加智能和高效,無需人工干預即可自我調整以適應變化的數據模式。
-
廣泛的兼容性:Vanna 提供了對多種流行數據庫如 Snowflake、BigQuery、Postgres等的原生支持,并且允許用戶輕松創建自定義連接器以適配其他類型的數據庫,支持多種大模型及向量數據庫。
-
-
多樣的展示方式:Vanna 支持從 Jupyter Notebook 到 Slackbot、Web 應用程序、Streamlit應用程序等多種前端展示形式,甚至可以集成到客戶的 Web應用程序中。
運行原理:
當你向Vanna提出問題時,系統將遵循一個優化的流程來確保提供準確且高效的SQL查詢響應:
- 系統首先會在訓練數據中查找是否有過類似的提問記錄。如果找到了相似的問題,它會使用那些已經被驗證正確的SQL查詢作為參考。
- 若未找到匹配項,系統則會依據現有的數據定義語言(DDL)、相關文檔或引導性查詢來進行處理。
- 接著,專門針對您架構定制的Vanna模型會基于上述信息生成相應的SQL查詢。
- 生成的SQL查詢會被執行以驗證其正確性和有效性。一旦通過驗證,此查詢就會被加入到訓練數據集中,成為未來查詢的一個可靠來源。
- 如果SQL查詢未能通過驗證,則會有分析師介入,對查詢進行修正,并將正確的版本納入訓練數據。
通過這個不斷迭代和學習的過程,Vanna逐漸加深了對您數據庫模式的理解,從而能夠更加精準地響應更多類型的問題,并隨著時間推移不斷提高其性能和準確性。