給文心一言加上知識庫和搜索引擎(一)

文心一言開放了,手機端的幾個模板還不錯
但是還是要拉出來溜溜
文心一言發(fā)布了,官方示例太無聊,寫個知識庫項目看看文心一言的水平究竟有多少。
待在家里躺床太無聊,所以小小地練練手和腦子
前期準(zhǔn)備
申請文心一言apikey
前往并登錄 百度智能云-登錄 (baidu.com)
創(chuàng)建應(yīng)用并打開文心一言turbo的付費
然后充值10元錢
創(chuàng)建Milvus數(shù)據(jù)庫(可選)
教程 Install Milvus Standalone with Docker Compose (CPU) Milvus documentation
測試文心一言
首先給langchain安裝升級一下
去langchain庫里翻代碼找找文心一言的例子
注意client_id應(yīng)該是你的apikey,不得不說百度的文檔就是答辯依托
成功得到答案
??Hello, ErnieBot. I'm a language model. What can I do for you?
正式開始
讓我們開始我們的敏捷開發(fā)
AI應(yīng)用最快的應(yīng)用開發(fā)方式當(dāng)然是gradio
我們首先嘗試使用gradio調(diào)用文心一言
這里要用到gradio的chatbot模塊
我們可以直接觀賞一下官方用例
chatbot

可以看到以下特性
聊天框
流式傳輸
文件上傳
基本滿足了一個chatbot的基本需求,我們直接在此基礎(chǔ)上進行開發(fā)
安裝gradio
觀察函數(shù),我們需要修改的地方其實只有response部分
response部分使用文心一言的回答進行替換即可
這里使用了langchain的ConversationChain,并刪除了chatbot文件上傳功能

效果不錯涅~就是界面有點簡陋
接下來我們使用gradio的block功能為我們的界面進行大升級
首先把我們的apikey放到y(tǒng)aml文件中
添加的代碼如下
yaml文件,new_cof.yaml
添加個初始化模型和chain的函數(shù)
通過gradio的block函數(shù)優(yōu)化我們的設(shè)計
啟動后項目界面如下

來感覺了,有沒有
來試試

可以看到我們目前實現(xiàn)的功能設(shè)計:
流式回答
上下文記憶
刷新與發(fā)送
更改模型配置
至此一個完整簡單的chatbot設(shè)計就完成了
Embedding
我們在使用embedding功能時主要用到了milvus向量數(shù)據(jù)庫,也有平替的向量數(shù)據(jù)庫,請自行尋找...
設(shè)計gradio切換embedding和llm的按鈕,來決定是否使用知識庫
并設(shè)計按鈕使用知識庫
? ??
為知識庫添加支持函數(shù),并使用embedding相關(guān)的chain
重寫block部分和部分函數(shù),添加知識庫支持,這是目前的完整函數(shù)

使用,從文本中測試
新建文本文件test.txt
選擇載入知識庫,并上傳test.txt
詢問問題,可以看到我們的知識庫完美實現(xiàn)了功能

目前為止,我們實現(xiàn)的功能有
上傳文件作為知識庫
從鏈接中載入知識庫
是否使用知識庫的切換
search
這里我們使用了duckduckgo_search作為我們的搜索引擎,如果你愿意,使用百度微軟谷歌也是同理
搜索實現(xiàn)
讓我們把搜索加入我們的應(yīng)用



可以從我們的終端中看出我們的搜索引擎在完美運作
.................

后續(xù)如果繼續(xù)就是設(shè)計向量數(shù)據(jù)庫對embedding數(shù)據(jù)的生命周期進行設(shè)計了