1.基本介紹
相信很多讀者已經(jīng)體驗(yàn)過(guò)ChatGPT的強(qiáng)大能力了稍记。ChatGPT可以做日常問(wèn)答、幫助總結(jié)文章中心思想、幫助你寫文章等陌兑。看起來(lái)ChatGPT像是一個(gè)百事通禽虹,熟練掌握所有領(lǐng)域知識(shí)素司,然而事實(shí)并非如此。
首先ChatGPT的知識(shí)是陳舊不更新的赌置,如果你想讓ChatGPT詳細(xì)介紹一下某個(gè)新出現(xiàn)的產(chǎn)品押逾,那它只能信口開河了。
互聯(lián)網(wǎng)上茫茫的知識(shí)蓝捌,ChatGPT不可能都深入學(xué)習(xí)過(guò)眶洗。對(duì)于一些專業(yè)的、小眾的知識(shí)(比如某個(gè)小眾產(chǎn)品的手冊(cè))ChatGPT也許只是知道其名稱饵朱,而不知道其細(xì)節(jié)堤网。那么ChatGPT只能給出空泛而沒(méi)有太多參考意義的回答。
怎樣能讓ChatGPT成為某個(gè)領(lǐng)域的專家板刑,能夠代替我們的客服小姐姐缰兄、技術(shù)支持小哥哥來(lái)做一些繁重的問(wèn)答工作呢?這就是本文要介紹的方案:一種利用 ChatGLM-6B + text2vec-large-chinese + LangChain 實(shí)現(xiàn)的基于本地知識(shí)的問(wèn)答應(yīng)用邑键。
ChatGLM-6B是清華大學(xué)開源的中英雙語(yǔ)對(duì)話語(yǔ)言模型上煤,這里用ChatGLM來(lái)代替ChatGPT, 這樣就不用花心思去注冊(cè)O(shè)penAI賬號(hào)、翻墻等繁瑣的事情了著淆。(當(dāng)然還有很多其他的性能更好的語(yǔ)言模型劫狠,如果大家感興趣我們后面再單獨(dú)介紹)
text2vec-large-chinese是一個(gè)文本轉(zhuǎn)特征向量的Embedding模型,用于建立本地文本搜索庫(kù)永部,以及通過(guò)語(yǔ)義搜索文本独泞。
LangChain是一個(gè)基于大語(yǔ)言模型的開源的應(yīng)用開發(fā)框架,目前支持Python和TypeScript兩種編程語(yǔ)言苔埋。它賦予LLM兩大核心能力:數(shù)據(jù)感知懦砂,將語(yǔ)言模型與其他數(shù)據(jù)源相連接;代理能力组橄,允許語(yǔ)言模型與其環(huán)境互動(dòng)荞膘。LangChain的主要應(yīng)用場(chǎng)景包括個(gè)人助手、基于文檔的問(wèn)答、聊天機(jī)器人羽资、查詢表格數(shù)據(jù)淘菩、代碼分析等。
2.實(shí)現(xiàn)原理
本項(xiàng)目實(shí)現(xiàn)原理如下圖所示魏蜒,過(guò)程包括加載文件 -> 讀取文本 -> 文本分割 -> 文本向量化 -> 問(wèn)句向量化 -> 在文本向量中匹配出與問(wèn)句向量最相似的top k個(gè) -> 匹配出的文本作為上下文和問(wèn)題一起添加到prompt中 -> 提交給LLM生成回答茧音。
3.系統(tǒng)搭建
3.1 硬件需求
?ChatGLM-6B 模型硬件需求
?GPU: 顯存>13GB
?Embedding 模型硬件需求:
?GPU: 顯存>3GB(可選)
3.2 軟件需求
本項(xiàng)目已在 Python 3.8,CUDA 11.7 環(huán)境下完成測(cè)試发凹。
3.3 安裝環(huán)境
1. 環(huán)境檢查
# 首先盘嘉,確信你的機(jī)器安裝了 Python 3.8 及以上版本
$ python --versio
Python 3.8.13
# 如果低于這個(gè)版本,可使用conda安裝環(huán)境
$ conda create -p /your_path/env_name python=3.8
# 激活環(huán)境
$ source activate /your_path/env_name
# 關(guān)閉環(huán)境
$ source deactivate /your_path/env_name
# 刪除環(huán)境
$ conda env remove -p /your_path/env_name
2.項(xiàng)目依賴
# 拉取倉(cāng)庫(kù)
$ git clone (暫不可見(jiàn))/imClumsyPanda/langchain-ChatGLM.git
# 安裝依賴
$ pip install -r requirements.txt
*注:使用 langchain.document_loaders.UnstructuredFileLoader 進(jìn)行非結(jié)構(gòu)化文件接入時(shí)溜帐,可能需要依據(jù)文檔進(jìn)行其他依賴包的安裝将盾,請(qǐng)參考 langchain 文檔
3.4 設(shè)置模型默認(rèn)參數(shù)
在開始執(zhí)行 Web UI 或命令行交互前,請(qǐng)先檢查 configs/model_config.py中的各項(xiàng)模型參數(shù)設(shè)計(jì)是否符合需求勃核。
3.5 執(zhí)行腳本體驗(yàn) Web UI 或命令行交互
執(zhí)行 webui.py腳本體驗(yàn) Web 交互
$ python webui.py
*注:如未將模型下載至本地再僧,請(qǐng)執(zhí)行前檢查$HOME/.cache/huggingface/文件夾剩余空間,至少15G
執(zhí)行后效果如下圖所示:
Web UI 可以實(shí)現(xiàn)如下功能:
運(yùn)行前自動(dòng)讀取configs/model_config.py中LLM及Embedding模型枚舉及默認(rèn)模型設(shè)置運(yùn)行模型俩孽,如需重新加載模型猬听,可在界面重新選擇后點(diǎn)擊重新加載模型進(jìn)行模型加載;
可手動(dòng)調(diào)節(jié)保留對(duì)話歷史長(zhǎng)度患达,可根據(jù)顯存大小自行調(diào)節(jié)
添加上傳文件功能记令,通過(guò)下拉框選擇已上傳的文件,點(diǎn)擊加載文件按鈕习劫,過(guò)程中可隨時(shí)更換加載的文件或執(zhí)行 knowledge_based_chatglm.py 腳本體驗(yàn)命令行交互
$ python knowledge_based_chatglm.py
4.實(shí)驗(yàn)效果對(duì)比
4.1 實(shí)驗(yàn)任務(wù)
以問(wèn)題“chatglm-6b 的局限性具體體現(xiàn)在哪里咆瘟,如何實(shí)現(xiàn)改進(jìn)”為例
4.2 未使用 langchain 接入本地文檔時(shí)的回答
ChatGLM-6B 是一個(gè)基于 GPT-3 的聊天機(jī)器人,它的局限性主要體現(xiàn)在以下幾個(gè)方面:
1. 語(yǔ)言模型的精度:GPT-3 是一種大型的語(yǔ)言模型,它的精度比較高,但是仍然有一些局限性。例如,它可能無(wú)法準(zhǔn)確地理解某些方言诽里、口音或者復(fù)雜的句子結(jié)構(gòu)袒餐。
2. 知識(shí)圖譜的完整性:GPT-3 可以生成一些知識(shí)圖譜,但是其完整性和準(zhǔn)確性可能不夠。例如,它可能無(wú)法準(zhǔn)確地理解某些領(lǐng)域的專業(yè)知識(shí)和術(shù)語(yǔ)谤狡。
3. 對(duì)話生成的連貫性:GPT-3 可以生成一些連貫的對(duì)話,但是其生成的對(duì)話可能不夠自然灸眼。例如,它可能會(huì)生成一些虛假的、不連貫的對(duì)話或者誤解用戶的意圖墓懂。
為了改進(jìn) ChatGLM-6B,可以考慮以下幾個(gè)方面:
1.提高語(yǔ)言模型的精度:可以通過(guò)增加訓(xùn)練數(shù)據(jù)焰宣、使用更好的語(yǔ)言模型架構(gòu)、優(yōu)化模型訓(xùn)練過(guò)程等方式來(lái)提高語(yǔ)言模型的精度捕仔。
2.增強(qiáng)知識(shí)圖譜的完整性:可以通過(guò)增加知識(shí)圖譜的維度匕积、使用更好的知識(shí)圖譜構(gòu)建方法、優(yōu)化知識(shí)圖譜的匹配算法等方式來(lái)增強(qiáng)知識(shí)圖譜的完整性榜跌。
3.提高對(duì)話生成的連貫性:可以通過(guò)增加對(duì)話生成模型的上下文信息闪唆、使用更好的上下文信息提取方法、優(yōu)化對(duì)話生成模型的算法等方式來(lái)提高對(duì)話生成的連貫性。
4.引入更多的人類反饋:人類反饋可以幫助 ChatGLM-6B 更好地理解用戶的意圖和需求,從而提高對(duì)話生成的質(zhì)量和準(zhǔn)確性侧碍。可以通過(guò)引入更多的人類客服彻芒、使用人類反饋收集器等方式來(lái)引入更多的人類反饋赴仪。
評(píng)價(jià):答案看似很合理,實(shí)則沒(méi)有任何指導(dǎo)性尘晓。
4.3 使用 langchain 接入 ChatGLM-6B 項(xiàng)目的 README.md 文件后 ChatGLM 的回答
ChatGLM-6B 是一個(gè)基于深度學(xué)習(xí)的自然語(yǔ)言處理模型,它在回答問(wèn)題方面表現(xiàn)出色换橱。但是,它也有一些局限性,具體如下:
1. 語(yǔ)言理解有限:ChatGLM-6B 只學(xué)習(xí)了中文自然語(yǔ)言,對(duì)于其他語(yǔ)言可能會(huì)存在理解上的局限性。
2. 知識(shí)儲(chǔ)備不足:ChatGLM-6B 的訓(xùn)練數(shù)據(jù)集只包含了中文語(yǔ)料,因此它可能無(wú)法回答一些非中文的問(wèn)題或者某些特定領(lǐng)域的問(wèn)題验阱。
3. 數(shù)據(jù)量有限:ChatGLM-6B 的訓(xùn)練數(shù)據(jù)集只有幾百萬(wàn)條記錄,因此它可能無(wú)法回答一些非常具體或者復(fù)雜的問(wèn)題舔躏。
為了改進(jìn) ChatGLM-6B,可以考慮以下幾個(gè)方面:
1. 學(xué)習(xí)更多的語(yǔ)言知識(shí):可以學(xué)習(xí)其他語(yǔ)言的自然語(yǔ)言處理技術(shù),擴(kuò)大語(yǔ)言理解的范圍。
2. 擴(kuò)大知識(shí)儲(chǔ)備:可以收集更多的中文語(yǔ)料,或者使用其他語(yǔ)言的數(shù)據(jù)集來(lái)擴(kuò)充知識(shí)儲(chǔ)備降蹋。
3. 增加數(shù)據(jù)量:可以使用更大的數(shù)據(jù)集來(lái)訓(xùn)練 ChatGLM-6B,提高模型的表現(xiàn)防擎。
4. 引入更多的評(píng)估指標(biāo):可以引入更多的評(píng)估指標(biāo)來(lái)評(píng)估模型的表現(xiàn),從而發(fā)現(xiàn) ChatGLM-6B 存在的不足和局限性。
5. 改進(jìn)模型架構(gòu):可以改進(jìn) ChatGLM-6B 的模型架構(gòu),提高模型的性能和表現(xiàn)睹沐。例如,可以使用更大的神經(jīng)網(wǎng)絡(luò)或者改進(jìn)的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)助店。
評(píng)價(jià):針對(duì)文檔內(nèi)容做了詳細(xì)回復(fù),對(duì)于讀者具有指導(dǎo)意義佛吓。
5.總結(jié)
1. 文檔的格式目前支持txt宵晚、docx、md维雇、pdf
2. 系統(tǒng)只是一個(gè)具備核心功能的demo演示系統(tǒng)淤刃,沒(méi)有權(quán)限控制,離產(chǎn)品化還有一段距離吱型。想要集成到自己系統(tǒng)中的粉絲需要定制逸贾。
(AI開源雜貨酷)
聲明:本網(wǎng)站所收集的部分公開資料來(lái)源于互聯(lián)網(wǎng),轉(zhuǎn)載的目的在于傳遞更多信息及用于網(wǎng)絡(luò)分享唁影,并不代表本站贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé)耕陷,也不構(gòu)成任何其他建議。本站部分作品是由網(wǎng)友自主投稿和發(fā)布据沈、編輯整理上傳哟沫,對(duì)此類作品本站僅提供交流平臺(tái),不為其版權(quán)負(fù)責(zé)锌介。如果您發(fā)現(xiàn)網(wǎng)站上所用視頻嗜诀、圖片、文字如涉及作品版權(quán)問(wèn)題症旭,請(qǐng)第一時(shí)間告知瀑捣,我們將根據(jù)您提供的證明材料確認(rèn)版權(quán)并按國(guó)家標(biāo)準(zhǔn)支付稿酬或立即刪除內(nèi)容,以保證您的權(quán)益!聯(lián)系電話:010-58612588 或 Email:editor@mmsonline.com.cn驼值。
- 暫無(wú)反饋
編輯推薦
- 2025新年特刊:打造新質(zhì)生產(chǎn)力,智啟未來(lái)新篇章
- 定義制造業(yè)未來(lái)的數(shù)控加工中心技術(shù)專題
- 航空航天及交通領(lǐng)域先進(jìn)制造技術(shù)應(yīng)用專題
- 解碼消費(fèi)電子產(chǎn)品生產(chǎn)的數(shù)字化之路技術(shù)專題
- 精密智能機(jī)床滥沫,助力制造升級(jí)技術(shù)專題
- 汽車輕量化驅(qū)動(dòng)下的零部件加工應(yīng)用專題
- 高性能銑刀實(shí)現(xiàn)高精加工生產(chǎn)技術(shù)專題
- 航空航天發(fā)動(dòng)機(jī)解決方案專題
- 高效齒輪加工生產(chǎn)技術(shù)方案專題
- 金屬加工液的性能不止?jié)櫥夹g(shù)應(yīng)用專題