開篇
我是孫林,2021-京東集團(tuán)-博士管培生,清華大學(xué)軟件學(xué)院博士,工作期間提交專利5篇,獲得北京亦麒麟優(yōu)秀人才稱號(hào)。目前,我擔(dān)任算法中臺(tái)研發(fā)部數(shù)據(jù)開發(fā)工程師,圍繞檢索增強(qiáng)生成應(yīng)用領(lǐng)域開展研究工作。
本文將從背景、核心工作、業(yè)務(wù)實(shí)踐與反饋以及未來(lái)展望等幾個(gè)方向進(jìn)行介紹。
背景介紹
大語(yǔ)言模型(LLM)在自然語(yǔ)言處理和自然語(yǔ)言理解方面取得了重大突破。大模型與應(yīng)用場(chǎng)景的結(jié)合有助于可以在降低成本的同時(shí)提高效率。在具體場(chǎng)景的落地中,通用領(lǐng)域的大模型缺乏具體的領(lǐng)域知識(shí),需要對(duì)其進(jìn)行微調(diào),這將消耗大量的計(jì)算資源。
當(dāng)前,檢索增強(qiáng)生成(RAG)作為大語(yǔ)言應(yīng)用的一種模式,可以將大語(yǔ)言模型強(qiáng)大的理解能力和領(lǐng)域知識(shí)相結(jié)合,可以提高模型準(zhǔn)確性和效率。RAG主要流程分為兩步:1. 從知識(shí)庫(kù)中檢索出和問題相關(guān)的內(nèi)容;2.將相關(guān)的知識(shí)拼接到prompt中,讓LLM基于相關(guān)知識(shí)和用戶問題進(jìn)行回答。以下是一個(gè)RAG prompt示例:
你是京東一名資深的商家助理,專注解答用戶編成時(shí)候遇到的問題。請(qǐng)基于 '---' 之間的相關(guān)參考內(nèi)容對(duì)用戶的問題進(jìn)行回答。 相關(guān)參考內(nèi)容: --- 1. 入駐京東萬(wàn)商平臺(tái)店鋪公司資質(zhì)要求如下: 營(yíng)業(yè)執(zhí)照:加載“統(tǒng)一社會(huì)信用代碼”的營(yíng)業(yè)執(zhí)照,(需確保未在企業(yè)經(jīng)營(yíng)異常名錄中且所售商品在營(yíng)業(yè)執(zhí)照經(jīng)營(yíng)范圍內(nèi)) 企業(yè)法人身份證:公司法人身份證正反面,有效期大于60天。 2. 入駐京東萬(wàn)商平臺(tái),經(jīng)營(yíng)類目為一級(jí)類目(京喜供應(yīng)鏈中心)鞋包服飾,需要提交品牌資質(zhì)。 --- 用戶問題:入駐京東萬(wàn)商平臺(tái)店鋪,公司需要什么資質(zhì) 注意以下要求: 1. 在回答時(shí),盡可能參考原文 2. 若無(wú)法提供回答,請(qǐng)回復(fù)聯(lián)系人工客服
在上述示例中,由于添加了相關(guān)的知識(shí),大模型可以對(duì)公司資質(zhì)問題給出準(zhǔn)確的回答,相對(duì)于直接使用LLM進(jìn)行回答,RAG可以更有效地借助垂域知識(shí)??偟膩?lái)說(shuō),RAG的主要流程如下:
由于RAG的可解釋性、不依賴模型微調(diào)、能適應(yīng)多樣化的應(yīng)用需求等優(yōu)點(diǎn),市面上存在著諸多以RAG為核心的解決方案,主要包括框架和應(yīng)用兩類:
框架類:主要提供面向開發(fā)者的SDK。用戶需要自行對(duì)接不同的模型資源,構(gòu)建自己的應(yīng)用流程。自定義程度高,但具備一定的上手難度。相關(guān)框架如langchain,LlamaIndex, promptflow等
應(yīng)用類:開箱即用,大多是2C的類知識(shí)助手應(yīng)用,一般流程為用戶上傳文檔(知識(shí)庫(kù)),然后可以基于知識(shí)庫(kù)進(jìn)行端到端的問答(通常,不同的應(yīng)用的內(nèi)置問答流程有在關(guān)鍵環(huán)節(jié)有一些區(qū)別,比如召回策略、是否使用Agent等)。相關(guān)應(yīng)用如Dify,有道QAnything,字節(jié)Coze等。
在和業(yè)務(wù)方的合作中,我們發(fā)現(xiàn)業(yè)務(wù)方通常有高度定制化的需求。已有的框架和應(yīng)用解決方案無(wú)法快速地用于批量解決應(yīng)用需求,如:
小白類業(yè)務(wù)方:沒有算法開發(fā)人員,只關(guān)心業(yè)務(wù)邏輯,希望平臺(tái)提供存儲(chǔ)、算力、策略,并結(jié)合應(yīng)用方數(shù)據(jù)構(gòu)建高可用服務(wù);
多輸入輸出:在特定場(chǎng)景中是多輸入多輸出的,與主流的RAG鏈路不兼容;
人工快速干預(yù):在接收到用戶的特定輸入下返回特定的結(jié)果,以保證模型可靠性;
數(shù)據(jù)鏈路閉環(huán):除了數(shù)據(jù)管理,還需要有輸入輸出管理頁(yè)面,用于事后的效果評(píng)價(jià)與bad-case分析及效果優(yōu)化;
優(yōu)質(zhì)數(shù)據(jù)導(dǎo)出:用于微調(diào)模型,達(dá)到更高準(zhǔn)確率;
開發(fā)生產(chǎn)隔離:模型、數(shù)據(jù)、接口服務(wù)需要區(qū)分開發(fā)環(huán)境和生產(chǎn)環(huán)境;
其他需求...
在此背景下,我們從零開始創(chuàng)建了RAG平臺(tái),希望通過平臺(tái)的能力,提供基于大模型的全鏈路端到端問答能力。
對(duì)于無(wú)需定制化流程的用戶:提供知識(shí)助手應(yīng)用,通過平臺(tái)內(nèi)置的默認(rèn)RAG邏輯進(jìn)行問答;
對(duì)于需要定制化需求的用戶:提供資源管理和流程編排能力,讓用戶更方便地結(jié)合業(yè)務(wù)邏輯進(jìn)行二次開發(fā)。
技術(shù)攻堅(jiān)突破的核心工作
RAG平臺(tái)的主要框架如下圖所示
服務(wù)資源打通
從平臺(tái)視角看,服務(wù)資源包括數(shù)據(jù)存儲(chǔ)服務(wù)、模型調(diào)用服務(wù)、模型部署服務(wù)等。從用戶角度看,用戶對(duì)服務(wù)不關(guān)心,用戶只關(guān)心:“我用大模型對(duì)我的數(shù)據(jù)進(jìn)行問答”,為了實(shí)現(xiàn)這個(gè)需求,需要在京東體系內(nèi)對(duì)不同的服務(wù)資源進(jìn)行打通
存儲(chǔ)資源:打通京東Vearch向量庫(kù),提供相似文本檢索、數(shù)據(jù)過濾等能力;
大語(yǔ)言模型/embedding模型:打通集團(tuán)大模型網(wǎng)關(guān),提供平臺(tái)內(nèi)置大語(yǔ)言模型,支持用戶通過EA調(diào)用自部署模型;
服務(wù)部署:用戶構(gòu)建了自定義Pipeline之后,支持一鍵發(fā)布用于生產(chǎn)環(huán)境;
算力資源:支持用戶通過平臺(tái)進(jìn)行模型微調(diào)并無(wú)縫替換原有模型。
大語(yǔ)言模型Pipeline構(gòu)建
以上圖基本RAG流程為例,以下代碼框架表示了用戶如何通過組件化方式構(gòu)建自定義RAG流程:
rag = Pipeline() rag.add_component(Input("in", input_keys=["query"])) rag.add_component(VectorStore("vectorstore")) rag.add_component(Prompt("prompt", preset="PlainRAG")) rag.add_component(ChatModel("llm")) rag.add_component(Output("output")) rag.connect("in.query", "vectorstore") rag.connect("in.query", "prompt.question") rag.connect("vectorstore", "prompt.context") rag.connect("prompt", "llm") rag.connect("llm", "output") rag.deploy()
通過組件化方式構(gòu)建Pipeline,用戶只需要定義塊和塊之間的連接關(guān)系。相對(duì)于基于開源框架構(gòu)建Pipeline,此方式可以使得用戶重點(diǎn)關(guān)心業(yè)務(wù)流程,大大降低了用戶自定義流程中的使用門檻。當(dāng)前,平臺(tái)內(nèi)置支持以下組件能力:
輸入輸出組件:支持自定義多輸入/多輸出;
知識(shí)庫(kù)組件:支持模糊匹配與關(guān)鍵字匹配,用于召回相似內(nèi)容;
大模型組件:提供大模型訪問接口;
Prompt組件:提供默認(rèn)Prompt模版與自定義Prompt能力;
Python函數(shù)組件:用戶可通過Python函數(shù)構(gòu)建任何自定義功能塊;
分支組件:支持特定輸出情況下運(yùn)行特定的子流程;
Agent組件:提供Agent能力(如ReAct);
一鍵部署:支持本地運(yùn)行Pipeline與一鍵部署,提供訪問接口。
看板&效果優(yōu)化
當(dāng)前,用戶的一打痛點(diǎn)是:構(gòu)建了RAG流程之后,無(wú)法對(duì)效果進(jìn)行調(diào)優(yōu)。實(shí)現(xiàn)效果調(diào)優(yōu),主要包含以下幾個(gè)角度:
全鏈路數(shù)據(jù)回流:B端用戶通常會(huì)對(duì)服務(wù)歷史進(jìn)行收集以查看服務(wù)質(zhì)量。對(duì)于一個(gè)請(qǐng)求,平臺(tái)對(duì)運(yùn)行時(shí)的Pipeline中間狀態(tài)進(jìn)行保存,用戶可以回溯每個(gè)步驟得到了什么結(jié)果以進(jìn)行進(jìn)一步分析。通過完整的運(yùn)行時(shí)支持中間數(shù)據(jù)跟蹤,全鏈路的數(shù)據(jù)得以收集;
數(shù)據(jù)工程:"garbage in, garbage out"也適用于本場(chǎng)景,數(shù)據(jù)工程是一個(gè)大方向。從數(shù)據(jù)類型角度,平臺(tái)支持了txt、docx、pdf、oss文件等多種數(shù)據(jù)類型,從分割策略來(lái)看,平臺(tái)支持遞歸分割、固定長(zhǎng)度分割等策略,從數(shù)據(jù)增強(qiáng)角度,平臺(tái)支持qa抽取,語(yǔ)義理解等;
關(guān)鍵組件/能力優(yōu)化:當(dāng)前有多種策略用于對(duì)RAG效果進(jìn)行提升,平臺(tái)將優(yōu)化策略沉淀成基礎(chǔ)組件方便用戶快速調(diào)用,如在檢索前提供語(yǔ)義理解、步驟拆解等,在檢索時(shí)提供對(duì)話檢索、self-query等能力,檢索后提供標(biāo)簽過濾、重排等能力;
路由:提供緩存路由模塊,對(duì)于配置的問答進(jìn)行快速干預(yù)能力;
評(píng)估體系&模型迭代:傳統(tǒng)場(chǎng)景效果無(wú)法提升的一個(gè)主要原因是,提供了端到端的問答服務(wù)之后,不知道什么情況下回答的好,什么情況下回答的不好。通過全鏈路數(shù)據(jù)回流和評(píng)估體系的打通,平臺(tái)可以自動(dòng)觸發(fā)embedding、LLM等關(guān)鍵模型的微調(diào),使得效果優(yōu)化可以自動(dòng)化進(jìn)行。
業(yè)務(wù)實(shí)踐與反饋
當(dāng)前,RAG平臺(tái)已經(jīng)服務(wù)多個(gè)項(xiàng)目,部分項(xiàng)目列舉如下:
B商城商家AI助理應(yīng)用(23年黑馬二等獎(jiǎng)項(xiàng)目):解決平臺(tái)商家與一線人員的業(yè)務(wù)、數(shù)據(jù)、流程等問題,當(dāng)前已在多個(gè)業(yè)務(wù)線投入使用,對(duì)上千家店鋪提供服務(wù)。我為此項(xiàng)目提供后端RAG服務(wù),收獲項(xiàng)目合作方感謝信。相關(guān)核心鏈路為:
商品型號(hào)規(guī)范化:基于標(biāo)準(zhǔn)型號(hào)庫(kù)中的型號(hào)對(duì)外包清洗的JD型號(hào)進(jìn)行相似度匹配,避免因商品型號(hào)不一致導(dǎo)致糾纏。型號(hào)規(guī)范化效率從400sku/人日提高至750sku/人日,提效87%,獲得項(xiàng)目合作方感謝信。
知識(shí)助手應(yīng)用:對(duì)C端用戶提供服務(wù),提供開箱即用產(chǎn)品頁(yè)面。本季度對(duì)知識(shí)助手存量用戶進(jìn)行遷移,支持日活用戶約7000,日訪問量2-3w,目前灰度測(cè)試中。
其他:暫略。
未來(lái)展望
大模型的發(fā)展能夠在多個(gè)業(yè)務(wù)場(chǎng)景中進(jìn)行落地,RAG由于其能讓LLM擁有更豐富的知識(shí),已在多種應(yīng)用場(chǎng)合中進(jìn)行驗(yàn)證。在此基礎(chǔ)上,Agent由于具備一定的“觀察思考”能力和工具調(diào)用能力未來(lái)將更大地豐富LLM的能力。未來(lái)我將投身于RAG業(yè)務(wù)落地效果提升及單/多Agent在業(yè)務(wù)中的價(jià)值探索。在此基礎(chǔ)上,結(jié)合京東內(nèi)部的應(yīng)用場(chǎng)景,打造更易用的平臺(tái)能力,快速將基礎(chǔ)能力復(fù)用于不同的業(yè)務(wù),以提高用戶開發(fā)效率,構(gòu)建快速服務(wù)終端用戶能力。
審核編輯 黃宇
-
存儲(chǔ)
+關(guān)注
關(guān)注
13文章
4314瀏覽量
85846 -
大模型
+關(guān)注
關(guān)注
2文章
2450瀏覽量
2706
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論