Text2SQL 智能報表方案介紹

0 背景

Text2SQL智能報表方案旨在通過自然語言處理(NLP)技術,使用戶能夠以自然語言的形式提出問題,并自動生成相應的SQL查詢,從而獲取所需的數據報表,用戶可根據得到結果展示分析從而為結論提供支撐,其次可通過對結果數據與用戶問題拆解然后對異常可能存在的問題提供解析。

1 技術框架

智能報表整體架構分為5層,分別為資源配置層、數據存儲模塊、LLM、智能體開發框架、功能應用。我們要做的就是如何選型與適配各個層之間的交互,數據與大模型本質決定了功能的天花板。

  • 機器算力: 大模型部署需要足量的內存(RAM)與顯存(GPU),比如部署7B(FP32/4Byter)可能需要7G左右內存,如果要進行微調則需要GPU的加持(如果部署在GPU上推理速度會更快);

  • 數據存儲

  • 知識庫(外掛RAG):包含用戶需要查詢的數據庫表詳細的描述信息(包含庫、表、詳細字段);智能體系統描述信息,比如我們系統可能含有一個Text2SQL智能體、數據分析智能體,那么需要一個具體的系統描述信息(角色定位、工具信息描述,輸出限制等等);
    • 業務數據庫:為數據分析等場景提供支持;
    • 向量數據庫: 對知識庫(表結構)向量化,方便快速檢索;
  • 大模型:

    • 從使用方法可分為 :1 API接口調用(前期資源不到位情況可暫時使用API接口調時)2 數據屬于保密資產,需要選擇本地部署的方式解決泄漏問題;? ? ? ?

    • 從功能可分為: 1 大語言模型; 2 詞向量嵌入模型;

  • 開發框架應用:提供了一系列工具來簡化大模型業務流程,快速開發迭代;

  • 服務產品:可按照實現模塊進行分期實現,可優先實現Text2SQl 、報表圖示、報告生成、智能客服等等;

1.1 Text2SQL

功能:Text-to-SQL(或者Text2SQL,text2Code的子任務),顧名思義就是把文本轉化為SQL語言,更學術一點的定義是:把數據庫領域下的自然語言(Natural Language,NL)問題,轉化為在關系型數據庫中可以執行的結構化查詢語言(Structured Query Language,SQL),因此Text-to-SQL也可以被簡寫為NL2SQL。· 輸入:自然語言問題,比如“查詢表t_user的相關信息,結果按id降序排序,只保留前10個數據 ”· 輸出:SQL,比如“SELECT * FROM t_user ORDER BY id DESC LIMIT 10”

優點: Text2SQL 應用主要是幫助用戶減少開發時間,降低開發成本。“打破人與結構化數據之間的壁壘”,即普通用戶可以通過自然語言描述完成復雜數據庫的查詢工作,得到想要的結果。

目標:自然語言查詢語句 -> SQL 結構化查詢語言;

已知:數據庫中的有限表,測試集合《text_question,SQL_answer,My_sql_result》

解決方法: PE + LLM

案例1 表少、簡單

一個最基礎、最直觀的提示工程方案是,輸入數據庫的 Database Schema,即數據庫的基本結構(包括表名、列名、主外鍵關系等等),以及用戶的問題,提示模型輸入該問題對應的 SQL 語句。這種提示范式可以很方便讓 LLM 適應各種不同的數據庫與對應的用戶查詢。近期的一些研究表明,(提示詞越精確)在輸入中,額外增加表和列的文本描述、小樣本示例(即 few-shot Question-SQL pairs)、一定格式描述的數據樣本(即數據庫中每一個表的隨機幾行數據樣本)等信息有助于 LLM 更好地理解數據庫結構,從而生成更準確的 SQL【比如:RSL-SQL

  • 輸入問題提示詞以及相關的表結構信息,讓大模型產出結果,如下:(通義千問)

解決方法2:PE + RAG / KAG +LLM

案例2 :真實的業務場景面對的是多庫、多表、多字段,并且存在表字段描述信息存在語義,在提示中包含完整的數據庫信息會導致輸入 token 過多,計算成本增加,更重要的是會引入大量噪音。在生成 SQL 之前,用一些方法提前找到與用戶問題相關的表和列,然后,輸入給大模型的是被顯著簡化后的 Database Schema,從而達到減小輸入噪音并增強 SQL 生成性能的目的【RAG】。

  1. 首先是如何得到詳細描述數據庫表的信息,這一個需要具體業務部門(用戶)有一個深入的理解;

  2. 過濾掉與用戶問題無關的數據表描述信息(簡單、詳細、過濾不必要冗余信息);

解決方法3: PE+RAG+SFT+LLM

案例3:存在大量的表、并且已經收集到大量的訓練數據;

  • 基于積累的訓練數據進行微調,得到特定領域的大模型(按照業務、主題劃分);

注意

  • 1 記錄用戶的提問日志,分析用戶的行為信息,為下次用戶使用提供參考;

  • 2 模型微調數據收集:是否正確,如果正確直接放到標注數據中,不正確可以把查詢的語句寫入;

  • 3 如果大模型能力有限,可按照業務或者主題進行切分,增加模型的抗干擾能力;

1.2 大模型

1.2.1 語言大模型(預訓練數據庫)

目前,基于 LLM 的 Text-to-SQL 主要分為兩類技術路線,一類是對一些開源的參數較小的 LLM(如 Deepseek-7B) 進行微調,另一類則是基于閉源的參數較大的 LLM (如 GPT-4、GPT-4o)的提示工程方法。

精度/通用性與模型大小是一個矛盾點,高精度意味著需要跟多的參數(記住所有信息)。如何落地優選平衡二者之間的關系,可以從下面出發:

  1. 預算足夠(有錢),直接使用開源的大模型,通用性能廣、理解用戶的需求能力更強;
  2. 預算不足,那就做垂直領域的大模型,基于非房/房訂單業務數據(SQL對話數據)對大模型進行微調,數據質量直接決定模型的上線,并且數據的收集需要時間。其次可以通過提示詞工程等引導大模型回答;

1.2.2 開源大模型選擇

text2SQL : 目標:具備coder、function calling 能力;

本地部署會占用大量內存,下面是目前幾個開源大模型。當然如果需要再進行微調,那么需要更多的內存,比如選擇Adam優化器,需要額外3倍的模型大小內存,共計4倍(比如deepSeek V2,需要16 * 4 = 64G)

常見底座模型概覽:(深度求索、智譜、零壹萬物、阿里)

大模型下載地址:

  1. HuggingFace: Hugging Face – The AI community building the future.

  1. 魔塔社區: 魔搭社區

  1. Ollama: 統一管理部署

1.2.3 嵌入大模型

目標:為了RAG提供理論模型支持(多維度1024,英文+中文),提前找到與用戶問題相關的表和列;

BAAI/bge-large-zh-v1.5

未來主要技術工作內容:

  1. 提示詞工程:新表信息完善、few-shot庫構建+ 召回/COT技術;

  1. RAG:詞向量嵌入,表召回、列召回、粗排到精排;

  1. 大模型微調;

  1. SQL語法修正,多路執行結果投票;

1.3 數據分析與報表

  • 智能分析:提供數據理解能力、數據趨勢解析等等,可借助業務文檔提出切合業務的問題分解,支持歸因、TopN、維度下鉆、時序預測等等算法,以及動態的操作推薦;

  • 智能圖示:根據SQL查詢結果(或者代碼)提供給前端按照具體圖例展示;

  • 動態預警:借助大模型的動態趨勢預警能力,實現數據自動找人,將業務數據的異常波動主動推送到相關人,幫助業務部門及時發現問題并采取有效措施。

  • 智能洞察:具備時序異常檢測、因果關聯、波動歸因等主動洞察能力,自動的發現有用結論。

1.4 明確目標

  1. 用戶定位;

  1. 數據源以及權限定位:所有庫表是否有使用限制等條件,需要業務完善相關表信息

功能1 為用戶提供參考SQL語句;

功能2 執行SQL代碼;

功能3 為前端提供圖(圖片),還是為前端提供具體執行代碼等等;

2 成熟的產品

名稱

簡介

特性

文章來源

Star

缺點

Chat2DB (阿里開源 Chat2DB :一款多數據庫客戶端工具!

Chat2DB 是一個功能強大的 SQL 客戶端和數據分析工具,支持對話式數據分析,能夠輔助生成 SQL。它提供網頁和客戶端兩種使用方式,支持幾乎所有流行的數據庫,并且開源了7B的SQL模型。

SQL生成、智能報告、數據探索

https://www.zhihu.com/search?type=content&q=%E9%98%BF%E9%87%8C%E5%BC%80%E6%BA%90%20Chat2DB%20

github:

GitHub - CodePhiliaX/Chat2DB: 🔥🔥🔥AI-driven database tool and SQL client, The hottest GUI client, supporting MySQL, Oracle, PostgreSQL, DB2, SQL Server, DB2, SQLite, H2, ClickHouse, and more.

GitHub Star 18K

1 目前 Chat2DB 似乎只支持對單個表格的query。如果想要對多個表格進行操作,需要自己寫 prompt。

2 Chat2DB 的使用體驗在很大程度上依賴于 LLM 的能力;

SQL Chat

SQL Chat 是一個基于聊天的 SQL 客戶端,使用自然語言與數據庫進行交互,支持對數據庫的查詢、修改、新增和刪除等操作。它目前支持MySQL,Postgres,SQL Server和TiDB無服務器。

自然語言交互、數據庫增刪改查

9個優秀的Text2Sql(Chat2Sql)開源項目、資源-CSDN博客

github:

GitHub - sqlchat/sqlchat: Chat-based SQL Client and Editor for the next decade

GitHub Star 4K

VannaAI

Vanna 是麻省理工學院授權的開源 Python RAG(檢索增強生成)框架,用于 SQL 生成和相關功能。

只需兩個步驟——在數據上訓練 RAG 模型,然后提出問題,這些問題將返回 SQL 查詢,這些查詢可以設置為在數據庫上自動運行。

github:

GitHub - vanna-ai/vanna: 🤖 Chat with your SQL database 📊. Accurate Text-to-SQL Generation via LLMs using RAG 🔄.

GitHub Star 7.7K

1 Vanna 需要事先知道數據庫的結構信息,包括表名、字段名等。這意味著我們需要先將數據庫結構信息導入到 Vanna 中,才能正確地生成 SQL 查詢語句。

Dataherald

Dataherald 是一個自然語言到 SQL 引擎,專為企業級問答構建。它允許您從數據庫中設置一個 API,用簡單的對話進行問答。Dataherald 包含四大模塊:引擎、管理控制臺、企業后端和 Slackbot。

模塊化設計、核心模塊可替換、文本到 SQL 轉換、評估模塊、易于設置和使用主要數據倉庫、主動學習

GitHub - Dataherald/dataherald: Interact with your SQL database, Natural Language to SQL using LLMs

GitHub Star 3.1K

Supersonic

SuperSonic 融合了 Chat BI(基于 LLM)和 Headless BI(基于語義層),打造新一代 BI 平臺。通過 SuperSonic 的問答對話界面,用戶能夠使用自然語言查詢數據,系統會選擇合適的可視化圖表呈現結果。

內置 Chat BI 界面以便業務用戶輸入數據查詢、內置 Headless BI 界面以便分析工程師構建語義模型、內置基于規則的語義解析器、支持文本輸入聯想、多輪對話、查詢后問題推薦等高級特征、支持權限控制

GitHub - tencentmusic/supersonic: SuperSonic is the next-generation AI+BI platform that unifies Chat BI (powered by LLM) and Headless BI (powered by semantic layer) paradigms.

GitHub Star 2.6K

MaxKB

MaxKB = Max Knowledge Base,是一款基于大語言模型和 RAG 的開源知識庫問答系統,廣泛應用于智能客服、企業內部知識庫、學術研究與教育等場景。

下載安裝

支持對接各種大語言模型,包括本地私有大模型(包括Llama 3 / Qwen 2等)、國內公共大模型(包括通義千問、騰訊混元、字節豆包、智譜 AI、百度千帆、Kimi、DeepSeek等),以及國外公共大模型(包括OpenAl、Azure OpenAI、Gemini等);

看好MaxKB!

參考:RSL-SQL. Robust Schema Linking in Text-to-SQL Generation

論文標題:
RSL-SQL: Robust Schema Linking in Text-to-SQL Generation
論文鏈接:
https://arxiv.org/abs/2411.00073
代碼鏈接:
https://github.com/Laqcce-cao/RSL-SQL

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/66684.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/66684.shtml
英文地址,請注明出處:http://en.pswp.cn/web/66684.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

FFmpeg音視頻采集

文章目錄 音視頻采集音頻采集獲取設備信息錄制麥克風錄制聲卡 視頻采集攝像機畫面采集 音視頻采集 DirectShow(簡稱DShow)是一個Windows平臺上的流媒體框架,提供了高質量的多媒體流采集和回放功能,它支持多種多樣的媒體文件格式&…

【漫話機器學習系列】056.F1值(F1 score)

F1值(F1 Score) 定義 F1值是機器學習中一種用于評估模型性能的指標,特別適合用于 不平衡數據集 的分類任務。它是 精確率(Precision) 和 召回率(Recall) 的調和平均值。通過綜合考慮精確率和召…

Mac安裝Homebrew

目錄 安裝修改homeBrew源常用命令安裝卸載軟件升級軟件相關清理相關 安裝 官網 https://brew.sh/不推薦官網安裝方式(很慢很慢或者安裝失敗聯網失敗) 檢測是否安裝homebrewbrew -v執行安裝命令 蘋果電腦 常規安裝腳本 (推薦 完全體 幾分鐘就…

在K8S中,如果后端NFS存儲的IP發送變化如何解決?

在Kubernetes中,如果后端NFS存儲的IP地址發生了變化,您需要更新與之相關的Peristent Volume(PV)或Persistent Volume Claim(PVC)以及StorageClass中關于NFS服務器IP的配置信息,確保K8S集群內的Pod能夠正確連接到新的NFS存儲位置。解決方案如下…

一文大白話講清楚webpack基本使用——9——預加載之prefetch和preload以及webpackChunkName的使用

文章目錄 一文大白話講清楚webpack基本使用——9——預加載之prefetch和preload1. 建議按文章順序從頭看,一看到底,豁然開朗2. preload和prefetch的區別2. prefetch的使用3. preload的使用4. webpackChunkName 一文大白話講清楚webpack基本使用——9——…

【Elasticsearch 】 聚合分析:桶聚合

🧑 博主簡介:CSDN博客專家,歷代文學網(PC端可以訪問:https://literature.sinhy.com/#/?__c1000,移動端可微信小程序搜索“歷代文學”)總架構師,15年工作經驗,精通Java編…

tensorflow源碼編譯在C++環境使用

https://tensorflow.google.cn/install/source?hlzh-cn查看tensorflow和其他需要下載軟件對應的版本,最好一模一樣 1、下載TensorFlow源碼 https://github.com/tensorflow/tensorflow 2、安裝編譯protobuf(3.9.2) protobuf版本要和TensorFlo…

P8738 [藍橋杯 2020 國 C] 天干地支

兩種方法 #include<bits/stdc.h> using namespace std;int main(){int year;cin>>year;string tg[10] {"geng", "xin", "ren", "gui","jia", "yi", "bing", "ding", "wu&…

Python 常用運維模塊之OS模塊篇

Python 常用運維模塊之OS模塊篇 OS 模塊獲取當前工作目錄更改當前工作目錄返回當前目錄路徑返回上一級目錄路徑遞歸生成目錄路徑刪除目錄創建目錄刪除目錄列出特定目錄下文件和子目錄刪除某個特定文件重命名某個文件獲取某個文件/目錄的信息輸出目錄路徑分隔符輸出文件行終止符…

uniapps使用HTML5的io模塊拷貝文件目錄

最近在集成sqlite到uniapp的過程中&#xff0c;因為要將sqlite數據庫預加載&#xff0c;所以需要使用HTML5的plus.io模塊。使用過程中遇到了許多問題&#xff0c;比如文件路徑總是解析不到等。尤其是應用私有文檔目錄’_doc’。 根據官方文檔&#xff1a; 為了安全管理應用的…

使用 F12 查看 Network 及數據格式

在瀏覽器中&#xff0c;F12 開發者工具的 “Network” 面板是用于查看網頁在加載過程中發起的所有網絡請求&#xff0c;包括 API 請求&#xff0c;以及查看這些請求的詳細信息和響應數據的。以下以常見的 Chrome 瀏覽器為例&#xff0c;介紹如何使用 F12 控制臺查看 Network 里…

Redis 2.6.12在Win10系統上的安裝教程

諸神緘默不語-個人CSDN博文目錄 這個版本的安裝包是跟同事要的&#xff0c;em&#xff0c;如果真的需要這個版本的話可以跟我要&#xff1a; 解壓后雙擊第一個bat文件&#xff0c;即可掛起Redis服務&#xff1a;

分布式數據庫中間件(DDM)的使用場景

華為云分布式數據庫中間件&#xff08;DDM&#xff09;是一款專注于解決數據庫分布式擴展問題的中間件服務&#xff0c;突破了傳統數據庫的容量和性能瓶頸&#xff0c;能夠實現海量數據的高并發訪問。以下是九河云總結的DDM的典型使用場景&#xff1a; 1. 互聯網應用 在電商、…

Ubuntu16.04 安裝OpenCV4.5.4 避坑

Ubuntu16.04 安裝C版OpenCV4.5.4 Ubuntu16.04 VSCode下cmakeclanglldb調試c 文章目錄 Ubuntu16.04 安裝C版OpenCV4.5.41. 下載Opencv壓縮包2. 安裝Opencv-4.5.43. 配置OpenCV的編譯環境4.測試是否安裝成功 1. 下載Opencv壓縮包 下載Opencv壓縮包&#xff0c;選擇source版本。…

RabbitMQ集群安裝rabbitmq_delayed_message_exchange

1、單節點安裝rabbitmq安裝延遲隊列 安裝延遲隊列rabbitmq_delayed_message_exchange可以參考這個文章&#xff1a; rabbitmq安裝延遲隊列-CSDN博客 2、集群安裝rabbitmq_delayed_message_exchange 在第二個節點 join_cluster 之后&#xff0c;start_app 就會報錯了 (CaseC…

QT開發:事件循環與處理機制的概念和流程概括性總結

事件循環與處理機制的概念和流程 Qt 事件循環和事件處理機制是 Qt 框架的核心&#xff0c;負責管理和分發各種事件&#xff08;用戶交互、定時器事件、網絡事件等&#xff09;。以下是詳細透徹的概念解釋和流程講解。 1. 事件循環&#xff08;Event Loop&#xff09;的概念 …

博客搭建 — GitHub Pages 部署

關于 GitHub Pages GitHub Pages 是一項靜態站點托管服務&#xff0c;它直接從 GitHub 上的倉庫獲取 HTML、CSS 和 JavaScript 文件&#xff0c;通過構建過程運行文件&#xff0c;然后發布網站。 本文最終效果是搭建出一個域名為 https://<user>.github.io 的網站 創建…

網絡通信---MCU移植LWIP

使用的MCU型號為STM32F429IGT6&#xff0c;PHY為LAN7820A 目標是通過MCU的ETH給LWIP提供輸入輸出從而實現基本的Ping應答 OK廢話不多說我們直接開始 下載源碼 LWIP包源碼&#xff1a;lwip源碼 -在這里下載 ST官方支持的ETH包&#xff1a;ST-ETH支持包 這里下載 創建工程 …

【MySQL】存儲引擎有哪些?區別是什么?

頻率難度60%???? 這個問題其實難度并不是很大&#xff0c;只是涉及到的相關知識比較繁雜&#xff0c;比如事務、鎖機制等等&#xff0c;都和存儲引擎有關系。有時還會根據場景選擇不同的存儲引擎。 下面筆者將會根據幾個部分盡可能地講清楚 MySQL 中的存儲引擎&#xff0…

【系統環境丟失恢復】如何恢復和重建 Ubuntu 中的 .bashrc 文件

r如果你遇到這種情況&#xff0c;說明系統環境的.bashrc 文件丟失恢復&#xff1a; 要恢復 ~/.bashrc 文件&#xff0c;可以按照以下幾種方式操作&#xff1a; 恢復默認的 ~/.bashrc 文件 如果 ~/.bashrc 文件被刪除或修改&#xff0c;你可以恢復到默認的版本。可以參考以下…