嘉賓 | 歐迪佐
編輯 | 李美涵
出品 | 51CTO技術(shù)棧(微信號(hào):blog51cto)
本文整理自快手高級(jí)技術(shù)專(zhuān)家歐迪佐在WOT2024大會(huì)上的主題分享,更多精彩內(nèi)容及現(xiàn)場(chǎng)PPT,請(qǐng)關(guān)注51CTO技術(shù)棧公眾號(hào),發(fā)送【W(wǎng)OT】即可直接領(lǐng)取。
日前,在51CTO主辦的WOT全球技術(shù)創(chuàng)新大會(huì)上,快手高級(jí)技術(shù)專(zhuān)家歐迪佐帶來(lái)了主題演講《LLM-based Agent在B端商業(yè)化的技術(shù)探索與實(shí)踐》,圍繞著B(niǎo)端商業(yè)化的業(yè)務(wù)場(chǎng)景,詳細(xì)介紹了構(gòu)建Agent技術(shù)平臺(tái)的實(shí)踐經(jīng)驗(yàn)與深入思考,為觀(guān)眾呈現(xiàn)了全新的視角。
本文將摘選其中精彩內(nèi)容,統(tǒng)一整理,希望為諸君帶來(lái)啟發(fā)。 本文將從以下三個(gè)部分展開(kāi):
1.大模型應(yīng)用建設(shè)背景
2. SalesCopilot技術(shù)平臺(tái)
3. 大模型應(yīng)用研發(fā)的思考
1.大模型應(yīng)用建設(shè)背景
首先是我們的建設(shè)背景,快手的商業(yè)化業(yè)務(wù)中臺(tái),所服務(wù)的對(duì)象包括我們公司內(nèi)部的一線(xiàn)的銷(xiāo)售、運(yùn)營(yíng)以及我們的代理商和服務(wù)商,業(yè)務(wù)涉及數(shù)據(jù)分析的一系列的場(chǎng)景。
在大模型出來(lái)之后,我們意識(shí)到很多場(chǎng)景都有機(jī)會(huì)去做智能化升級(jí)。
我們可選擇的技術(shù)方向不少,結(jié)合自身的場(chǎng)景,最終選擇了做RAG和Agent,前者是知識(shí)助手,后者就是智能體。
我們舍棄了其他與自身業(yè)務(wù)場(chǎng)景無(wú)關(guān)的部分,比如說(shuō)AIGC、垂直領(lǐng)域等,保證我們能夠聚焦于這兩個(gè)技術(shù)方向上。
2.SalesCopilot技術(shù)平臺(tái)
在做智能化升級(jí)的過(guò)程中,我們慢慢沉淀出SalesCopilot技術(shù)平臺(tái)。
我們做的第一個(gè)應(yīng)用是我們銷(xiāo)幫幫的智能客服。在推進(jìn)的過(guò)程中,我們逐漸意識(shí)到我們有機(jī)會(huì)幫助技術(shù)部沉淀一個(gè)大模型應(yīng)用研發(fā)平臺(tái)的。因此,我們一邊孵化應(yīng)用,一邊去為我們整個(gè)技術(shù)平臺(tái)做架構(gòu)方面的伏筆。
上圖為SalesCopilot的系統(tǒng)架構(gòu)圖,在大體上分為四個(gè)部分,三橫一縱。
三橫部分從下面往上看,最核心的部分就是AI引擎的部分。AI引擎包含前面所提到的RAG,這部分會(huì)在后面詳細(xì)展開(kāi)。還有業(yè)務(wù)意圖(Agent),它起到承上啟下的作用——上面連接業(yè)務(wù),下面連接各種業(yè)務(wù)系統(tǒng)。這里還有一個(gè)效果評(píng)測(cè)中心,再加上語(yǔ)義向量相關(guān)的一些組件。以上共同組成了AI引擎。
第二層是Chathub,我們目前主要服務(wù)的是面向智能客服的場(chǎng)景,所以我們就抽象出ChatHub這層,基于這個(gè)框架去接入多個(gè)智能客服的能力。
最上面一層是業(yè)務(wù)應(yīng)用,所謂的業(yè)務(wù)應(yīng)用是以一個(gè)租戶(hù)的身份接入進(jìn)來(lái),基于租戶(hù)去做數(shù)據(jù)隔離、業(yè)務(wù)個(gè)性化等。
一縱,包含兩部分:插件框架、多租戶(hù)框架。這就是我們整個(gè)平臺(tái)化的基礎(chǔ)架構(gòu)。
下面重點(diǎn)講AI引擎的部分。
第一個(gè)部分是RAG。RAG是在大模型應(yīng)用后,很快被大家識(shí)別和接受的技術(shù)范式,它在針對(duì)大模型的局限性做了有效的補(bǔ)充。這里順便講下大模型的幾個(gè)局限,幫助大家理解。
第一,幻覺(jué)問(wèn)題。在RAG的范式下,我們基于召回,給了LLM一個(gè)具有高度確定性的上下文,讓它在這個(gè)上下文中去組織回答。所以RAG并不能完全消除幻覺(jué),只是極大地緩解幻覺(jué)。
第二,大模型的知識(shí)時(shí)效問(wèn)題。大模型的訓(xùn)練成本時(shí)間成本和經(jīng)濟(jì)成本非常高,很容易面臨剛訓(xùn)練完就失效了的狀態(tài)。基于RAG的外掛知識(shí)庫(kù),它可以做到知識(shí)的實(shí)時(shí)更新。
第三,大模型的記憶容量有局限。這個(gè)問(wèn)題同樣可以通過(guò)召回加精排解決,把與用戶(hù)問(wèn)題最相關(guān)的信息提前整理出來(lái),放在一個(gè)有限的Prompt里。
第四,數(shù)據(jù)安全問(wèn)題。我們?cè)诖竽P陀?xùn)練時(shí)是絕不可能拿到其他企業(yè)內(nèi)部數(shù)據(jù)的,這也有賴(lài)于RAG緩解由此帶來(lái)的矛盾。
上圖為目前整個(gè)RAG的技術(shù)鏈路,由四個(gè)部分組成。離線(xiàn)鏈路上知識(shí)構(gòu)建和運(yùn)營(yíng)的部分,其是整個(gè)RAG運(yùn)轉(zhuǎn)的重要基礎(chǔ)。這里很容易被忽視,在座的各位都是偏技術(shù)的同學(xué),我們通常認(rèn)為把技術(shù)鏈路構(gòu)建起來(lái),好像就一定能得到一個(gè)好的結(jié)果,其實(shí)不是。如果沒(méi)有一個(gè)專(zhuān)門(mén)的團(tuán)隊(duì)去做知識(shí)的運(yùn)營(yíng)、知識(shí)質(zhì)量的保障、知識(shí)規(guī)模的增長(zhǎng)等等,就好比沒(méi)有油的車(chē)一樣跑不起來(lái)。
第二個(gè)部分是知識(shí)預(yù)處理,這部分比較常規(guī),比如說(shuō)要做切片、要做Embedding??焓钟袀€(gè)比較特殊的情況,我們大部分知識(shí)都是以云文檔的格式存在的,有對(duì)內(nèi)、對(duì)外兩種形式。而知識(shí)之間經(jīng)常相互引用,所以我們研發(fā)了一個(gè)知識(shí)下鉆的能力,舉個(gè)實(shí)際的例子,200篇知識(shí)文檔,經(jīng)過(guò)我們的下鉆擴(kuò)展后,最終庫(kù)里達(dá)到700篇。
以上是離線(xiàn)鏈路。離線(xiàn)鏈路里會(huì)有一個(gè)多路召回,這部分呢已經(jīng)在向量和ES中準(zhǔn)備好了。
在線(xiàn)鏈路的核心由三部分組成。
RAG的R是我們常規(guī)的檢索。RAG的A是向量召回的部分,也是三部分中的核心。G就是我們最終構(gòu)建的RAG Prompt,讓LLM總結(jié)的部分。
我們一直在優(yōu)化功能。在最開(kāi)始上線(xiàn)多路召回以后,我們發(fā)現(xiàn)這個(gè)策略能夠在向量上提升70%的效果。隨著發(fā)展,一定會(huì)發(fā)現(xiàn)在對(duì)Query的理解上需要調(diào)整——因?yàn)橛脩?hù)對(duì)系統(tǒng)的邊界、定義是沒(méi)有感知的,會(huì)隨意地提出問(wèn)題。這里就會(huì)倒逼我們調(diào)整對(duì)整個(gè)Query的理解,優(yōu)化應(yīng)對(duì)追問(wèn)、反問(wèn)的能力。而這些能力會(huì)慢慢成為引導(dǎo)這個(gè)系統(tǒng)進(jìn)一步發(fā)展的關(guān)鍵點(diǎn)。
下面來(lái)看幾個(gè)我們自己的案例。
這是整個(gè)我們自己做的第一個(gè)應(yīng)用及其效果。
可以看到,銷(xiāo)幫幫在整個(gè)商業(yè)化中覆蓋了30%以上的銷(xiāo)售人員;在維護(hù)知識(shí)庫(kù)方面,五個(gè)人的專(zhuān)門(mén)團(tuán)隊(duì)維護(hù)了200多篇知識(shí),而我們通過(guò)銷(xiāo)幫幫擴(kuò)展到700多篇;此外,機(jī)器人的攔截率達(dá)到78%左右。
應(yīng)用核心就是我們上個(gè)月做的多路召回+精排,對(duì)效果提升非常顯著。建議大家在實(shí)際工作中優(yōu)先嘗試。
在做業(yè)務(wù)的過(guò)程中,我們會(huì)遇到很多挑戰(zhàn),可以分成以下幾類(lèi)。首先是RAG本身的問(wèn)題,例如用戶(hù)的提問(wèn)泛化、不明確。這樣的提問(wèn)很容易被識(shí)別為一個(gè)Bad Case,但如果我們仔細(xì)分析,我們會(huì)發(fā)現(xiàn)是模型需要一些追問(wèn)能、問(wèn)題分類(lèi)理解的能力。而漏召回、回答準(zhǔn)確率的問(wèn)題,通過(guò)多路召回和精排就可以解決。最后是領(lǐng)域黑話(huà)帶來(lái)的問(wèn)題,需要在垂直領(lǐng)域里去做相關(guān)的沉淀。
其次是大模型相關(guān)的問(wèn)題。我們有時(shí)候會(huì)發(fā)現(xiàn)大模型的總結(jié)能力特別不靠譜,需要去做相關(guān)的Temperature和 Prompt的調(diào)整。在調(diào)整時(shí),一定要有相對(duì)應(yīng)的評(píng)測(cè)工具來(lái)保障調(diào)整后的效果是單調(diào)增長(zhǎng)的,否則有可能解決了一個(gè)問(wèn)題后,反而使原來(lái)好多的Good Case變成了Bad Case。像大模型的上下文長(zhǎng)度問(wèn)題,需要嘗試去做一些有限多輪的調(diào)整。
最后是用戶(hù)需求和當(dāng)前功能的不匹配。例如,我們觀(guān)測(cè)用戶(hù)使用過(guò)程中發(fā)現(xiàn),很多用戶(hù)與客服的交互是先甩一張圖,然后再進(jìn)行提問(wèn)。這說(shuō)明用戶(hù)在實(shí)際使用時(shí),對(duì)多模態(tài)的需求是非常強(qiáng)烈的。
再講一下我們Agent的實(shí)踐。
我們現(xiàn)在當(dāng)前階段對(duì)Agent的理解可能是,比tool use再高級(jí)一點(diǎn)。但這不是對(duì)Agent的全面的理解,首先,Agent最基本的能力確實(shí)有一個(gè)tool use的東西,再往上它要連接業(yè)務(wù),從本質(zhì)來(lái)看是在回應(yīng)用戶(hù)的需求、解決用戶(hù)任務(wù)。所以Agent要下連系統(tǒng),系統(tǒng)里面有業(yè)務(wù)接口、數(shù)據(jù)模型相關(guān)的能力。
在運(yùn)行態(tài)的時(shí)候,這些信息是如何被關(guān)聯(lián)起來(lái)的?主要是設(shè)計(jì)了一套關(guān)于接口和意圖的schema的東西。這套schema里包含了很多幫助大模型去理解這些API以及業(yè)務(wù)意圖的信息。
大家可以看紅字部分,我們?cè)诒磉_(dá)一個(gè)業(yè)務(wù)意圖的時(shí)候,會(huì)有三個(gè)概念:名稱(chēng)、描述和舉例說(shuō)明。當(dāng)你把這些信息組織到Prompt中之后,你會(huì)發(fā)現(xiàn),大模型對(duì)指令的服從性會(huì)提升。
其實(shí),我們最開(kāi)始實(shí)踐時(shí),并沒(méi)有把那個(gè)shot(舉例)放在一個(gè)特別高的位置上,但是這時(shí)發(fā)現(xiàn)大模型做意圖識(shí)別時(shí)準(zhǔn)確度較低。當(dāng)我們加入了不止一個(gè)shot時(shí),意圖識(shí)別準(zhǔn)確率馬上就提上來(lái)了。
整個(gè)意圖的執(zhí)行有三種模式。
其中,最簡(jiǎn)單的是所謂的單Plugin,單Plugin就是一個(gè)意圖直接對(duì)應(yīng)一個(gè)API,比如說(shuō)幫用戶(hù)搜一個(gè)網(wǎng)頁(yè)、查一下天氣,直接把參數(shù)拿去執(zhí)行就可以。
但是實(shí)際做業(yè)務(wù)的時(shí)候,不可能這么簡(jiǎn)單,比如銷(xiāo)售說(shuō)幫我查一下某個(gè)客戶(hù)簽合同的進(jìn)度,這里面可能涉及到這個(gè)客戶(hù)是不是合法的、簽的是哪個(gè)合同、簽了多少錢(qián),再把進(jìn)度的比例算出來(lái)。
所以,我們需要一個(gè)多Plugin意圖執(zhí)行能力。目前有兩種方式,一種是知道這個(gè)意圖是什么,提前編排好了大模型的執(zhí)行邏輯;另一種是大家談得比較多的ReAct,AI來(lái)做推理+執(zhí)行。不過(guò),我們?cè)趯?shí)踐中發(fā)現(xiàn),雖然推理+執(zhí)行這個(gè)概念特別性感,但穩(wěn)定性不佳,比如說(shuō)AutoGPT最好的表現(xiàn)只有50%左右,把這套東西推到線(xiàn)上系統(tǒng)是不可接受的。
這里幾個(gè)案例中,我們意圖執(zhí)行的方式有兩種:一種是通過(guò)自然語(yǔ)言的方式去提取用戶(hù)的意圖,然后執(zhí)行;另一種方式是,識(shí)別到用戶(hù)意圖后,通過(guò)彈出卡片的方式確認(rèn),并快速執(zhí)行最終任務(wù)。
再講一下,我們關(guān)于大模型的關(guān)鍵設(shè)計(jì),主要是以下三點(diǎn)。
可插拔,能根據(jù)需求快速替換或更新模型,支持多模型協(xié)作,讓不同任務(wù)調(diào)用最適合的模型;
LSP,LLM Specific Prompt/模型專(zhuān)用提示LLM各有調(diào)性,皆有適合自己的Prompt風(fēng)格;
量化LLM,量化大模型通過(guò)減少參數(shù)精度來(lái)降低資源需求,僅少量智能損失可跑高性能跑在CPU上。
這個(gè)就是我們的效果評(píng)測(cè)中心。需要分享的是,我們?cè)谧龃竽P万?qū)動(dòng)的應(yīng)用研發(fā)時(shí)候,必然面臨著不確定,效果永遠(yuǎn)不會(huì)達(dá)到100%。必須要匹配相應(yīng)的評(píng)測(cè)中心,以保證你的系統(tǒng)是可控的、單調(diào)的達(dá)到效果的提升。
3.大模型應(yīng)用研發(fā)的思考
最后講四點(diǎn)思考。
第一,生產(chǎn)力:智能化技術(shù)平權(quán)。大模型技術(shù)實(shí)現(xiàn)了智能化技術(shù)的普及,使得即使是十個(gè)人的小團(tuán)隊(duì)也能通過(guò)獲取大模型服務(wù),快速實(shí)現(xiàn)高質(zhì)量的基礎(chǔ)效果,做一個(gè)大的項(xiàng)目。除非走到非常深水區(qū)的地方,才需要算法的介入。
第二,效果提升:乘積效應(yīng)(RAG)。RAG通過(guò)系統(tǒng)性?xún)?yōu)化,如Query理解、知識(shí)維護(hù)和多路召回等關(guān)鍵環(huán)節(jié),顯著提升了知識(shí)問(wèn)答的效果。但當(dāng)效果達(dá)到70%后,再往上突破就會(huì)有一定難度,需要深入的工作。
第三,路徑選擇:從垂直細(xì)分領(lǐng)域開(kāi)始。我們選擇從垂直細(xì)分領(lǐng)域開(kāi)始應(yīng)用大模型,階段性地選擇優(yōu)先做標(biāo)桿應(yīng)用,同時(shí)做架構(gòu)布局,逐步向成熟的Agent平臺(tái)發(fā)展。相反,如果起步時(shí)去做通用化大Agent,則面臨研發(fā)周期長(zhǎng)、用戶(hù)反饋慢的問(wèn)題。
第四,需求趨勢(shì):多模態(tài)。多模態(tài)交互將成為Agent發(fā)展的趨勢(shì),因其符合人類(lèi)自然交互體驗(yàn)且信息密集,預(yù)計(jì)隨著技術(shù)進(jìn)步,多模態(tài)能力將不斷提升。