專為數據庫打造:DB-GPT用私有化LLM技術定義數據庫下一代交互方式
DB-GPT 簡化了這些基于大型語言模型 (LLM) 和數據庫的應用程序的創建。
2023 年 6 月,螞蟻集團發起了數據庫領域的大模型框架 DB-GPT。DB-GPT 通過融合先進的大模型和數據庫技術,能夠系統化打造企業級智能知識庫、自動生成商業智能(BI)報告分析系統(GBI),以及處理日常數據和報表生成等多元化應用場景。DB-GPT 開源項目發起人陳發強表示,“憑借大模型和數據庫的有機結合,企業及開發者可以用更精簡的代碼來打造定制化的應用。我們期望 DB-GPT 能夠構建大模型領域的基礎設施,讓圍繞數據庫構建大模型應用更簡單,更方便”。據悉,DB-GPT 社區自成立以來,已匯聚了京東、美團、阿里巴巴、唯品會、螞蟻集團等眾多互聯網企業的開發者共同參與,短短半年時間便迅速成長為一個近萬星的開源社區,受到了行業和開發者的認可。期間也多次登上 GitHub Trending、Hacker News 首頁。在過去的六個月里,DB-GPT 項目的代碼已經從最初提交第一行代碼到當前版本 0.4.4,隨著項目功能的精細打磨和版本的持續迭代,項目團隊也隨之發布了一篇關于 DB-GPT 的研究論文,該論文詳細介紹了項目的核心技術,包括 RAG、多模型管理框架 SMMF、Text2SQL 的自動化微調以及基于數據驅動的 Multi-Agents 等關鍵特性的實現架構和實驗對比。接下來,讓我們了解下 DB-GPT 論文的相關內容:- 論文地址:https://arxiv.org/pdf/2312.17449.pdf
- 論文代碼:https://github.com/eosphoros-ai/DB-GPT
- 英文文檔:https://docs.dbgpt.site/docs/overview
- 中文文檔:https://www.yuque.com/eosphoros/dbgpt-docs/bex30nsv60ru0fmx
ChatGPT 和 GPT-4 等大型語言模型(LLMs)展示了它們在模擬人類對話和理解復雜查詢方面的卓越天賦,同時引領了一個跨領域融合 LLMs 的新趨勢。當這些模型和外部工具相結合,它們的能力得到進一步增強,使它們能夠搜索互聯網上的相關信息,同時可以利用外部工具創建更復雜、功能更豐富的應用程序。在數據庫領域,傳統系統往往依賴技術專家的深厚知識和對領域特定的結構化查詢語言 (SQL) 的熟練掌握來進行數據訪問和操作。而 LLMs 的出現為自然語言接口鋪平了道路,使用戶能夠通過自然語言查詢和數據庫進行交互,從而實現了數據庫交互的簡單化和直觀化。即便如此,如何巧妙地運用 LLM 增強數據庫的操作性,以便打造功能強大的終端用戶應用程序,仍然是一個懸而未決的難題。目前多數研究采用的一種直接方法,即直接使用常用的 LLM(例如 GPT-4)并通過簡潔的少量示例提示(few-shot prompting)或交互式上下文學習(ICL)來進行交互。這一方法的優勢在于,它不太可能過度擬合訓練數據,并且能夠靈活適應新數據,然而,其劣勢在于與中型 LLM 的微調方案相比,性能可能尚未達到最佳。 此外,為了進一步促進與數據庫的智能交互,眾多研究和實踐中已嘗試將 LLM 支持的自動推理和決策過程(又名 agent)融入到數據庫應用程序中。然而,知識代理(knowledge agent)往往是為特定場景和任務量身打造的,而非通用型,這一點限制了它們在廣泛應用場景下的大規模使用。雖然在以 LLM 為核心的數據庫交互中隱私保護措施至關重要,但這方面的深入研究仍顯不足。以往的研究大多是普適性目標,而非針對數據庫操作而精心設計的。在此研究中,作者提出了 DB-GPT 框架,這是一個旨在借助 LLM 技術而打造的智能化、生產級的項目,它使用私有化技術提取、構建和訪問數據庫的數據。DB-GPT 不僅充分發揮了 LLM 的自然語言理解和生成的潛能,而且還通過 agent 代理和插件機制不斷優化其數據驅動的引擎。表 1 展示了 DB-GPT 和 LangChain、LlamaIndex、PrivateGPT、ChatDB 等工具在多個維度的綜合比較。綜上所述,DB-GPT 具有以下明顯優點:隱私和安全保護。DB-GPT 為用戶提供了極致的部署靈活性,允許在個人設備或本地服務器上進行安裝,并且能夠在沒有互聯網連接的狀態下運行。這確保了在任何時刻,數據都沒有離開執行環境,徹底杜絕了數據泄露的風險。在數據處理模塊,通過模糊數據集中的個人標識符,大幅度降低私人信息被未經授權訪問和濫用的風險。多源知識庫問答優化。與傳統的知識庫問答系統(KBQA)相比,DB-GPT 設計構建了一條靈活、高效、支持雙語的數據處理 pipeline,它能夠將多源非結構化數據(例如:PDF、網頁、圖像等)攝取到中間數據中表示,隨后將這些數據存儲在結構化知識庫中,在此基礎上,系統能夠高效檢索和查詢最相關的信息片段,并借助于其強大的自然語言生成能力,為用戶提供詳盡的自然語言回答。Text-to-SQL 微調。為了進一步增強生成能力,DB-GPT 對 Text-to-SQL 任務的幾個常用 LLM(例如 Llama-2、GLM)進行了微調,從而顯著降低了非 SQL 專業知識的用戶與數據交互的門檻。據作者了解,在同類研究中,有 LlamaIndex、SQLCoder 等集成了此類微調的替代方案,但它并未針對雙語查詢進行優化。集成知識代理(knowledge agent)和插件。Agent 是一款自動推理和決策的引擎。DB-GPT 作為一個完全可用于生產環境的成熟項目,它賦能用戶通過高級數據分析技術開發并部署應用會話代理,進而促進數據的交互式應用。此外,它還提供一系列查詢和檢索服務插件,用作與數據交互的工具。論文對 DB-GPT 的性能進行了周密的評估,這不僅涵蓋了各種基準任務(例如 Text-to-SQL 和 KBQA),還包括了案例研究和調查來評估其可用性和場景偏好。在多數評價指標上,DB-GPT 展現出了優于競爭對手的性能表現。DB-GPT 的整體流程如圖 1 所示。在建立檢索增強生成 (RAG) 框架時,DB-GPT 系統集成了新穎的訓練和推理技術,顯著增強了其整體性能和效率。本節將描述每個階段的設計,包括模型架構以及訓練和推理范式。盡管 LLM 通常在大量的開源數據或其他地方的獨有數據上訓練,但是仍然可以使用 RAG 技術通過額外的私人數據增強 LLM 知識問答能力。如圖 2 所示,DB-GPT 的 RAG 系統架構由三個階段組成:知識構建、知識檢索和自適應上下文學習 (ICL)。知識構建。DB-GPT 的知識庫是一個匯集自各個領域的龐大的文檔的集合,其中文檔數量N很大。為了更加精細地處理這些信息,論文將每個文檔分為多個段落,其中表示第 n 個文檔的段落索引。隨后,通過一個編碼器 encoder將每個段落嵌入到多維的 embedding。值得注意的是,DB-GPT 不僅采用了傳統的基于向量的知識表示,還融入了倒排索引和圖索引技術,使得用戶能夠迅速且精準地檢索到與上下文相關的數據,如圖 3 所示。知識檢索。當接收到語言查詢x時,DB-GPT 通過另一個編碼器 encoder將x嵌入到向量 q 中。在此基礎之上,DB-GPT 從知識庫中檢索前 K 個相關段落,其中K是超參數。如圖 4 所示,DB-GPT 支持各種檢索器模型,例如 Embedding Retriever(根據余弦相似度進行檢索)、Keyword Retriever(其中匹配關鍵詞而不是整個句子)。在下面的段落中,默認情況下使用 Embedding Retriever。學習嵌入和搜索。得益于對編碼器 和 的精確訓練,DB-GPT 確信更高的相似性分數代表著與查詢更為貼切的段落。直觀上,真實相關的查詢 - 段落對,它們的向量點積相對較大。DB-GPT 的編碼器 encoder 采用了 Multilingual-E5-base 模型架構,旨在優雅的實現雙語文檔的編碼與處理。LLM 的自適應 ICL 和生成。在這一階段,DB-GPT 系統通過執行 ICL 來響應生成。系統首先根據和查詢 query 的余弦相似度對 K 個搜索結果進行排序,然后選取排名最前的 J 個(其中 J ≤ K)結果,將這些結果插入到預定義的上下文提示模板中,最后 LLM 生成響應。ICL 是一種在訓練或推理階段通過在處理過程中納入額外的上下文來提高 LLM 性能的技術。ICL 的引入不僅增強了語言模型對上下文的理解,還提高了模型的可解釋和推理技能。值得注意的是,ICL 的性能很大程度上取決于特定的設置,包括提示模板、選擇的示例、上下文示例的數量以及示例的順序。在 DB-GPT 系統中,提供了多種制定提示模板的策略(示例見清單 1)以適應不同的需求。此外,論文采用了相應的隱私保護措施,確保個人信息得到妥善保存。模型即服務 (MaaS) 是一種云端的人工智能的服務模式,它向開發人員和企業提供即時可用的預配置、預訓練的機器學習模型。在 DB-GPT 框架中,為了精簡模型的適配流程,提升運作效率,并優化模型部署的性能表現,提出面向服務的多模型框架(SMMF)。該框架旨在為多模型部署和推理提供一個快速和便捷的平臺。SMMF 主要由模型推理層和模型部署層兩個部分組成。模型推理層是一個專門為了適配多樣化的 LLM 而設計的推理平臺,包括 vLLM、文本生成推理 (TGI,HuggingFace 模型推理) 和 TensorRT。而模型部署層則承擔著橋梁的角色,充當了底層推理層和上層模型服務功能之間的媒介。模型部署層:在 DB-GPT 的模型部署框架層內,一系列組件協同工作。由 API server 和 model handler 組成的任務負責向應用程序層提供強大的模型服務功能。model controller 占據中心位置,不僅負責元數據的治理,同時也充當大規模部署架構的紐帶。此外,model worker 的作用至關重要,它直接與推理設備和底層基礎環境直接連接,確保模型能夠發揮最佳的性能。DB-GPT 是一個多角色支持的系統,為數據分析師、軟件工程師和數據庫架構師等用戶提供與數據庫交互的全流程體驗,同時配備了精心編排設計的標準操作程序(SOPs)。受到 MetaGPT 理念的啟發,DB-GPT 為不同 agent 分配不同的角色,發揮其獨特的優勢和專長來解決具有挑戰性的任務。通過精準的協調機制,DB-GPT 實現了不同 LLM agents 間的高效協作,促進它們之間溝通、共享信息和集體推理。基于 Text-to-SQL 微調后的 LLM,DB-GPT 可以快速開發和部署具有與數據庫高級交互能力的智能 agent。此外,與適用于特定用例且行為受限的 LlamaIndex 組件不同,DB-GPT 使 agent 在更少的約束下具有更強的通用推理能力。雖然 LLM 具有強大的能力,但它并非在每項任務上都能發揮最佳性能表現。LLM 可以通過合并插件來執行多個步驟,收集相關信息,而非直接回答問題。區別于通用的插件,DB-GPT 的插件專門為數據庫交互模式而設計。這種設計有利于通過自然語言查詢數據庫,簡化用戶查詢表達式,同時增強了 LLM 的查詢理解和執行能力。數據庫交互模式由模式分析器 (schema analyzer) 和查詢執行器 (query executor) 兩個組件組成。模式分析器 (schema analyzer),負責將模式解析為 LLM 可以理解的結構化表達;查詢執行器 (query executor),則負責根據 LLM 的自然語言響應在數據庫上執行相應的 SQL 查詢。另外,DB-GPT 還與第三方服務集成,例如 WebGPT 中提出的 web search,用戶無需離開聊天即可在另一個平臺上執行任務。借助這些插件,DB-GPT 能夠以強大的生成能力(論文將其稱為生成數據分析)來執行多個端到端數據分析問題。具體詳情可以參閱論文的說明性示例。RAG 的實現代碼參考了開源項目 LangChain 的代碼。Web 端的 UI 實現細節,可以參考作者的另一個開源項目:https://github.com/eosphoros-ai/DB-GPT-Web。其余的訓練細節請參考原論文,或者訪問 DB-GPT 開源項目地址:https://github.com/eosphoros-ai/DB-GPT,來獲取更加全面準確的信息。論文中提出了旨在評估 DB-GPT 系統性能的實驗,包括 Text-to-SQL 響應的生成質量和 MS-RAG 的 QA 性能,并提供生成數據分析的定性結果。在公有數據集 Spider 上,本項目采用了 Text-to-SQL 的技術進行評估,其中訓練使用 train 集,評估使用 dev 集。評估指標使用的是執行準確率(Execution Accuracy, 簡稱 EX)。該指標通過對比預測的 SQL 查詢結果與特定數據庫實例中的真實 SQL 查詢結果來衡量。EX 越高,代表模型性能越好。考慮到雙語文本支持需求,在 DB-GPT 框架實驗中選取了 Qwen 系列和 Baichuan 系列作為基礎的 LLM,實驗結果如表 2 所示。表 2 顯示了 DB-GPT 系統在 Text-to-SQL 微調 pipeline 的有效性,無論是通義千問模型還是百川模型,微調后模型 EX 指標都有顯著提升。論文在多種開放域問答(open-domain QA)任務中對 RAG 框架進行了實驗。作者專門構建了兩個 QA 數據集,分別聚焦于數據庫領域和金融領域:DatabaseQA 和 FinancialQA。在構建 DatabaseQA 時,作者從三個代表性數據庫系統(OceanBase、MySQL 和 MongoDB)中收集了 1000 個 PDF 形式的公開教程作為素材。而 FinancialQA 的素材則是從研究機構出版的文檔樣本中抽取了 1000 個。對于每個數據集,論文構建 100 個測試問題,這些問題均由專家根據難易程度進行注釋。有關數據集的更多詳細信息,請參閱論文附錄。為了確保答案質量評估準確性,論文指定三位專家對每個回復進行打分,評分范圍為 0 – 5 分,其中較高分數代表更為優質的答案。評分結果取三位專家評分的平均值,以此作為最終得分。論文選取 4 個 LLM 作為基礎模型,分別是:Qwen、Baichuan、ChatGLM 和 ChatGPT3.5。由于 ChatGPT3.5 并非開源模型,作者無法在框架中對其進行 Text-to-SQL 的微調。RAG 在兩個數據集上的實驗結果如表 3 和表 4 所示,在所有測試的數據集上,并沒有一個模型能夠在所有的情況下都勝出:ChatGPT-3.5 在 DatabaseQA 數據集上表現最佳,而 ChatGLM 在 FinancialQA 數據集上獲得最佳性能。DB-GPT 集成了大部分流行的開源和商業 LLM,用戶可以根據自己的 RAG 任務需求自由選擇最適合的模型。DB-GPT 集成了 vLLM 作為主要推理框架,實驗過程中,為了保持一致性,論文將每一個輸入提示(prompt)的長度固定為 8 個 token,并將輸出的最大長度設置為 256 個 token。實驗采用了以下三個評價指標:- 首字延遲 First Token Latency (FTL):以毫秒為單位,代表 DB-GPT 模型部署框架收到請求時該時刻開始,到進行推理解碼第一個 token 所花費的時間。
- 推理延遲 Inference Latency(IL):以秒為單位測量,表示從 DB-GPT 模型部署框架接收到模型推理請求到生成完整的響應的時間。
- 吞吐量:DB-GPT 模型部署框架每秒中處理的所有用戶和所有請求的 token 數量。
Qwen 和 Baichuan 模型在 SMMF 方法上的實驗結果如表 5 和表 6 所示,結果表明使用 vLLM 模型推理框架顯著提高了模型的吞吐量,同時大幅度降低了首字延遲和推理延遲。值得注意的是,隨著數量并發用戶數增加,使用 vLLM 框架推理帶來的性能提升變得特別明顯。因此,DB-GPT 選擇將 vLLM 集成為 SMMF 使用的默認推理框架。經過這一年的實踐與抽象,為了具備更廣泛的生產級應用能力,DB-GPT 對架構進行了分層。如下圖所示,主要分為以下 7 層,自上而下以此為:- 可視化層:可視化層主要的工作是對話、交互、圖表顯示、可視化編排等能力。
- 應用層:基于底層能力的應用構建,如 GBI 應用、ChatDB 類應用、ChatData 類應用、ChatExcel 類應用等。
- 服務層:服務層主要是對外暴露的服務,比如 LLMServer、APIServer、RAGServer、dbgptserver 等。
- 核心模塊層:核心模塊主要有三個分別是,SMMF、RAGs、Agents。
- 協議層:協議層主要是指 AWEL (Agentic Workflow Expression Language), 即智能體編排語言,是專門為大模型應用開發設計的智能體工作流表達式語言。
- 訓練層:訓練層主要關注 Text2SQL、Text2DSL、Text2API 方向的微調,提供標準的微調腳手架。
- 運行環境:運行環境是指整個框架的運行在什么環境當中,我們后期會優先支持基于 Ray 與 Kubernetes 的環境。
用戶可以基于這些基礎框架能力,更好的打造生產級應用。更多關于 DB-GPT 的進展可以關注其社區。 - DB-GPT 論文:DB-GPT: Empowering Database Interactions with Private Large Language Models.
- DB-GPT 框架開源項目:https://github.com/eosphoros-ai/DB-GPT
- DB-GPT 前端可視化項目:https://github.com/eosphoros-ai/DB-GPT-Web
- DB-GPT Text2SQL 微調項目: https://github.com/eosphoros-ai/DB-GPT-Hub
- DB-GPT 插件倉庫: https://github.com/eosphoros-ai/DB-GPT-Plugins
- Text2SQL 學習資料與前沿跟蹤: https://github.com/eosphoros-ai/Awesome-Text2SQL
本站僅提供存儲服務,所有內容均由用戶發布,如發現有害或侵權內容,請
點擊舉報。