免费在线观看一区二区三区,激情亚洲影院在线观看,亚洲天堂1区
首頁(yè) > 資訊 > 數(shù)字化

大模型技術(shù)實(shí)踐(三)|10分鐘用LangChain和Llama 2打造心靈療愈機(jī)器人

2023/09/08 09:53      IT產(chǎn)業(yè)網(wǎng)


  上期文章我們實(shí)現(xiàn)了Llama 2-chat-7B模型的云端部署和推理,本期文章我們將用“LangChain+Llama 2”的架構(gòu)打造一個(gè)定制化的心靈療愈機(jī)器人。有相關(guān)知識(shí)背景的讀者可以直接閱讀「實(shí)戰(zhàn)」部分。

  1 背景

  1.1 微調(diào) vs. 知識(shí)庫(kù)

  由于大模型在垂直行業(yè)領(lǐng)域的問(wèn)答效果仍有待提升,因此,領(lǐng)域知識(shí)的注入成為了最直接的解決方案之一。知識(shí)注入方法可以分為領(lǐng)域微調(diào)(Fine-tuning)和外掛知識(shí)庫(kù)(Knowledge Base)兩種。

  1. 領(lǐng)域微調(diào)

  微調(diào)是通過(guò)少量特定用例的增量數(shù)據(jù)對(duì)基礎(chǔ)模型進(jìn)行進(jìn)一步訓(xùn)練,改變其神經(jīng)網(wǎng)絡(luò)中的參數(shù)權(quán)重。微調(diào)適用于任務(wù)或域定義明確,且有足夠的標(biāo)記數(shù)據(jù)的場(chǎng)景,比如風(fēng)格微調(diào)。目前常用的微調(diào)方法包括Freeze,P-tuning和LoRA,相關(guān)細(xì)節(jié)會(huì)在下期文章中詳細(xì)介紹。

  然而,微調(diào)方法的不足之處在于:

  ▪ 高質(zhì)量訓(xùn)練數(shù)據(jù)集的構(gòu)建,微調(diào)訓(xùn)練所需的算力以及微調(diào)模型定期更新等開(kāi)銷都不容小覷

  ▪ 試錯(cuò)成本較高,特定領(lǐng)域數(shù)據(jù)一般難以覆蓋模型已學(xué)到的參數(shù),且可能會(huì)導(dǎo)致模型其他下游任務(wù)的表現(xiàn)下降

  2. 外掛知識(shí)庫(kù)

  外掛知識(shí)庫(kù)的本質(zhì)在于不修改基座模型參數(shù),通過(guò)提示詞工程(Prompt Engineering)將特定知識(shí)作為prompt中的context,即召回相關(guān)性最高的幾個(gè)文檔,讓模型分析這些蘊(yùn)含知識(shí)后,并返回答案。知識(shí)庫(kù)適合要求輸出明確且精度高的任務(wù)。

  相對(duì)于微調(diào),知識(shí)庫(kù)的優(yōu)勢(shì)在于:

  ▪ 回答精確度更高,基于相關(guān)文檔中的最相關(guān)特定段落進(jìn)行語(yǔ)義搜索能消除查詢歧義以生成更精確的答案

  ▪ 適應(yīng)性更強(qiáng),用戶可以通過(guò)輕松更新信息源來(lái)調(diào)整和適配新的領(lǐng)域

  但大模型上下文窗口長(zhǎng)度的限制和Prompt的構(gòu)造等因素帶來(lái)的潛在精度下降也需要納入知識(shí)庫(kù)構(gòu)建的考量。

  為了打造特定領(lǐng)域(Domain-specific Knowledge)的知識(shí)問(wèn)答系統(tǒng),我們需要借助提供了外掛知識(shí)庫(kù)的搜索方案LangChain框架。

  1.2 LangChain模塊

  LangChain是一個(gè)由語(yǔ)言模型驅(qū)動(dòng)的用于開(kāi)發(fā)應(yīng)用程序的框架。

  LangChain主要的兩個(gè)能力是:

  a. Data-aware:將不同數(shù)據(jù)源接入到語(yǔ)言模型中

  b. Agentic:允許語(yǔ)言模型和LangChain環(huán)境交互

  LangChain的核心模塊包括Models,Prompts,Chains,Indexes,Agents等 [1]。對(duì)于每一個(gè)模塊,LangChain都提供了標(biāo)準(zhǔn)化的可拓展接口。

  圖1:LangChain部分模塊 [2]

  除了用LLM Wrapper可以接入眾多的大模型(如 OpenAI、Cohere、Hugging Face),LangChain同時(shí)也通過(guò)VectorStore Wrapper接口集成了主流的向量數(shù)據(jù)庫(kù)(如 Milvus、Pinecone、Chroma等)來(lái)優(yōu)化語(yǔ)義搜索。LangChain能接入的數(shù)據(jù)類型涵蓋了文本、PPT、圖片、HTML、Pdf等非結(jié)構(gòu)化文件。相較于傳統(tǒng)數(shù)據(jù)庫(kù)的精確搜索,即完全匹配,向量數(shù)據(jù)庫(kù)使用最鄰近(Approximate Nearest Neighbor,ANN)算法和相似度度量(如余弦相似度,內(nèi)積等)來(lái)找到和查詢問(wèn)題最相似的向量。基于本地知識(shí)庫(kù)問(wèn)答的大致流程如下:

  這里以Milvus數(shù)據(jù)庫(kù)和ChatGPT作為示例:

  圖2:LangChian + Milvus + ChatGPT pipeline [3]

  2 實(shí)戰(zhàn)

  目前,我們已經(jīng)拆解完了LangChain+LLM文檔問(wèn)答的大致鏈路,接下來(lái)我們正式進(jìn)入實(shí)戰(zhàn)環(huán)節(jié)。

  2.1 環(huán)境搭建

  a. 安裝LangChain

  確保Python 版本≥ 3.8.1 且 <4.0。

  b. 部署LLama 2

  關(guān)于Llama 2模型的部署,詳情可參見(jiàn)

  i. 上期文章“大模型技術(shù)實(shí)踐(二)|關(guān)于Llama 2你需要知道的那些事兒”:https://mp.weixin.qq.com/s/9WISpAN91duVYVwfkZQaDw

  ii. UCloud官方的“LLaMA2 模型快速部署”文檔:https://docs.ucloud.cn/gpu/practice/LLaMA2?id=llama2-模型快速部署

  c. 下載Embedding 模型

  這里我們選擇text2vec-large-chinese [4]這個(gè)Embedding模型,下載地址為:https://huggingface.co/GanymedeNil/text2vec-large-chinese

  對(duì)于中文的場(chǎng)景,也有其他優(yōu)秀的開(kāi)源模型可供選擇,如m3e和bge等[5]。

  d. 下載數(shù)據(jù)集

  心靈雞湯文本數(shù)據(jù)集:https://huggingface.co/datasets/soulteary/warm-chicken-soup/

  這個(gè)數(shù)據(jù)集是從Google網(wǎng)頁(yè)上爬取的一些心靈雞湯引用短文,共包含631條文本

  2.2 文檔解析

  a. 加載數(shù)據(jù)集

  LangChain對(duì)于不同格式的數(shù)據(jù)源內(nèi)置了不同的解析腳本,最終這些數(shù)據(jù)都將轉(zhuǎn)換為純txt文本格式,以實(shí)現(xiàn)文本標(biāo)準(zhǔn)化。

  b. 文本切分

  文本切分中的chunk_size指定了切分后的文本塊的字?jǐn)?shù),chunk_overlap指定了切分文本塊之間的重疊字?jǐn)?shù)。由于雞湯引用文本總長(zhǎng)度較短,且文本內(nèi)部語(yǔ)義關(guān)聯(lián)度高,所以這里的chunk_size設(shè)置為50,chunk_overlap設(shè)置為20。

  c. 文本嵌入和向量庫(kù)

  文本切分后,我們需要將文本進(jìn)行向量化表示,將其映射為低維稠密的向量并存儲(chǔ)到然向量數(shù)據(jù)庫(kù)中。向量數(shù)據(jù)庫(kù)選用了無(wú)需注冊(cè)的FAISS。

  2.3 加載模型

  2.4 語(yǔ)義檢索

  接下來(lái),我就能根據(jù)構(gòu)建好的向量數(shù)據(jù)庫(kù)召回對(duì)應(yīng)文本片段。

  a. 向量化召回

  FAISS默認(rèn)使用L2(歐式距離),召回的文檔按照相似度結(jié)果從大到小排序。

  b. 設(shè)置提示詞模板

  以下是Llama 2默認(rèn)的提示詞模板

  我們可以參考上面的模板,根據(jù)場(chǎng)景定制化自己的模板來(lái)拼接query和召回結(jié)果

  2.5 推理示例

  我們對(duì)LLM的參數(shù)進(jìn)行設(shè)置,例如最大令牌(max_new_tokens)、最高k值(top_k)、溫度(temperature)和重復(fù)懲罰(repetition_penalty)等等。最后,將prompt喂給模型。

  3 外掛知識(shí)庫(kù)的問(wèn)題和優(yōu)化

  3.1 LLM+Embedding-Search的局限

  外掛知識(shí)庫(kù)將用戶問(wèn)題和本地知識(shí)向量化,比較兩者的向量相似度(Vector Similarity)進(jìn)行召回。然而,這種全量的Embedding-Search在面對(duì)多知識(shí)點(diǎn)聚合處理的場(chǎng)景下,存在召回精度低的問(wèn)題。因?yàn)橹R(shí)庫(kù)的構(gòu)建是對(duì)單個(gè)知識(shí)點(diǎn)進(jìn)行索引,而非對(duì)不同知識(shí)點(diǎn)的排列組合分別索引。

  為了避免召回遺漏,直觀的處理方法包括降低相似度閾值(similarity score threshold)和增加召回?cái)?shù)量(top_k),但這不免會(huì)引入無(wú)關(guān)的知識(shí)點(diǎn)噪聲且增加和LLM交互的token開(kāi)銷。

  3.2 效果優(yōu)化方向

  3.2.1 意圖識(shí)別和召回優(yōu)化

  提升問(wèn)答系統(tǒng)的精度可以從意圖識(shí)別和召回優(yōu)化兩個(gè)角度考慮,且兩者都可以用關(guān)鍵詞表示,即從直接將用戶query和知識(shí)點(diǎn)進(jìn)行embedding轉(zhuǎn)變?yōu)閷?duì)兩者提取關(guān)鍵詞后再進(jìn)行匹配。意圖識(shí)別可以通過(guò)關(guān)鍵詞提取(Information Extraction, IE)和槽位填充(Slot Filling,SF)實(shí)現(xiàn)。:

  1. 關(guān)鍵詞提取

  a. 面向query——槽位填充

  利用LLM思維鏈(Chain-of-Thought,COT)的提示能力來(lái)引導(dǎo)用戶多輪對(duì)話并進(jìn)行信息總結(jié)。針對(duì)我們的心靈療愈機(jī)器人的場(chǎng)景,比如用戶查詢心靈雞湯的句子,那么就要求用戶的提供年齡段,情緒問(wèn)題和情感需求等信息。語(yǔ)義槽格式如下:

  b. 面向知識(shí)點(diǎn)——索引入口

  對(duì)于知識(shí)點(diǎn)可以從以下兩個(gè)方面考慮:

  i. 對(duì)相同知識(shí)點(diǎn)建立多級(jí)索引,有助于實(shí)現(xiàn)對(duì)維度查詢。比如對(duì)一位奧運(yùn)冠軍的姓名,競(jìng)賽項(xiàng)目,年齡,獲獎(jiǎng)時(shí)間等分別建立索引。

  ii. 將知識(shí)庫(kù)轉(zhuǎn)化為以關(guān)系三元組為核心的知識(shí)圖譜。三元組的抽取除了傳統(tǒng)的命名實(shí)體識(shí)別(NER)等方法,也可以通過(guò)prompt讓大模型來(lái)進(jìn)行抽取。

  基于關(guān)鍵詞的embedding入庫(kù)和搜索流程如下:

  2. 多路召回

  類似于Bert時(shí)代的垂直領(lǐng)域問(wèn)答系統(tǒng),我們可以將語(yǔ)義檢索和傳統(tǒng)的Elasticsearch(ES)關(guān)鍵詞搜索并行,對(duì)兩者進(jìn)行加權(quán)打分投票來(lái)獲取最終的top_k。

  目前類似于以上優(yōu)化思路已經(jīng)落地的有“錄問(wèn)”法律大模型 [6],其基座模型為Baichuan-7B。錄問(wèn)知識(shí)增強(qiáng)的完整鏈路如圖3。值得注意的是,錄問(wèn)在知識(shí)庫(kù)中對(duì)每一個(gè)知識(shí)點(diǎn)是以 [key, value] pair 形式存儲(chǔ)的。key是知識(shí)點(diǎn)的內(nèi)容簡(jiǎn)介,用于檢索;value是知識(shí)點(diǎn)的具體內(nèi)容,用于模型輸入。實(shí)現(xiàn)細(xì)節(jié)請(qǐng)參照其Hugging Face倉(cāng)庫(kù)。

  圖3:“錄問(wèn)”知識(shí)增強(qiáng)鏈路

  3.2.2 其他優(yōu)化方向

  除了Embedding部分,“LangChain+LLM”(圖2)鏈路內(nèi)的其他組件也有進(jìn)一步優(yōu)化的空間:

  1. 知識(shí)庫(kù)細(xì)化

  當(dāng)用戶手動(dòng)選擇分區(qū)后,分區(qū)檢索可以明顯提高召回的精度。

  圖4:“錄問(wèn)”的交互界面

  2. 文本切分方式

  由于文本重疊(overlap)的大小沒(méi)有統(tǒng)一標(biāo)準(zhǔn),如何保證語(yǔ)義完整和連貫都需要不斷測(cè)試。

  3. 提示詞的質(zhì)量

  在提示詞模板的設(shè)計(jì)上要增加明確約束條件的指令,減少大模型出現(xiàn)幻覺(jué)現(xiàn)象的幾率。

  4. 大模型的選型

  選擇基座模型還是微調(diào)后的模型,以及對(duì)中文的支持程度的需求都需要結(jié)合下游場(chǎng)景進(jìn)行判別。

  本期文章帶你基于“LangChain+LLM”框架快速搭建了知識(shí)增強(qiáng)后的問(wèn)答機(jī)器人--心靈療愈師,并探討了提升模型的內(nèi)容理解和執(zhí)行能力的潛在優(yōu)化方向。下期文章我們將深入解讀目前主流的大模型微調(diào)技術(shù),敬請(qǐng)期待~

  4 參考文獻(xiàn)

  [1] LangChain Docs: https://python.langchain.com/docs/modules/

  [2] Revolutionizing NLP: Building Advanced Applications with LangChain and LLMs: https://www.linkedin.com/pulse/revolutionizing-nlp-building-advanced-applications-chandan/

  [3] Zilliz gitee: https://zilliz.gitee.io/welcome/

  [4] GanymedeNil/text2vec-large-chinese: https://huggingface.co/GanymedeNil/text2vec-large-chinese

  [5] MTEB Leaderboard: https://huggingface.co/spaces/mteb/leaderboard

  [6] 錄問(wèn) (wisdomInterrogatory) github: https://github.com/zhihaiLLM/wisdomInterrogatory

IT產(chǎn)業(yè)網(wǎng)微信二維碼logo

  行業(yè)資訊、企業(yè)動(dòng)態(tài)、業(yè)界觀點(diǎn)、峰會(huì)活動(dòng)可發(fā)送郵件至news#citmt.cn(把#換成@)。

海報(bào)生成中...

分享到微博

掃描二維碼分享到微信

分享到微信
一鍵復(fù)制
標(biāo)題鏈接已成功復(fù)制

最新新聞

熱門(mén)新聞

99热手机在线_五月天在线免费视频_波多野结衣之无限发射_美女一区二区三区视频_日韩在线观看a_天天天干夜夜夜操_日韩黄色片在线_97在线免费视频观看_天堂а√在线中文在线_88av.com_国产乱女淫av麻豆国产_日本a在线免费观看
美女精品一区二区| 日本欧美国产| 精品久久国产一区| 日韩国产欧美在线播放| 影院欧美亚洲| 91精品国产自产精品男人的天堂| 日韩欧美精品一区| 日韩精品欧美大片| 日韩中出av| 久久久9色精品国产一区二区三区| 一区二区三区四区在线看| 欧美亚洲tv| 鲁鲁在线中文| 不卡中文一二三区| 亚洲国产一区二区在线观看| 牛牛精品成人免费视频| 日本午夜精品久久久久| 日韩在线高清| 日韩精品免费视频一区二区三区| 欧美日韩中文| 日韩精品一区二区三区中文字幕| 久久天堂精品| 在线国产日韩| 麻豆视频一区二区| 91欧美精品| 四虎精品一区二区免费| 成人一区而且| 国产精品红桃| 日韩国产欧美在线播放| 久草精品视频| 欧美另类中文字幕| 亚洲资源av| 日本欧美国产| 国产精品网在线观看| 亚洲三级毛片| 久久福利在线| 偷拍欧美精品| 肉色欧美久久久久久久免费看| 精品网站aaa| 视频一区二区中文字幕| 日韩精品视频在线看| 亚洲精品午夜av福利久久蜜桃| 一区二区精品伦理...| 日本中文字幕一区二区视频 | 亚洲成av在线| 国产精品亚洲人成在99www| 深夜日韩欧美| 国产精品久久观看| 日韩中文字幕| 亚洲成人精品| 在线亚洲欧美| 欧美日韩视频| 亚洲精品在线观看91| 麻豆精品在线观看| 国产欧美日韩视频在线| 久久国产日本精品| 日韩精品一级| 亚洲欧美不卡| 精品三区视频| 欧美午夜精彩| 免费在线观看视频一区| 卡一卡二国产精品| 荡女精品导航| 婷婷色综合网| 欧美一区免费| 国产精品97| 综合一区在线| 久久成人一区| av中文字幕在线观看第一页| 香蕉国产精品| 日韩av一区二区三区四区| 日本一区福利在线| 久久久噜噜噜| 九九九精品视频| 国产精品99免费看| 欧美色图一区| 激情国产在线| 亚洲综合欧美| 精品国产亚洲日本| 日韩深夜视频| 青青青免费在线视频| re久久精品视频| 国产精品流白浆在线观看| 欧美日韩精品一区二区视频| 久久婷婷激情| 免费精品视频在线| 国产精品欧美日韩一区| 亚洲伊人av| 久久福利毛片| 日韩精品欧美大片| 久久国产亚洲精品| 日本综合精品一区| 成人羞羞视频播放网站| 亚洲主播在线| 精品91福利视频| 国产福利电影在线播放| 先锋影音久久久| 欧美日韩国产综合网| 免费在线欧美视频| 69堂精品视频在线播放| 激情五月色综合国产精品| 国产一区二区精品久| 精品一区免费| 免费日韩一区二区三区| 国产日韩在线观看视频| 日韩精品福利一区二区三区| 欧美理论视频| 丝袜美腿亚洲一区| 日韩一区二区在线免费| 午夜在线精品| 国产精品字幕| 国产成人77亚洲精品www| 日韩精品久久理论片| 欧美日韩在线播放视频| 免费视频亚洲| 免费成人av在线播放| 91欧美在线| 在线视频观看日韩| 亚洲精品韩国| 久久久一本精品| 亚洲黄页一区| 日韩欧美中文| 亚洲在线国产日韩欧美| 开心激情综合| 蜜臀久久99精品久久一区二区| 亚洲欧美日韩综合国产aⅴ| 国产精品成人a在线观看| 99国产精品99久久久久久粉嫩| 美女国产精品| 久久精品国产99| 日韩一区欧美| 国产精品久久久一区二区| 99久久精品网站| 日韩久久电影| 国产精品久久久久久模特| 午夜亚洲福利在线老司机| 日韩久久电影| 美女性感视频久久| 久久中文精品| 欧美中文字幕| 国产综合色区在线观看| 国产精品久久久久久久久久10秀| 欧美网站在线| 99久久激情| 日韩一区二区三区高清在线观看| 免费人成在线不卡| 日韩av一区二区三区四区| 精品视频亚洲| 国产欧美三级| 免费看精品久久片| 模特精品在线| 久久久久久久欧美精品| 蜜桃久久久久| 日韩欧美一区二区三区在线观看 | 国产一区二区色噜噜| 开心激情综合| 免费视频一区三区| 五月天久久久| 国产a亚洲精品| 午夜日韩影院| 9999国产精品| 国产一区二区三区网| 国产精品hd| 久久九九电影| 亚洲天堂1区| 尤物tv在线精品| 亚洲日本欧美| 卡一卡二国产精品| 99日韩精品| 国产99亚洲| 欧美综合国产| 福利一区二区免费视频| 石原莉奈在线亚洲三区| 欧美一区不卡| 亚洲理论在线| 免费日韩成人| 国内揄拍国内精品久久| 欧美久久精品| 国产精品字幕| 久久只有精品| 色婷婷精品视频| 日本综合视频| 精品日韩视频| 精品视频网站| 日韩精品dvd| а√天堂8资源在线| 老司机精品久久| 国产精品一区二区三区www| 中文字幕人成乱码在线观看| 中文字幕高清在线播放| 国产一区二区三区不卡av| 国产偷自视频区视频一区二区| 日韩av首页| 人在线成免费视频| 自拍日韩欧美| 久久国产直播| 樱桃视频成人在线观看| 国产精品一区2区3区| 久久精品高清| 蜜桃一区二区三区在线|