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