喜馬拉雅基于大模型 ChatBl 實踐探索
一、背景介紹
喜馬拉雅在數據分析領域面臨諸多挑戰。
對于業務來說,使用數據的門檻高,需求響應的時效性差,看板、產品不靈活,難以滿足使用需求。運營人員通過自助取數產品查看數據,再用表格里的透視圖進行分析,整個流程非常低效。
對于數倉、BI、數據開發人員來說,資源有限,開發成本高,排期壓力大,并且數據消費效率低,數據倉庫中很多加工好的高質量數據沒有通過產品輸出,使得數據價值沒有得到最大化地釋放。
因此,我們希望利用大模型,建立一套既能夠釋放開發壓力,又方便業務人員使用,從而使數據價值得到充分發揮的 BI 應用。
二、產品架構
1. 聯合建模需求場景
我們利用大模型開發了一個 ChatBI 產品。產品形態有三種:網頁端、釘釘機器人,以及對外提供的 API。
上圖中展示了幾個真實的例子,可以看到,該產品不僅可以供運營人員使用,也可以為數據開發治理團隊提供支持。
2. 產品結構
產品架構分為兩個層面 ChatBI 層和數據智能引擎層。ChatBI 層提供了釘釘機器人、網頁端和開放 API 接口給用戶使用;背后的數據智能引擎,通過 Agent 智能體對用戶的提問做意圖識別,包括用戶指導、指標口徑、數據查詢、SQL 生成、數據開發和數據治理等不同類別的 Agent 智能體。
整體架構分為五層,自下而上分別為:
- 模型接入層:借助公司的大模型平臺,接入了 embedding 模型、商用文本模型、自研文本模型和自研音頻模型等。
- 數據集和知識管理能力層:大模型生成 SQL 的準確性至關重要,而準確性非常依賴于 prompt 上下文,知識處理就是為了更好地表達上下文。在這一層,使大模型學習數據庫中的表信息、業務知識、專業詞匯、規則和一些 SQL 方言,可以更好理解 prompt,從而做出更為準確的回答。
- 工具能力層:提供了解決用戶問題要使用的工具,包括檢索增強、會話記憶、DB 查詢、語法檢查、權限校驗等工具。同時為了保證質量,我們還構建了一套自動測試評估體系,以及反饋和日志追蹤體系。
- 智能體能力層:包括意圖識別、智能改寫、智能選擇數據集、NL2SQL、智能問數、數據繪圖、指標口徑查詢、分析總結和 SQL 自動糾錯等智能體。
- 產品能力:基于上述大模型、Agent 和工具的能力,產品提供了智能選表、智能問數、智能問指標、單表問答、多輪問答、聯表查詢、智能繪圖、分析總結等功能。
- 產品形態:通過釘釘機器人、網頁版和開放 API 接口提供給用戶使用。
3. 智能問數發布流程
首先將表、字段知識、SQL 方言、詞匯知識、規則、業務知識和樣例等數據加工,建模、治理保存到數據倉庫中,建立領域知識庫,完成知識準備;將非結構化知識向量化處理,結構化知識關系化處理,存成圖關系數據;構建評測問題,測試評估知識庫,根據評測結果優化知識庫;數據集問數發布后根據用戶使用反饋優化數據源和數據知識,通過提示詞 prompt 工程、RAG、Agent 工程優化、模型微調等不斷升級迭代模型。
三、落地實踐
1. 人是怎么寫 SQL 的?
大模型是模擬人的思考過程而設計的,所以首先看一下人是怎么寫 SQL 的。要寫一個 SQL 會經歷幾個階段,首先是找到需要使用的表和字段,并理解字段的含義,包括字段類型和值;接著定義同環比和時間,理解黑話、同義詞和口徑,比如DAU 代表什么,大親子業務又指的是什么;還要了解不同的 SQL 方言和語法,比如MySQL 中是 WEEKDAY,而 StarRocks 中則是 DAYOFWEEK、DAYOFWEEK_ISO,又如 DAYOFWEEK 本周第一天是從周日開始的。
例如上面這個問題:“本周小說頻道的專輯 DAU 趨勢如何?環比?”將這句話拆開看,用到了時間語義規則、字段枚舉知識、企業專業知識、同環比規則,以及自動化圖表展示等知識。
用戶可能還會追問。
根據上述過程,最終的鏈路為:用戶提問后,首先對用戶意圖進行識別,明確要解決的問題;將用戶提問進行改寫,從知識庫中搜索召回指標描述,補充時間、規則和指標描述等;通過大模型返回數據集結果,通過將提問在知識庫中搜索召回數據集結果,將這些結果排序后,選擇數據集;判斷數據集類型是指標和表類型,若是指標,通過服務 API 取數,選擇圖表展示;如果數據集類型是表,將改寫后的提問補充知識庫擴寫成 prompt,輸出 NL2SQL,對 SQL 進行校驗、糾錯、取數、選擇圖表展示;將圖表返回給用戶。
2. 大模型推理優化
大模型推理優化的主要方法包括:
- Prompt Engineering:為大模型提供好的角色、指令和上下文;
- RAG:為大模型提供更加精準的知識,限定上下文輸入,解決模型幻覺等問題;
- Fine-Tuning:指令遵循等;
- RAG+Fine-Tuning;
- 智能體 Agent:將復雜的工作規劃為多智能體的結構,對各部分分別進行優化,從而提升整體效率;
- 大模型迭代升級。
優化工作包括如下一些層面。
知識層面:完善表信息、提高規則質量,提供足夠好的樣例,建立高質量的知識庫。
技術層面:優化 prompt 提示詞工程,拆分為多個智能體,各司其職,基礎模型的升級迭代和微調,采用多路召回和重排(包括向量召回、關系化召回、大模型召回等)。
產品層面:首先是提高和用戶的交互性,通過推薦給用戶高頻問題、展示數據集信息、選擇引導等提供給用戶更多信息,讓用戶提問更準確;并且通過多輪提問,保存用戶聊天信息,點贊、點踩、標記的內容等輔助判斷用戶提問意圖,返回更準確的回答。另外,增強可解釋性,取數過程可追溯,展示取數邏輯、數據集信息、數據表說明、解釋業務知識等。
質量評測層面:保證足夠的單元測試,構建充足的數據集問數測試,保證測試驗證全面有效,同時后臺標注線上運行結果,定期復盤。
Trace 層面:保證問數全鏈路可追蹤和反饋,持續改進產品和模型學習。RAG&Recall Trace:每個階段知識過濾、數據召回、重排情況;LLMs Trace:生成的 SQL、Prompt、返回的結果;意圖識別 Trace:路由、智能體的選擇;工具 Trace:API、SQL、權限 Trace 等;狀態機:意圖識別、數據集選擇狀態、SQL 生成階段、查詢數據階段等;用戶反饋 Trace:點贊、點踩、標記、問題分類、狀態等;Cost Trace:每個階段的時間消耗、Token 消耗。
3. 上線效果
上線兩周,UV 超過了自助取數工具,PV 已經過半;取數響應效率比傳統取數效率快數倍;準確率達到了 85% 左右。
我們期望最終形成數據智能飛輪。通過持續優化,讓 ChatBI 更智能、更懂用戶,同時其中的問題不斷積累,讓我們有更多、更好的數據,數據得到更好地消費,為用戶提供更好的體驗,使運營決策更便捷,業務更成功。
四、未來展望
未來將繼續提升產品能力,包括意圖識別、智能改寫、智能修復、智能圖表展示的能力。同時,探索 DataOps 相關智能體,例如 SQL 生成、SQL 優化、排查等智能體。另一方面,將智能體與之前構建的產品能力相融合,讓所有數據產品都具備自然語言的交互能力。