隨著大模型應(yīng)用持續(xù)火熱,應(yīng)用門檻也越來越低,去年底開始我們利用少部分精力做了一些 AI 探索和實踐,并完成了業(yè)務(wù)所在垂直領(lǐng)域答疑機器人產(chǎn)品的上線。這里主要從普通使用者的視角,把一邊學(xué)習(xí)一邊實踐的過程記錄下來,和大家一起學(xué)習(xí)交流。
本文定位無門檻。本文受眾主要是入門玩家,但對大模型感興趣想做一些小工具,或者在平常的業(yè)務(wù)工作中希望使用大模型來提效的讀者。
1. 背景
當(dāng)前大模型的應(yīng)用還是處于比較初期的階段,以物流領(lǐng)域常見場景為例,可以看到一些行業(yè)常見要求和當(dāng)前大模型能力有較多沖突,在這些業(yè)務(wù)生產(chǎn)環(huán)境應(yīng)用之前,我們還是希望先在容錯性較高的場景進行一些實踐。因此我們嘗試基于大模型來優(yōu)化答疑機器人,為后續(xù)更多的深度應(yīng)用積累實踐經(jīng)驗。(下面的示例圖片由大模型生成,僅供參考)

傳統(tǒng)答疑機器人的痛點
在大模型崛起之前,傳統(tǒng)答疑機器人一般有兩種模式:
1. 基于多級目錄分類,讓用戶慢慢翻到想了解的知識。
2. 基于傳統(tǒng)關(guān)鍵詞檢索方式,根據(jù)用戶提問,在知識庫中找到和用戶提問相關(guān)的知識。
核心痛點是,不能快速準(zhǔn)確找到用戶想尋找的答案。
我們的目標(biāo)
由于我們答疑機器人受眾不是C端普通用戶,而是內(nèi)部作業(yè)人員,因此機器人給出的回答在語氣或者回答方式上不需要過多潤色,但我們希望它具備以下一些特點:
1. 可以準(zhǔn)確理解提問人員自然語言提問的語義給出標(biāo)準(zhǔn)答案;
2. 希望可以比較快速給出答案(比如5s之內(nèi));
3. 不希望答非所問,提供不屬于我們業(yè)務(wù)范圍內(nèi)的回答,如果提問的問題確實沒有答案,希望拒絕回答并引導(dǎo)到人工。
2. 迭代過程
我們結(jié)合業(yè)內(nèi)經(jīng)驗和自身訴求,大致進行了如下五個迭代,下面詳細(xì)展開。
階段一:向量搜索
● 嵌入(Embedding)是一種向量化方法,把文本,圖像,視頻等數(shù)據(jù)轉(zhuǎn)換為向量,同時特別強調(diào)保留數(shù)據(jù)之間的語義關(guān)系。比如“蘋果”和“橘子”要比“蘋果”和“太陽”的向量值更為接近(語義相似)。
● Embedding 模型服務(wù):提供具體的Embedding能力的在線服務(wù),可以直接調(diào)用 OpenAI,阿里云等遠程服務(wù),也可以本地部署。低成本試用可以嘗試阿里云靈積。
● 向量數(shù)據(jù)庫是用于存儲和檢索高維向量數(shù)據(jù)的數(shù)據(jù)庫系統(tǒng),特別擅長相似性搜索。低成本試用可以使用阿里云的 Hologres 數(shù)據(jù)庫。
向量搜索可以類比我們傳統(tǒng)的關(guān)系型數(shù)據(jù)庫檢索,只不過向量搜索是按照語義來進行相似度匹配搜索。
可以看到一端文本轉(zhuǎn)為向量存在向量數(shù)據(jù)庫中的字段展示,根據(jù)不同的Embedding模型維度也有不同,通常達到上千維。
-
向量搜索流程
下圖是一個簡化版的向量搜索流程圖,分為數(shù)據(jù)準(zhǔn)備和在線推理兩個部分:
1. 數(shù)據(jù)準(zhǔn)備部分,需要把歷史沉底的知識庫數(shù)據(jù)清洗為多個QA問答對的格式,把問題,答案,問題對應(yīng)的向量,存儲在向量數(shù)據(jù)庫。
2. 在線推理部分,先把用戶提出的問題通過向量服務(wù)轉(zhuǎn)為向量,在向量數(shù)據(jù)庫中找到與該問題最為相似的一條數(shù)據(jù),然后通過相似度閾值來判斷用戶提問的問題和數(shù)據(jù)存儲的標(biāo)準(zhǔn)問題是否足夠相似,來決定是否把對應(yīng)的答案返回給用戶。

-
效果分析
假設(shè)有這樣一個標(biāo)準(zhǔn)問答対:
Q:遇到不可抗力因素?zé)o法配送,如何操作?
A:1. 系統(tǒng)進行提報,詳細(xì)步驟XXX

嘗試下來,純靠向量搜索的優(yōu)勢在于:對于原始問題或者細(xì)微修改的問題,可以比較快速、準(zhǔn)確找到答案。
不足之處是:
1. 問題較長且多個問題語義相近時,準(zhǔn)確率下降
2. 向量距離的閾值不好把控,對于無關(guān)問題的拒絕回答機制不好處理。
? 階段二:RAG
RAG是知識問答領(lǐng)域業(yè)內(nèi)落地最多的實踐,同時 RAG 也是應(yīng)用很廣且很容易上手的一種大模型應(yīng)用方式。
RAG(Retrieval-Augmented Generation 檢索增強生成):因為大模型本身沒有垂域的知識,RAG其實就是把“查資料”和“寫答案”這兩個步驟結(jié)合在一起。先用檢索系統(tǒng)找到一些跟問題相關(guān)的資料,然后再用大模型(類似于GPT)來編寫一個詳細(xì)的答案,來提高AI回答垂直領(lǐng)域問題的準(zhǔn)確性。
RAG 就像讓一個大學(xué)理科生(知識儲備豐富的大模型)拿著初中生的歷史課本做開卷考試(相似度檢索),雖然他本來不會,但靠查資料準(zhǔn)確率還可以(效果不錯)。就算書上沒有,他也可以憑借自己的本事寫滿試卷(存在幻覺)。
-
RAG流程
下圖是簡化版本的通過RAG實現(xiàn)知識問答的流程圖,可以看到,整體和第一階段的向量搜索是比較類似的:
1. 在數(shù)據(jù)準(zhǔn)備階段,這里的原始數(shù)據(jù)可能是大量的文檔資料,我們需要盡量清洗為統(tǒng)一格式的文檔,每個文檔都按照一定的規(guī)則進行分段。這里的分段規(guī)則和大小需要多次嘗試,來保證最終的檢索速度和總結(jié)效果。然后把分段后的知識向量化,存入向量數(shù)據(jù)庫。
2. 在線推理階段,首先要做的事情是把用戶提問的問題從數(shù)據(jù)庫中檢索出N條相似的分段,作為下一步大模型總結(jié)的參考資料,然后大模型拿著這些資料按照要求,總結(jié)出一個答案給到提問者。

-
RAG上手
目前業(yè)內(nèi)有很多現(xiàn)成的產(chǎn)品可以快速體驗RAG,整體可配置的交互和原理大同小異,推薦阿里云百煉的應(yīng)用中心來進行相關(guān)操作。
平臺對應(yīng)的文檔中心有詳細(xì)的實踐教程,在準(zhǔn)備好基礎(chǔ)文檔的前提下,基本五分鐘就可以搭出來一個智能體應(yīng)用。以下用一個簡單的示例演示下RAG流程和需要關(guān)注的點(以下相關(guān)截圖來源阿里云百煉平臺):

核心步驟:
1. 創(chuàng)建一個RAG智能體應(yīng)用,主要關(guān)注模型選擇,prompt(希望大模型怎么幫你總結(jié)),知識庫,召回策略等。


2. 上傳知識庫,重點關(guān)注向量模型的選擇,分段規(guī)則。

3. 在檢索配置這里,設(shè)置召回類型和規(guī)則。

4. 測試問答效果

-
效果分析
優(yōu)勢:
1.【正確率高】正確率基本可以達到90%以上。
2.【話術(shù)控制】回復(fù)話術(shù)可以根據(jù)prompt較為靈活的控制。包括期望的語氣,回復(fù)格式等。
3.【兜底返回】可以控制知識庫沒有的內(nèi)容拒絕回答,只是返回固定文案。
不足:
1. 耗時較長,經(jīng)常一次完整回復(fù)需要10s以上
2. 按調(diào)用量產(chǎn)生調(diào)用費用,QPS較高時,費用也會較高
3. 因為允許大模型發(fā)揮,因此會存在幻覺的情況,也就是會有偶發(fā)的答非所問的case。
3. 結(jié)語
作為從事工程應(yīng)用領(lǐng)域的開發(fā),我們不能只根據(jù)“目前AI能做什么”來構(gòu)建自己的產(chǎn)品,也要看到未來AI的發(fā)展方向,比如之前大家一致詬病的大模型推理能力較弱,于是我們看到很多很重的提示詞工程和思維鏈模式來解決推理問題。但可能在推理方面的表現(xiàn),很多很重的解決方案并不如最新發(fā)布的 OpenAI O1大模型。
可以預(yù)見的是,隨著技術(shù)的發(fā)展,大模型的能力一定會越來越強,相關(guān)的調(diào)用成本一定會越來越低,對模型定制的確定性也會越來越好。除了保持學(xué)習(xí)實踐之外,哪些才是工程應(yīng)用真正需要沉淀的能力和方向,是我們需要思考的命題。