背景
知識庫需求在各行各業(yè)中普遍存在,例如制造業(yè)中歷史故障知識庫、游戲社區(qū)平臺的內(nèi)容知識庫、電商的商品推薦知識庫和醫(yī)療健康領(lǐng)域的掛號推薦知識庫系統(tǒng)等。為保證推薦系統(tǒng)的實(shí)效性和準(zhǔn)確性,需要大量的數(shù)據(jù)/算法/軟件工程師的人力投入和包括硬件在內(nèi)的物力投入。那么在自己的環(huán)境中搭建智能搜索大語言模型增強(qiáng)方案是必不可少的。因此,本篇內(nèi)容主要為大語言模型方案的快速部署。該方案部署流程并不復(fù)雜,只需要您對于亞馬遜云科技相關(guān)服務(wù)有一個基本的了解即可。
方案架構(gòu)圖與功能原理
該方案分為以下幾個核心功能模塊:
前端訪問界面:該方案提供了基于React的前端訪問界面。用戶可以通過網(wǎng)頁以REST API的形式進(jìn)行智能文檔搜索等功能的操作。
REST API:通過集成了相應(yīng)Amazon API Gateway和Amazon Lambda函數(shù)的實(shí)現(xiàn)和后端搜索引擎,數(shù)據(jù)庫和模型推理端點(diǎn)交互。
企業(yè)搜索引擎:基于Amazon OpenSearch或Amazon Kendra。可以基于雙向反饋的學(xué)習(xí)機(jī)制,自動持續(xù)迭代提高輸出匹配精準(zhǔn)度。同時(shí)采用引導(dǎo)式搜索機(jī)制,提高搜索輸入描述的精準(zhǔn)度。
數(shù)據(jù)源存儲:可選用多種存儲方式如數(shù)據(jù)庫,對象存儲等,在這里Amazon Kendra通過連接器獲取Amazon S3上的對象。
向量化數(shù)據(jù)注入:采用Amazon SageMaker的Notebook模塊或者Amazon Lambda程序?qū)⒃紨?shù)據(jù)向量化后的數(shù)據(jù)注入Amazon OpenSearch。
智能搜索/引導(dǎo)/問答等功能模塊:采用Amazon Lambda函數(shù)實(shí)現(xiàn)和后端搜索引擎,數(shù)據(jù)庫和模型推理端點(diǎn)交互。
記錄數(shù)據(jù)庫:用戶反饋記錄存儲在數(shù)據(jù)庫Amazon DynamoDB。
機(jī)器學(xué)習(xí)模型:企業(yè)可以根據(jù)自身需要構(gòu)建大語言模型和詞向量模型,將選取好的模型托管到Amazon SageMaker的endpoint節(jié)點(diǎn)。
反饋優(yōu)化:用戶在前端頁面反饋?zhàn)顑?yōu)搜索結(jié)果,通過手動或事件觸發(fā)器Amazon EventBridge觸發(fā)新的訓(xùn)練任務(wù)并且重新部署到搜索引擎。
插件式應(yīng)用:利用該方案核心能力可以與Amazon Lex集成以實(shí)現(xiàn)智能會話機(jī)器人功能,也可以與Amazon Connect集成實(shí)現(xiàn)智能語音客服功能。
實(shí)施步驟介紹
以smart-search v1版本為例,為大家講解方案的整個部署流程。
1、環(huán)境準(zhǔn)備
首先您需要在您的開發(fā)環(huán)境中安裝好python 3、pip以及npm等通用工具,并保證您的環(huán)境中擁有16GB以上的存儲空間。根據(jù)您的使用習(xí)慣,您可以在自己的開發(fā)筆記本(Mac OS或Linux環(huán)境)上部署,也可以選擇EC2或者Cloud9進(jìn)行部署。
2、CDK自動部署
2.1 獲取代碼安裝Amazon CDK包
獲取代碼后把代碼拷貝到指定目錄下。打開終端窗口,進(jìn)入smart_search的軟件包,并切換到名為deployment文件夾下:
進(jìn)入到deployment目錄后,相應(yīng)的CDK部署操作均在該目錄下進(jìn)行。然后安裝Amazon CDK包。
2.2 安裝CDK自動化部署腳本所需的所有依賴項(xiàng)和環(huán)境變量
在deployment目錄下運(yùn)行以下命令安裝依賴庫:
然后將您的12位亞馬遜云科技賬號信息、Acess Key ID、Secret Access Key、以及需要部署的Region ID導(dǎo)入到環(huán)境變量中:
然后運(yùn)行“cdk bootstrap”安裝賬戶和目標(biāo)區(qū)域內(nèi)的CDK工具包,例如:
2.3 在cdk.json可以進(jìn)行自定義配置
該方案的默認(rèn)配置文件在deployment目錄下的cdk.json文件中,如果想要自行配置需要部署哪些功能模塊,可以根據(jù)需要修改cdk.json的“context”部分。例如,如果需要修改部署哪些功能函數(shù),可以對“selection”值進(jìn)行修改。
默認(rèn)的參數(shù)如下所示:
如果僅需要使用“支持knn的文檔搜索功能”,可以僅保留“knn_doc”。除此之外,還可以選擇通過修改cdk.json的其他相應(yīng)參數(shù)來自定義部署方式、部署哪些插件和名稱和路徑等配置。
2.4 CDK命令自動化署
運(yùn)行下面的命令將驗(yàn)證環(huán)境并生成Amaon CloudFormation的json模版:
如果沒有報(bào)錯,則運(yùn)行以下命令部署全部堆棧。
CDK部署將提供相關(guān)Amazon CloudFormation堆棧以及相關(guān)資源,例如Amazon Lambda、Amazon API Gateway、Amazon OpenSearch實(shí)例和Amazon SageMaker的notebook實(shí)例等,預(yù)計(jì)安裝的部署時(shí)間大約為30分鐘左右。
3、利用Amazon SageMaker的Notebook實(shí)例部署模型與數(shù)據(jù)導(dǎo)入
3.1 部署模型
3.1.1進(jìn)入Amazon SageMaker控制臺,進(jìn)入NoteBook Instances,選擇SmartSearchNoteBook實(shí)例,點(diǎn)擊“Open Jupyter”,進(jìn)入SmartSearch的代碼主目錄,點(diǎn)擊“isearchjupyter”目錄進(jìn)入,能看到包括Embbeding Model、LLM_Model等目錄,這兩個目錄包含模型部署腳本,而Script-Doc.ipynb腳本則會用于后面的文檔上傳,目錄如下圖所示:
3.1.2首先安裝Embbeding Model,進(jìn)入“/isearchjupyter/Embbeding Model”目錄,能看到對應(yīng)的幾個腳本。其中“EmbbedingModel_shibing624_text2vec-base-chinese.ipynb”為中文的詞向量模型,其他兩個為英文,打開相應(yīng)腳本依次運(yùn)行單元格,開始部署embbeding model。等待script部署完畢,成功部署后會在Amazon SageMaker的endpoint中看到名為“huggingface-inference-eb”的endpoint,狀態(tài)為“InService”。
3.1.3然后部署大語言模型,LLM_Model目錄下當(dāng)前包含了中文和英文的大語言模型庫。這里先為大家介紹中文的大語言模型的部署方法,找到isearchjupyter/LLM_Model/llm_chinese/code/inference.py,該文件定義了大語言模型的統(tǒng)一部署方法。大語言模型可以通過唯一的名稱進(jìn)行部署,把該唯一名稱聲明為“LLM_NAME”的參數(shù)值,作為參數(shù)傳遞給部署腳本。可以根據(jù)大語言模型的文檔來確定“LLM_NAME”的值。打開網(wǎng)址后對照該文檔找到該模型部署的唯一名稱,然后粘貼到為“LLM_NAME”賦值的位置即可,可以參照該方法舉一反三,指定項(xiàng)目中需要使用的大語言模型。修改inference.py文件后進(jìn)入“isearchjupyter/LLM_Model/llm_chinese/“目錄,運(yùn)行該目錄的script。等待script 部署完畢,成功部署后會在Amazon SageMaker的endpoint中看到名為“pytorch-inference-llm-v1”的endpoint。
如果選擇部署英文大語言模型,部署方式類似,需要將英文大語言模型的參數(shù)填入LLM_Model/llm_english/code/inference.py文件的“LLM_NAME”參數(shù)中。找到該大語言模型項(xiàng)目名稱,則然后復(fù)制該名稱再粘貼到為“LLM_NAME”賦值的位置,可以用該方法進(jìn)行舉一反三,指定任意一個滿足業(yè)務(wù)需求的大語言模型。進(jìn)入“isearchjupyter/LLM_Model/llm_english/”的目錄下,依次運(yùn)行該目錄下英文大語言模型的腳本的部署單元格。如下圖所示:
3.1.4安裝完成后,看到兩個endpoint已經(jīng)在”InService”狀態(tài),如下圖:
3.2 知識庫數(shù)據(jù)上傳
3.2.1數(shù)據(jù)準(zhǔn)備。進(jìn)入jupyter的目錄“/isearchjupyter”,在“docs”目錄,將上傳所需要的word、excel或pdf等格式的文檔進(jìn)行上傳,該文件夾下已經(jīng)提供了用于測試的樣例文件“sample.docx”。
3.2.2 進(jìn)入Script-Doc.ipynb,修改單元格“Hyperparameter”的如下參數(shù),folder_path為指定的docs目錄,index_name為Amazon OpenSearch的index名稱,如下圖:
然后從頭運(yùn)行這個script,完成數(shù)據(jù)導(dǎo)入。
4、配置Web UI
4.1 進(jìn)入smart_search/ search-web-knn目錄,該目錄包含基于React的前端界面代碼。然后對/src/pages/common/constants.js文件進(jìn)行編輯,如下圖所示:
Mainapi常變量指定了前端調(diào)用的API入口。該值可以從網(wǎng)頁端進(jìn)入API Gateway中獲取,進(jìn)入“smartsearch-api”的Stages側(cè)邊欄,將prod stage的involke URL賦值給constants.js的mainapi常變量。
4.2 檢查主頁面參數(shù)配置。smart_search/search-web-knn/src/pages/MainSearchDoc.jsx為功能展示頁面,在該文件的last_index參數(shù)設(shè)置了頁面自動填充的默認(rèn)index值,將上文Notebook實(shí)例部署的index name填入,如“docs”。
4.3 運(yùn)行前端界面。進(jìn)入目錄 search-web-knn,執(zhí)行如下兩條命令:
然后運(yùn)行以下命令啟動前端界面:
一切順利的話,將得到一個網(wǎng)頁版界面。在本地開發(fā)筆記本部署的默認(rèn)訪問地址和端口號是localhost:3000,如果是EC2部署,需要啟用對應(yīng)端口訪問的安全組策略,通過EC2的公網(wǎng)地址加端口號進(jìn)行訪問。該前端頁面的使用方法為:將問題輸入搜索欄,配置index名稱和k-NN選項(xiàng),點(diǎn)擊“Search”按鈕后您可以得到一個基于企業(yè)知識庫的大語言模型匯總回答。如下圖所示:
5、安裝擴(kuò)展插件
5.1 與Amazon Lex集成實(shí)現(xiàn)智能聊天機(jī)器人
本方案已經(jīng)集成了Amazon Lex的會話機(jī)器人功能,Amazon Lex當(dāng)前在海外區(qū)可用。在cdk.json文件中,將“bot”加入extension鍵值處。
cdk部署成功后進(jìn)入管理界面可以看到名為“l(fā)lmbot”的對話機(jī)器人,如下圖:
該機(jī)器人可以方便地進(jìn)行前端頁面的集成。
5.2 與Amazon Connect集成實(shí)現(xiàn)智能語音客服
Amazon Connect為亞馬遜云科技的云呼叫中心服務(wù),該服務(wù)當(dāng)前在海外區(qū)可用。該方案可以通過Amazon Lex機(jī)器人將大語言模型能力集成到Amazon Connect云呼叫中心中,通過以下幾個步驟可以使您獲得一個支持語音呼叫功能的智能客服機(jī)器人。
5.2.1 將上一步生成的llmbot機(jī)器人集成到現(xiàn)有Amazon Connect實(shí)例中。
5.2.2 然后進(jìn)入Amazon Connect實(shí)例中,將smart-search/extension/connect里面的文件導(dǎo)入到Contact Flow中,并保存和發(fā)布。
5.2.3 最后在Amazon Connect中將呼入號碼與上一步配置的Contact Flow進(jìn)行關(guān)聯(lián)。則所有呼入該號碼的語音通話將會連接到智能客服的呼叫服務(wù)流程。
正常情況下,智能客服將會識別呼入人的語音輸入,隨后集成到Amazon Connect的智能客服機(jī)器人會基于企業(yè)知識庫信息和大語言模型的能力進(jìn)行以接近人類的邏輯方式進(jìn)行語音回答。
6、資源清理
想要將資源進(jìn)行清理時(shí),請使用以下命令將所有堆棧進(jìn)行刪除:
注意:通過Amazon SageMaker的Notebook實(shí)例創(chuàng)建的推理模型資源需要進(jìn)行手動刪除,在Amazon SageMaker的“inference”邊欄進(jìn)入“endpoint”,點(diǎn)擊“delete”,將所有endpoint進(jìn)行刪除。
當(dāng)堆棧創(chuàng)建的Amazon S3桶中已經(jīng)有了數(shù)據(jù)或者存在其他手動創(chuàng)建或修改的資源時(shí),則也需要手動刪除。
總結(jié)
通過此次部署,已經(jīng)成功掌握了該方案的部署方法,也對該方案有了更深的了解。亞馬遜云科技將會對該方案進(jìn)行持續(xù)的迭代與優(yōu)化以支持更多的數(shù)據(jù)類型、模型庫與擴(kuò)展功能,進(jìn)而將方案的能力延伸到更多的業(yè)務(wù)場景中去。該方案可以解決許多行業(yè)和領(lǐng)域的專業(yè)或通用場景,通過使用該方案可以使用人工智能的最新進(jìn)展和亞馬遜云科技的產(chǎn)品來為行業(yè)發(fā)展注入新的活力。
審核編輯 黃宇
-
語言模型
+關(guān)注
關(guān)注
0文章
527瀏覽量
10281 -
亞馬遜
+關(guān)注
關(guān)注
8文章
2667瀏覽量
83401
發(fā)布評論請先 登錄
相關(guān)推薦
評論