使用Question Answering建立QA Bot (2024)
自從大語言模型(LLM)橫空出世之後,對談機器人又迎來了一片春天。但坦白說,使用LLM進行QA Bot的設計,在答案需要比較嚴謹正確的情境下,已生成的方式來產生,其實有頗高的風險。即便你使用RAG,要能夠100%的保證AI生成的答案絕對正確,都是一個挑戰。
但,如果採用 Azure 上的Question Answering,則沒有這個問題。因為Question Answering中每一個問題的答案,都是我們事先準備好的。
底下這篇,我們來看一下如何使用Azure Custom Question Answering 來快速建立一個QA Bot。
建立 Azure Language Services
首先,你可以先在 Azure Portal 建立 Language 服務,過去中文版叫做文字分析,2024正名之後,終於改為『語言服務』:
這邊直接點選左下角按鈕:
使用預設值建立即可,我建議定價層選S:
建立好之後,在服務的『概觀』底下,可以找到『Language Studio』:
點選進入該portal,首次進入,會需要選擇 resource type 與 你剛才建立好的 Language Resource:
完成後,就會進入到Language Studio的主畫面:
選擇 Custom Question Answering
進入後,請選擇 Custom Question Answering :
點選後,可以在 Custom Question Answering 的主畫面建立新專案:
關於Azure Search
第一次建立專案時,系統可能會跳出畫面要求你連結到一個 Azure Search 服務:
如果你之前沒有建立,可以先建立一個 Azure Search :
由於它是 Question Answering 搜尋功能的主要能力來源,建議你建立一個 Standard SKU 層級以上的Azure Search服務:
同時資料中心必須與 Language 服務相同。
建立完成之後,重新建立專案,
匯入疾管署資料
App 建立完成之後,我們就可以匯入知識庫,作為QA的來源依據,讀者可以嘗試匯入疾管署的疫苗接種注意事項資料,位於:
https://www.cdc.gov.tw/Category/QAPage/QLYITNGQSveCa-Rt2jTygg
可透過選單以 add source 加入:
測試
知識庫匯入完成之後,可以開啟測試功能:
在測試畫面中輸入問題,你會發現,即便輸入的問題跟原始的題庫中的問題並不100%相同,系統也會找到對接近的問題,接著直接帶出該問題的預設答案。
如此一來,用戶可以隨心所欲地問問題,Chat Bot也會找到最適切的答案來回覆,在這個架構底下,由於答案都是從知識庫中建立出來的,因此不會有AI生成錯誤答案的問題。即便用戶問的問題,透過語意分析對映到了不很相似的問題,但答案卻總是正確的。這也是我們前面說過,在答案需要比較嚴謹正確的情境下,採用 Azure 上的Question Answering,是比較理想的選擇,因為Question Answering中每一個問題的答案,都是我們事先準備好的。
部署模型
測試完成之後,只需要一鍵即可佈署該模型:
佈署完成之後,可以透過 Get Prediction URL 取得 endpoint 與 key:
使用 REST API呼叫
如此一來,我們就可以透過 REST API 進行呼叫了:
透過這樣的方式,以 Custom Question Answering 建立好 REST API 之後,我們只需要將 LINE Bot串接到REST API ,就可以輕鬆地建立出一個 QA Bot了。
留言