沒有知識庫喂養(yǎng)的AI,就像一個剛出大學(xué)校門的學(xué)生,有潛力但很多實(shí)際問題無法回答,而經(jīng)過本地知識庫加持的AI,那才是特定領(lǐng)域的專家,可以成為你的良師益友,協(xié)助你更好的解答實(shí)際問題。 現(xiàn)在的ChatGPT和Claude等AI都支持上傳文檔回答問題,但不是每個人都能使用。國內(nèi)的大模型也有文檔功能,測試下來效果不是很好。還有一點(diǎn),不管國內(nèi)還是國外的AI,允許上傳的文檔數(shù)量有限制,一般只允許上傳一個文檔提問,Claude屬于比較慷慨,大概也只能上傳10個文檔。 拋開這些不說,知識庫是數(shù)據(jù),一些敏感的數(shù)據(jù),現(xiàn)在大家還不是很放心交給別人,所以搭建一個本地的知識庫聊天機(jī)器人,是很實(shí)際的剛需,尤其對于企業(yè)來說,就更是如此。 要在本地搭建一套知識庫聊天系統(tǒng),要做的工作真不少,感謝開源的Langchain-Chatchat,它讓這一切變得相當(dāng)簡單。 Langchain-Chatchat既支持開源模型(需要硬件,如A6000),也支持OpenAI等開源模型(需要購買OpenAI的key)。 下面進(jìn)入正題,手把手教大家基于Langchain-Chatchat,在本地搭建一個知識庫聊天系統(tǒng),把我的實(shí)踐經(jīng)驗(yàn)分享給你,避免一些踩過坑。 我使用的硬件和模型信息: 顯卡:一塊英偉達(dá)的A6000 LLM:開源的chatglm3-6b 向量模型:開源的jina-embedding-l-en-v1 向量數(shù)據(jù)庫:開源的milvus 搭建本地知識庫,并基于其進(jìn)行AI聊天,原理和流程如下圖: 知識庫聊天機(jī)器人實(shí)現(xiàn)流程 環(huán)境準(zhǔn)備請注意,我搭建時,langchain-chatchat的版本是v0.2.6,不同的版本,相關(guān)的環(huán)境可能存在變化。 首先,確保你的機(jī)器安裝了 Python 3.10 $ python --versionPython 3.10.13 如果未安裝3.10,可從官網(wǎng)下載編譯安裝。
接著,創(chuàng)建一個虛擬環(huán)境,并在虛擬環(huán)境內(nèi)安裝項(xiàng)目的依賴 # 拉取倉庫$ git clone https://github.com/chatchat-space/Langchain-Chatchat.git # 進(jìn)入目錄$ cd Langchain-Chatchat #創(chuàng)建虛擬環(huán)境$ python3 -m venv myenv$ source myenv/bin/activate # 默認(rèn)依賴包括基本運(yùn)行環(huán)境(FAISS向量庫)。如果要使用 milvus/pg_vector 等向量庫,請將 requirements.txt 中相應(yīng)依賴取消注釋再安裝。# 我們需要milvus數(shù)據(jù)庫,修改requirements.txt$ vi requirements.txt# 找到行:# pymilvus==2.1.3,去除注釋 # 安裝全部依賴$ pip install -r requirements.txt 安裝并運(yùn)行milvus數(shù)據(jù)庫注意requirements.txt中的pymilvus版本是2.1.3,所以milvus也需要安裝對應(yīng)的版本,即milvus 2.1.x。 下載milvus 2.1.x
啟動向量數(shù)據(jù)庫milvus sudo docker-compose up -d 下載開源模型langchain-chatchat支持開源模型和OpenAI等商用模型,我需要開源模型,先將開源大模型下載至本地,通常開源 LLM 與 Embedding 模型可以從 HuggingFace 下載。 以本項(xiàng)目中默認(rèn)使用的 LLM 模型 THUDM/ChatGLM3-6B 與 Embedding 模型 下載模型需要先安裝 Git LFS,然后運(yùn)行
初始化知識庫和配置文件復(fù)制配置文件,并配置步驟二中下載的大模型 $ python copy_config_example.py # 修改模型配置文件$ vi configs/model_config.py # 設(shè)置大模型存放路徑MODEL_ROOT_PATH = '/xrepo/KDB/LLM/ChatMode' # embed_model下增加:'jina-embedding-l-en-v1':'jinaai/jina-embedding-l-en-v1', # llm_model下增加:'chatglm3-6b': 'THUDM/chatglm3-6b', # 修改默認(rèn)EMBEDDING_MODELEMBEDDING_MODEL = 'jina-embedding-l-en-v1' # 修改默認(rèn)LLMLLM_MODEL = 'chatglm3-6b' 初始化數(shù)據(jù)庫
一鍵啟動聊天機(jī)器人安裝完成,輸入以下命令啟動 $ python startup.py -a 看到下面畫面后,表示正常啟動了 langchain-chatchat啟動畫面 在瀏覽器輸入聊天機(jī)器人地址:http://127.0.0.1:8561 本地知識庫聊天機(jī)器人 聊天機(jī)器人使用說明打開Web地址后,左側(cè)可看見兩個菜單,分別是“對話”和“知識庫管理” 1、對話 即和AI聊天對話,可選擇對話模式,LLM模型,prompt模板,溫度參數(shù)設(shè)定以及記憶保留次數(shù)。對話模式有四個選項(xiàng):LLM對話、知識庫問答、搜索引擎問答、自定義Agent。 可選四種對話模式 LLM對話是和大模型直接聊天,基于大模型的通用能力。 知識庫問答需要先創(chuàng)建知識庫,每次可選擇一個知識庫進(jìn)行聊天,切換到知識庫問答后,在底部“知識庫配置”中選擇要對話的知識庫。 選擇對話知識庫 搜索引擎問答和自定義Agent,需要進(jìn)行相應(yīng)配置和開發(fā),才能使用。 2、知識庫管理 知識庫管理 新建知識庫:點(diǎn)擊“新建知識庫”,輸入知識庫名稱和簡介,選擇向量數(shù)據(jù)庫和模型,再點(diǎn)擊新建即可。 新建知識庫 上傳文件到知識庫:選擇已創(chuàng)建知識庫,選擇上傳文件,點(diǎn)擊“添加文件到知識庫” 上傳文件到知識庫 刪除知識庫/刪除知識庫文件:見下圖 刪除知識庫 創(chuàng)建好知識庫后,可以切換菜單到“對話”,選擇對話模式為“知識庫問答”,并選擇要對話的知識庫,即可開啟和特定知識庫聊天。 和知識庫聊天 大功告成,本地知識庫聊天系統(tǒng)搭建完成,想用別的模型,可以直接在界面上切換,大部分開源模型都支持,只要你的硬件夠牛~ 全文完,有疑問可以留言,我會盡量回答,如果覺得有幫助,就點(diǎn)個贊唄~ |
|