Jack Jiang

          我的最新工程MobileIMSDK:http://git.oschina.net/jackjiang/MobileIMSDK
          posts - 506, comments - 13, trackbacks - 0, articles - 1

          本文由B端技術(shù)中心分享,原題“從0到1:嗶哩嗶哩智能客服系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)”,本文有修訂和改動(dòng)。

          1、引言

          本文將要分享的是嗶哩嗶哩從0到1自研智能客服IM系統(tǒng)的技術(shù)實(shí)踐過(guò)程,包括整體架構(gòu)設(shè)計(jì)和主要核心功能的技術(shù)實(shí)現(xiàn)思路等,希望帶給你啟發(fā)。

          * 推薦閱讀:《得物從0到1自研客服IM系統(tǒng)的技術(shù)實(shí)踐之路》。

           
           
          技術(shù)交流:

          - 移動(dòng)端IM開(kāi)發(fā)入門(mén)文章:《新手入門(mén)一篇就夠:從零開(kāi)發(fā)移動(dòng)端IM

          - 開(kāi)源IM框架源碼:https://github.com/JackJiang2011/MobileIMSDK備用地址點(diǎn)此

          (本文已同步發(fā)布于:http://www.52im.net/thread-4517-1-1.html

          2、本文作者

          • 小雄:?jiǎn)袅▎袅头I(yè)務(wù)技術(shù)負(fù)責(zé)人;
          • 樂(lè)文:?jiǎn)袅▎袅ㄙY深開(kāi)發(fā)工程師;
          • 鎮(zhèn)宇:?jiǎn)袅▎袅ǜ呒?jí)開(kāi)發(fā)工程師;
          • 四百塊:?jiǎn)袅▎袅ǜ呒?jí)開(kāi)發(fā)工程師;
          • JasonQian:?jiǎn)袅▎袅ǜ呒?jí)開(kāi)發(fā)工程師;
          • 宇琪:?jiǎn)袅▎袅ㄙY深開(kāi)發(fā)工程師。

          3、技術(shù)背景

          3.1為什么要做新系統(tǒng)

          B站過(guò)去的客服系統(tǒng)是通過(guò)外部采購(gòu)獲得的,已經(jīng)使用了幾年。

          然而,這個(gè)外購(gòu)的系統(tǒng)存在一系列問(wèn)題:

          • 1)穩(wěn)定性低,缺乏良好的拓展性和伸縮性,經(jīng)常出現(xiàn)bug,難以應(yīng)對(duì)突發(fā)的流量高峰;
          • 2)與B站產(chǎn)品體系無(wú)法打通,難以根據(jù)業(yè)務(wù)需求進(jìn)行定制化;
          • 3)由于系統(tǒng)邏輯老舊,穩(wěn)定性不佳,導(dǎo)致效率低下,已經(jīng)不再能滿足進(jìn)一步提升客服效率的要求。

          雖然曾考慮過(guò)采購(gòu)新的客服系統(tǒng),但也面臨一些問(wèn)題。

          比如:

          • 1)昂貴的價(jià)格,特別是在當(dāng)前降本增效的大背景下,這是一個(gè)重要因素;
          • 2)更重要的是,該系統(tǒng)仍然無(wú)法與內(nèi)部系統(tǒng)進(jìn)行良好的整合,無(wú)法支持業(yè)務(wù)定制化。

          因此,B站決定開(kāi)展新客服系統(tǒng)的自研工作。

          3.2怎么做新系統(tǒng)

          在面對(duì)如何打造一個(gè)全新的客服系統(tǒng)的挑戰(zhàn)時(shí),我們首先開(kāi)始了調(diào)研、訪談和體驗(yàn)。

          1)業(yè)內(nèi)調(diào)研

          我們?cè)L問(wèn)了一些在客服系統(tǒng)領(lǐng)域表現(xiàn)優(yōu)秀的知名公司,從業(yè)務(wù)和技術(shù)的角度進(jìn)行了深入調(diào)研。

          總結(jié)下來(lái),目前客服系統(tǒng)比較重視以下三個(gè)關(guān)鍵指標(biāo):

          • 1)智能問(wèn)答攔截率(也對(duì)應(yīng)人工處理率);
          • 2)用戶滿意度;
          • 3)平均處理時(shí)長(zhǎng):主要指客服人員處理一次會(huì)話所需的平均時(shí)長(zhǎng)。

          對(duì)于一個(gè)客服系統(tǒng)來(lái)說(shuō),良好的智能問(wèn)答功能至關(guān)重要:

          • 1)提供7*24小時(shí)在線服務(wù),無(wú)需排隊(duì)等候,確保用戶在任何時(shí)間都能夠得到及時(shí)響應(yīng);
          • 2)對(duì)于用戶頻繁問(wèn)到的問(wèn)題,可以快速回答,提高效率,降低成本,從而實(shí)現(xiàn)更好的客戶體驗(yàn)和更高效的資源利用;
          • 3)能夠快速解答大部分簡(jiǎn)單問(wèn)題,同時(shí)讓復(fù)雜問(wèn)題有機(jī)會(huì)被人工高效解決,從而提升整體解決問(wèn)題的效率和效果。

          這些核心的指標(biāo)為后續(xù)的研發(fā)指明了方向。

          2)內(nèi)部訪談和體驗(yàn)

          我們對(duì)負(fù)責(zé)客服流程運(yùn)營(yíng)的團(tuán)隊(duì)以及各項(xiàng)功能團(tuán)隊(duì)(質(zhì)檢、輿情、機(jī)器人、工單、二線、數(shù)據(jù)等)和一線客服同學(xué)進(jìn)行了訪談,同時(shí)也全面體驗(yàn)了現(xiàn)有的系統(tǒng)。

          特別是從各個(gè)團(tuán)隊(duì)的訪談中,我們獲得了許多細(xì)節(jié)性的寶貴經(jīng)驗(yàn)和一系列建議,這對(duì)我們?nèi)绾尉唧w做好產(chǎn)品和之后推動(dòng)系統(tǒng)的落地起到了巨大的作用。這些經(jīng)驗(yàn)和建議將在工作臺(tái)一節(jié)中詳細(xì)展示,在這里就不再展開(kāi)。

          3.3新系統(tǒng)落地效果如何

          在核心指標(biāo)上,新客服系統(tǒng)都取得了顯著的提升:

          • 1)智能問(wèn)答攔截率:與原有系統(tǒng)相比,新系統(tǒng)的智能問(wèn)答攔截率有了巨大的提升,達(dá)到了業(yè)內(nèi)先進(jìn)水平;
          • 2)用戶滿意度:也有顯著的提升,表明用戶對(duì)新系統(tǒng)的滿意度較高;
          • 3)平均處理時(shí)長(zhǎng):盡管新系統(tǒng)需要適應(yīng)的過(guò)程,但平均處理時(shí)長(zhǎng)仍有減少,這一點(diǎn)非常不易。

          保密考慮,不暴露具體數(shù)字

          此外,新客服系統(tǒng)的落地還提高了客服工作效率,實(shí)現(xiàn)了與內(nèi)部業(yè)務(wù)系統(tǒng)的無(wú)縫對(duì)接,優(yōu)化了客服功能工具,驗(yàn)證了自主研發(fā)的能力。

          接下來(lái),我們將從技術(shù)角度,整體和分細(xì)節(jié)方面對(duì)新客服系統(tǒng)進(jìn)行介紹。

          4、客服系統(tǒng)整體架構(gòu)和核心業(yè)務(wù)流程

          4.1概述

          客服系統(tǒng)主要功能:

          • 1)C端入口:進(jìn)入客服的入口;
          • 2)智能問(wèn)答:通過(guò)機(jī)器人與用戶進(jìn)行會(huì)話,解決用戶的問(wèn)題;
          • 3)客服坐席調(diào)度:給用戶選擇合適的客服人員同時(shí)兼顧客服人員的工作平衡;
          • 4)客服工作臺(tái):為客服人員提供便捷的工作界面和工具;
          • 5)知識(shí)庫(kù):匯集各類(lèi)常見(jiàn)問(wèn)題和解決方案,供客服使用;
          • 6)IM聊天基礎(chǔ)能力:負(fù)責(zé)構(gòu)建用戶和客服之間的聊天,進(jìn)行對(duì)話操作(發(fā)送文字、圖片、視頻)等;
          • 7)客服工單:用于跟蹤和解決用戶提出的問(wèn)題和需求;
          • 8)權(quán)限管理:確保客服系統(tǒng)數(shù)據(jù)和功能的安全性;

          還有一些其他的功能如:質(zhì)檢系統(tǒng),輿情系統(tǒng),客服工時(shí)系統(tǒng),監(jiān)控系統(tǒng)等等。

          4.2總體功能架構(gòu)

          在上述描述中,我們可以認(rèn)識(shí)到客服系統(tǒng)具有一定的復(fù)雜性。

          為了幫助大家從宏觀上理解客服系統(tǒng),以下列出了整體功能的架構(gòu)圖:

          4.3核心流程

          同時(shí),為了幫助大家進(jìn)一步了解,這里列出了客服系統(tǒng)的核心流程。

          5、核心功能設(shè)計(jì)和實(shí)現(xiàn)1:用戶入口

          首先簡(jiǎn)單看一下嗶哩嗶哩客服的用戶入口。

          當(dāng)用戶進(jìn)入聊天框,首先會(huì)進(jìn)入智能問(wèn)答環(huán)節(jié),如果智能問(wèn)答無(wú)法幫助用戶解決問(wèn)題,用戶可以選擇進(jìn)一步聯(lián)系人工客服來(lái)解決問(wèn)題。

          6、核心功能設(shè)計(jì)和實(shí)現(xiàn)2:智能問(wèn)答

          6.1概述

          在客服的業(yè)務(wù)場(chǎng)景中,智能問(wèn)答是一個(gè)非常重要的需求。

          它具備了人工不可比擬的優(yōu)勢(shì):

          • 1)提供7*24小時(shí)的在線服務(wù);
          • 2)高峰時(shí)期無(wú)需排隊(duì)等候;
          • 3)用戶頻繁問(wèn)到的問(wèn)題,可以快速回答;
          • 4)大部分簡(jiǎn)單問(wèn)題得以快速自助解決。

          從而從整體上提高效率,降低成本,實(shí)現(xiàn)更好的客戶體驗(yàn)和更高效的資源利用。

          下面,我們將簡(jiǎn)要介紹嗶哩嗶哩客服系統(tǒng)的智能問(wèn)答。

          6.2智能問(wèn)答系統(tǒng)概覽

          目前,嗶哩嗶哩客服系統(tǒng)在執(zhí)行智能問(wèn)答任務(wù)時(shí),會(huì)根據(jù)匹配度的不同提供兩種回答方式。

          分別是:

          • 1)當(dāng)匹配度較高時(shí),系統(tǒng)會(huì)直接給出答案;
          • 2)當(dāng)匹配度只是中等時(shí),系統(tǒng)則會(huì)提供一個(gè)“您想咨詢的問(wèn)題可能是”的列表。

          這個(gè)策略的目的是為了提供更準(zhǔn)確、更有用的回答,以幫助用戶更快地找到他們需要的信息。

          6.3機(jī)器人問(wèn)答技術(shù)調(diào)研

          機(jī)器人問(wèn)答技術(shù)在實(shí)現(xiàn)上主要分為兩種類(lèi)型:檢索式和生成式。

          1)檢索式:檢索式模型通常利用神經(jīng)網(wǎng)絡(luò)技術(shù),將大量的預(yù)訓(xùn)練語(yǔ)料數(shù)據(jù)輸入到模型中進(jìn)行訓(xùn)練。在完成訓(xùn)練后,模型能夠?qū)π碌妮斎脒M(jìn)行分類(lèi)、匹配和回答問(wèn)題。這種方案的實(shí)現(xiàn)主要依賴于大規(guī)模的預(yù)訓(xùn)練數(shù)據(jù)和高效的檢索算法。

          2)生成式:另一種類(lèi)型的是生成式模型,它主要采用深度學(xué)習(xí)技術(shù)以及最新的大語(yǔ)言模型,通過(guò)學(xué)習(xí)大量數(shù)據(jù)來(lái)生成文本。這種方案通常使用循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)或變換器(Transformer)等結(jié)構(gòu),能夠處理序列數(shù)據(jù)并生成新的序列。與檢索式模型不同,生成式模型在訓(xùn)練過(guò)程中會(huì)直接生成目標(biāo)文本,而不是通過(guò)檢索匹配。

          總的來(lái)說(shuō),檢索式和生成式兩種模型各有特點(diǎn),各有優(yōu)勢(shì),在機(jī)器人問(wèn)答系統(tǒng)中都有應(yīng)用。具體選擇哪種模型,往往需要根據(jù)具體的應(yīng)用場(chǎng)景和需求來(lái)決定。

          方案對(duì)比:

          在電商客服場(chǎng)景下,回答用戶問(wèn)題的準(zhǔn)確性至關(guān)重要,寧可選擇不回答也不能夠回答錯(cuò)誤。相比之下,生成式答案會(huì)受到多種因素的影響,導(dǎo)致結(jié)果不可控。而檢索式答案來(lái)源于知識(shí)庫(kù),可以提供更加準(zhǔn)確的問(wèn)題解答。雖然檢索式在處理一些長(zhǎng)尾問(wèn)題或者冷門(mén)領(lǐng)域的問(wèn)題時(shí)表現(xiàn)不佳,但是可以通過(guò)人工干預(yù)來(lái)豐富知識(shí)庫(kù)進(jìn)行優(yōu)化。綜合考慮到這些因素,最終選擇了檢索式實(shí)現(xiàn)。

          6.4向量搜索和基于Faiss實(shí)現(xiàn)的智能問(wèn)答

          1)向量搜索基本原理:

          給定一個(gè)向量集合:

          和一個(gè)待查詢的向量:

          從 N 個(gè)向量里面找到距離 X 某種距離(比如 L2 距離)最近的 K個(gè)向量。

          其應(yīng)用包括:

          • 1)從語(yǔ)料庫(kù)里面找到距離某個(gè)語(yǔ)句最相近的一句話;
          • 2)從圖片庫(kù)里面找到距離某張圖片最類(lèi)似的一張圖片;
          • 3)還能查找別的,比如視頻、音頻、動(dòng)圖、基因序列、搜索條目等。

          這些東西(圖片、詞語(yǔ)、句子、視頻等)都可以用向量表示出來(lái),如下圖:

          這個(gè)事情看起來(lái)很簡(jiǎn)單,但是當(dāng)我們的數(shù)據(jù)庫(kù)變得特別大時(shí),這件事情就變得比較困難了。因此這里就專(zhuān)門(mén)來(lái)研究如何做這樣的向量搜索。

          2)Faiss簡(jiǎn)介:

          Faiss(Facebook AI Similarity Search)是 Facebook AI 開(kāi)發(fā)的用于高效相似性搜索和向量聚類(lèi)的庫(kù)。

          Faiss 總體使用過(guò)程可以分為三步:

          • 1)構(gòu)建訓(xùn)練數(shù)據(jù)(以矩陣形式表達(dá));
          • 2)挑選合適的 Index (Faiss 的核心部件),將訓(xùn)練數(shù)據(jù) add 進(jìn) Index 中;
          • 3)Search,也就是搜索,得到最后結(jié)果。

          詳細(xì)解釋?zhuān)礊椋?/strong>首先根據(jù)原始向量構(gòu)建一個(gè)索引文件,再根據(jù)索引文件進(jìn)行查詢。初次查詢前需要進(jìn)行train和add過(guò)程,后續(xù)若要進(jìn)行索引的添加可以再次使用add添加索引。

          如下圖所示:

          3)基于Faiss實(shí)現(xiàn)的智能問(wèn)答:

          在實(shí)現(xiàn)檢索式的過(guò)程中,主要任務(wù)是找到與用戶提問(wèn)語(yǔ)句最相似的問(wèn)法,從而獲取對(duì)應(yīng)的答案。

          這個(gè)過(guò)程包括以下步驟:

          • 1)數(shù)據(jù)準(zhǔn)備:建立知識(shí)庫(kù),包含標(biāo)準(zhǔn)問(wèn)、相似問(wèn)以及對(duì)應(yīng)的答案。每個(gè)標(biāo)準(zhǔn)問(wèn)有多個(gè)相似問(wèn),并對(duì)應(yīng)唯一的答案:
          • 2)文本向量化:使用BERT模型將問(wèn)題和相似問(wèn)轉(zhuǎn)化為向量表示。BERT模型采用預(yù)訓(xùn)練方式,能夠?qū)⑤斎氲奈谋巨D(zhuǎn)化為對(duì)應(yīng)的向量表示。公司已有基于社區(qū)數(shù)據(jù)訓(xùn)練的bert-embedding服務(wù),體驗(yàn)效果滿足需求,因此使用該服務(wù)進(jìn)行文本向量化;
          • 3)相似度計(jì)算:使用Faiss庫(kù)進(jìn)行相似度計(jì)算。Faiss庫(kù)是一種針對(duì)聚類(lèi)和相似性搜索的工具,為稠密向量提供高效相似度搜索和聚類(lèi),支持十億級(jí)別向量的搜索,是目前最為成熟的近似近鄰搜索庫(kù);
          • 4)搜索匹配:將用戶問(wèn)題向量傳入Faiss庫(kù)中,使用相似度計(jì)算方法對(duì)問(wèn)題進(jìn)行匹配,找到最相似的TopN問(wèn)題向量(或者說(shuō)相似問(wèn));
          • 5)答案選取:根據(jù)相似度結(jié)果高低,直接給出問(wèn)題對(duì)應(yīng)的答案或者“您想咨詢的問(wèn)題可能是”列表。如果相似度很低,則會(huì)轉(zhuǎn)接人工。

          基于Faiss的智能問(wèn)答如下圖所示:

          4)Faiss索引選擇實(shí)踐:

          Faiss提供的索引很多,需要根據(jù)數(shù)據(jù)集的大小和機(jī)器的性能來(lái)選取合適的索引。

          基于準(zhǔn)確查找:

          • 僅有IndexFlatL2索引可以提供確切的結(jié)果,但是性能上會(huì)比較差,僅適用數(shù)據(jù)量比較少的情況,通常為其他索引準(zhǔn)確度提供基準(zhǔn)。

          基于內(nèi)存限制:

          • 1)由于所有的Faiss索引都將向量存儲(chǔ)在內(nèi)存中,如果內(nèi)存是限制因素,那么就需要將準(zhǔn)確度和性能進(jìn)行折衷:
          • 2)不關(guān)心內(nèi)存則使用"HNSWx",通過(guò)"efSearch"參數(shù)平衡準(zhǔn)確度和性能,該參數(shù)越大越準(zhǔn)確,同時(shí)性能越差;
          • 3)有一點(diǎn)關(guān)心內(nèi)存則使用"..,Flat","..."的含義是聚類(lèi),聚類(lèi)后,"Flat"的含義是不壓縮,存儲(chǔ)大小與原始數(shù)據(jù)集相同,通過(guò)"nprobe"參數(shù)平衡準(zhǔn)確度和性能;
          • 4)很關(guān)心內(nèi)存則使用"PCARx,...,SQ8",PCARx指將維度降x,SQ8指將每8bit向量壓縮到1bit;
          • 5)非常關(guān)心內(nèi)存則使用"OPQx_y,...,PQx",PQx使用輸出x-byte的量化器壓縮向量。x通常<= 64,對(duì)于較大的代碼,SQ通常是準(zhǔn)確和快速的。OPQ是向量的線性轉(zhuǎn)換,使它們更容易壓縮。

          基于數(shù)據(jù)集限制:

          • 1)如果低于1M個(gè)向量: "...,IVFx,...",直接倒排索引,x范圍在 4*sqrt(N)~16*sqrt(N)之間,N是數(shù)據(jù)集大小,x是k-means聚類(lèi)后的數(shù)量;
          • 2)如果1M - 10M:"...,IVF65536_HNSW32,...",結(jié)合IVF和HNSW,用HNSW進(jìn)行聚類(lèi);
          • 3)如果10M - 100M: "...,IVF262144_HNSW32,...";
          • 4)如果100M - 1B: "...,IVF1048576_HNSW32,..."。

          由于我們數(shù)據(jù)集在10M以內(nèi),最終選取了"IVF{IVFK}_HNSW32,Flat",如果小于10M,IVFK根據(jù)依據(jù)4*sqrt(N)~16*sqrt(N)動(dòng)態(tài)算,如果大于10M,則IVFK為65536。

          部分代碼如下:

          iflen(x) < 1000000:

               ivfK = findIVFK(len(x))

           else:

               ivfK = 65536

           factory_str = f'IVF{ivfK}_HNSW32,Flat'

          def findIVFK(N: int):

              sqrtN = math.sqrt(N)

              print(sqrtN, 4 * sqrtN, 16 * sqrtN)

              i = 2

              while True:

                  i *= 2

                  if4 * sqrtN <= i <= 16 * sqrtN and N // 256 <= i <= N // 30:

                      returni

                  ifi > 4096:

                      return512

          7、核心功能設(shè)計(jì)和實(shí)現(xiàn)3:客服坐席調(diào)度

          7.1什么是客服坐席調(diào)度

          客服坐席調(diào)度主要涉及為用戶提供選擇人工客服的一系列調(diào)度策略和邏輯。

          通過(guò)這些策略和邏輯,用戶可以快速地聯(lián)系到合適的人工客服來(lái)處理他們的問(wèn)題,從而獲得更及時(shí)和有效的幫助。

          調(diào)度策略可以包括根據(jù)用戶的信息、問(wèn)題類(lèi)型、服務(wù)需求等因素來(lái)分配客服坐席,以及根據(jù)坐席的服務(wù)質(zhì)量和服務(wù)水平來(lái)進(jìn)行評(píng)估和調(diào)整。

          通過(guò)合理的調(diào)度策略和邏輯,可以提高用戶滿意度和解決效率,從而提升整個(gè)客戶服務(wù)的品質(zhì)和用戶體驗(yàn)。

          大致可以通過(guò)以下流程圖說(shuō)明:

          坐席調(diào)度策略在客戶服務(wù)中扮演著關(guān)鍵角色。

          以下是可以看到的幾種常見(jiàn)策略及其優(yōu)勢(shì)。

          1)均衡分配策略:這種策略將用戶請(qǐng)求平均分配給各個(gè)坐席,從而平衡工作負(fù)荷,提高整體服務(wù)效率。它的優(yōu)點(diǎn)在于保證了所有坐席的工作量公平分配,防止了某些坐席過(guò)度勞累,也防止了某些坐席空閑的情況。

          2)熟客優(yōu)先策略:根據(jù)用戶的歷史服務(wù)記錄和需求,將用戶優(yōu)先分配給曾經(jīng)提供過(guò)優(yōu)質(zhì)服務(wù)的坐席。這種策略的優(yōu)點(diǎn)在于提高了用戶的服務(wù)體驗(yàn),因?yàn)槭炜屯ǔD軌虻玫礁焖佟⒏鼫?zhǔn)確的服務(wù)。

          3)上次服務(wù)優(yōu)先策略:將用戶分配給上一次為其提供服務(wù)的坐席,以提高用戶滿意度和連續(xù)服務(wù)效率。這種策略的優(yōu)點(diǎn)在于可以維持用戶對(duì)特定坐席的信任,有利于提供持續(xù)、一致的服務(wù)。

          4)指定分配策略:根據(jù)特定條件或需求,將用戶請(qǐng)求分配給指定的坐席。這種策略的優(yōu)點(diǎn)在于可以滿足某些特殊需求,或者處理復(fù)雜問(wèn)題。

          在進(jìn)行了深入研究后,我們發(fā)現(xiàn)均衡分配策略是業(yè)內(nèi)使用最廣泛和最常用的策略,也被廣泛應(yīng)用于各種客戶服務(wù)系統(tǒng)。

          這是因?yàn)榫夥峙洳呗钥梢源_保所有坐席的工作量公平分配,防止過(guò)度勞累,防止坐席空閑,從而提高整體服務(wù)效率。

          同時(shí),我們也發(fā)現(xiàn),熟客優(yōu)先策略、上次服務(wù)優(yōu)先策略和指定分配策略都有其特定的適用場(chǎng)景,可以在需要的時(shí)候作為均衡分配策略的補(bǔ)充。

          因此,我們的選擇是采用均衡分配策略作為基礎(chǔ)的坐席調(diào)度策略,同時(shí)根據(jù)特定情況靈活運(yùn)用其他策略。

          7.2均衡分配

          在介紹均衡分配前,有幾個(gè)名詞需要提前解釋一下。

          1)飽和度:客服可以服務(wù)的最大用戶數(shù),在客服被邀請(qǐng)進(jìn)入系統(tǒng)時(shí)會(huì)被設(shè)置。

          2)均衡分配:本系統(tǒng)會(huì)在不超過(guò)飽和度的情況下,客服均衡獲取用戶分配。

          7.3如何實(shí)現(xiàn)均衡分配

          以下是我們客服系統(tǒng)中均衡分配的實(shí)現(xiàn)邏輯。

          注意:分配是以技能組為單位進(jìn)行分配。假設(shè)一個(gè)技能組有兩個(gè)客服,A客服的飽和度為5,B客服的飽和度為10。

          具體是:

          • 1)如果A客服當(dāng)前服務(wù)的用戶數(shù)少于B客服當(dāng)前服務(wù)的用戶數(shù),并且都低于各自的飽和度,那么如果有用戶進(jìn)線,系統(tǒng)會(huì)優(yōu)先分配給A客服;
          • 2)如果A客服和B客服當(dāng)前服務(wù)的用戶數(shù)相等,并且都低于各自的飽和度,那么如果有用戶進(jìn)線,系統(tǒng)會(huì)隨機(jī)均衡分配給A或B客服;
          • 3)如果A客服已經(jīng)達(dá)到了自己的飽和度,那么如果有用戶進(jìn)線,A客服將不會(huì)被分配到該用戶進(jìn)線,該用戶將被分配給還沒(méi)有達(dá)到飽和度的客服,并根據(jù)上述1和2的原則進(jìn)行分配;
          • 4)如果A客服和B客服都已經(jīng)達(dá)到了各自的飽和度,那么系統(tǒng)將進(jìn)入排隊(duì)狀態(tài)。

          7.4排隊(duì)

          這里可以用Redis的Zset數(shù)據(jù)結(jié)構(gòu),可以方便的根據(jù)用戶排隊(duì)時(shí)間進(jìn)行先后次序排隊(duì)。

          具體是:

          • 1)ZADD:用于添加元素,Key使用技能組id,每個(gè)技能組id關(guān)聯(lián)一個(gè)有序集,有序集Member是用戶id,Score是用戶進(jìn)入排隊(duì)的時(shí)間戳,這里可以用于添加排隊(duì)的用戶;
          • 2)ZRANK:返回有序集中成員的排名,可用于展示當(dāng)前排名;
          • 3)ZREM:移除有序集中的一個(gè)或多個(gè)成員,可用于退出排隊(duì);
          • 4)ZRANGE:返回有序集中指定區(qū)間內(nèi)的成員,可用于客服工作臺(tái)會(huì)話邀請(qǐng)場(chǎng)景;
          • 5)ZPOPMIN:返回最低得分的成員,也就是最早排隊(duì)的成員,可以用于自動(dòng)進(jìn)線場(chǎng)景;
          • 6)ZCOUNT:返回計(jì)算有序集合中指定分?jǐn)?shù)區(qū)間的成員數(shù)量,可用于計(jì)算排隊(duì)長(zhǎng)度;
          • 7)ZSCORE:返回有序集中,成員的分?jǐn)?shù)值,可用于查看用戶排隊(duì)時(shí)間。

          以上命令基本可以滿足排隊(duì)場(chǎng)景各項(xiàng)操作。

          7.5自動(dòng)進(jìn)線和會(huì)話邀請(qǐng)

          當(dāng)用戶進(jìn)入排隊(duì)后,有兩種方式可以獲得人工服務(wù):自動(dòng)進(jìn)線和會(huì)話邀請(qǐng)。

          具體是:

          • 1)自動(dòng)進(jìn)線:系統(tǒng)會(huì)持續(xù)掃描未達(dá)到飽和度的客服,如果發(fā)現(xiàn)有客服尚未達(dá)到飽和度,會(huì)自動(dòng)將隊(duì)列中的用戶分配給該客服;
          • 2)會(huì)話邀請(qǐng):客服人員可以根據(jù)自身能力,即使已經(jīng)超過(guò)飽和度,仍然可以邀請(qǐng)排隊(duì)中的用戶進(jìn)入會(huì)話。可以一次性邀請(qǐng)一個(gè)或多個(gè)用戶進(jìn)入會(huì)話。

          8、 核心功能設(shè)計(jì)和實(shí)現(xiàn)4:客服工作臺(tái)

          8.1工作臺(tái)常見(jiàn)功能

          工作臺(tái)是客服人員與用戶會(huì)話的主戰(zhàn)場(chǎng),其功能非常多。

          大致有以下一些:

          8.2部分亮點(diǎn)和智能化功能示意

          (限于篇幅,這里也不列舉過(guò)多)

          8.3工作臺(tái)技術(shù)難點(diǎn)

          1)多位用戶同時(shí)聊天,快速切換,卡頓問(wèn)題的解決:

          為了確保客服在快速切換時(shí)能夠第一時(shí)間看到消息,可以采用以下方式在會(huì)話切換時(shí)進(jìn)行緩存更新渲染。

          具體是:

          1)定時(shí)更新緩存:WebWorker在后臺(tái)定時(shí)獲取并更新當(dāng)前會(huì)話信息到緩存中;

          2)緩存預(yù)渲染:在客服切換會(huì)話時(shí),直接渲染本地內(nèi)存中緩存的內(nèi)容,確保第一時(shí)間看到消息;

          3)同步機(jī)制:在客服切換會(huì)話時(shí),立刻發(fā)出接口請(qǐng)求,將最新的會(huì)話信息實(shí)時(shí)更新到緩存中,以確保緩存與實(shí)際會(huì)話信息的一致性。

          通過(guò)以上方式,可以確保客服在快速切換會(huì)話時(shí)能夠第一時(shí)間看到消息,提高服務(wù)效率。

          DOM會(huì)隨消息數(shù)量線性增長(zhǎng),從而導(dǎo)致瀏覽器卡頓甚至崩潰,如果每次都動(dòng)態(tài)拉取數(shù)據(jù),會(huì)對(duì)服務(wù)端造成壓力,通過(guò)維護(hù)緩存數(shù)據(jù)+虛擬列表+虛擬滾動(dòng)的方式來(lái)渲染消息信息,保證系統(tǒng)可以在瀏覽器中長(zhǎng)時(shí)間運(yùn)行流暢。

          2)工作臺(tái)消息種類(lèi)繁多難題解決:

          工作臺(tái)消息種類(lèi)較多,且消息本身會(huì)與業(yè)務(wù)產(chǎn)生關(guān)聯(lián),如果不合理抽離組件,會(huì)影響業(yè)務(wù)的擴(kuò)展。

          如上圖所示:多個(gè)消息類(lèi)型對(duì)應(yīng)多個(gè)功能卡片,每個(gè)功能卡片會(huì)組裝多個(gè)基礎(chǔ)組件,如文本消息 = 純文本框 + 信息面板,以此確保了業(yè)務(wù)快速擴(kuò)展能力和基礎(chǔ)組件的復(fù)用能力。

          9、 核心功能設(shè)計(jì)和實(shí)現(xiàn)5:權(quán)限管理

          1)RBAC模型:

          迄今為止,最普及的權(quán)限設(shè)計(jì)模型是RBAC模型,即基于角色的訪問(wèn)控制(Role-Based Access Control)。

          因此,本次客服系統(tǒng)也參考了RBAC模型:

          • 1)RBAC就是用戶通過(guò)角色與權(quán)限進(jìn)行關(guān)聯(lián);
          • 2)簡(jiǎn)單地說(shuō),一個(gè)用戶擁有若干角色,每一個(gè)角色擁有若干權(quán)限;
          • 3)這樣,就構(gòu)造成“用戶-角色-權(quán)限”的授權(quán)模型;
          • 4)在這種模型中,用戶與角色之間,角色與權(quán)限之間,一般者是多對(duì)多的關(guān)系。

          這種授權(quán)模型提供了了一種靈活的授權(quán)方式,可以方便地實(shí)現(xiàn)用戶之間的授權(quán)和訪問(wèn)控制,同時(shí)也簡(jiǎn)化了權(quán)限管理流程,提高了管理效率。

          RBAC模型示意圖如下:

          目前客服只要求一個(gè)用戶可以有多個(gè)角色,一個(gè)角色只有一個(gè)權(quán)限。

          如下所示:

          RBAC模型目前完全可以支撐當(dāng)前的客服的權(quán)限管理。

          3)權(quán)限管理界面:

          在管理員頁(yè)面上,可以方便的進(jìn)行技能組(角色)分配,如下所示。

          10、規(guī)劃和展望

          當(dāng)前備受關(guān)注的大語(yǔ)言模型我們也進(jìn)行了探索。我們與公司AI部門(mén)合作,將客服與用戶的真實(shí)聊天記錄以及知識(shí)庫(kù)作為訓(xùn)練數(shù)據(jù),給大模型進(jìn)行訓(xùn)練,并且進(jìn)行了測(cè)試。

          總體上,我們學(xué)到了客服的回答風(fēng)格,使回答更為流暢自然,與檢索式問(wèn)答相比,這種方式更容易讓客戶在心理上接受,并能夠做出一些決策。

          情緒撫慰:

          意圖識(shí)別:

          自我決策:

          當(dāng)然,我們也遇到了強(qiáng)制回答和回答無(wú)法解決問(wèn)題的情況。要解決問(wèn)題,需要根據(jù)客戶的具體問(wèn)題和訂單狀態(tài)來(lái)回答。不過(guò),大型語(yǔ)言模型是未來(lái)的趨勢(shì),值得我們進(jìn)一步探索。

          除了智能問(wèn)答領(lǐng)域,目前大型語(yǔ)言模型還可以應(yīng)用于智能話術(shù)場(chǎng)景,或者在一些偏向咨詢的場(chǎng)景中試用。

          此外,業(yè)內(nèi)也有在偏向咨詢的電商售前場(chǎng)景和互聯(lián)網(wǎng)教育咨詢場(chǎng)景中使用大型語(yǔ)言模型的案例。

          11、 參考資料

          [1] https://www.pinecone.io/learn/series/faiss/vector-indexes/

          [2] https://towardsdatascience.com/s ... in-nlp-acc0777e234c

          [3] https://www.pinecone.io/learn/series/faiss/faiss-tutorial/

          [4] 得物自研客服IM中收發(fā)聊天消息背后的技術(shù)邏輯和思考實(shí)現(xiàn)

          [5] 得物基于Electron開(kāi)發(fā)客服IM桌面端的技術(shù)實(shí)踐

          [6] 瓜子IM智能客服系統(tǒng)的數(shù)據(jù)架構(gòu)設(shè)計(jì)(整理自現(xiàn)場(chǎng)演講,有配套PPT)

          [7] 得物從0到1自研客服IM系統(tǒng)的技術(shù)實(shí)踐之路

          [8] 瓜子IM智能客服系統(tǒng)的數(shù)據(jù)架構(gòu)設(shè)計(jì)(PPT) [附件下載]

          [9] 從零到卓越:京東客服即時(shí)通訊系統(tǒng)的技術(shù)架構(gòu)演進(jìn)歷程


          (本文已同步發(fā)布于:http://www.52im.net/thread-4517-1-1.html



          作者:Jack Jiang (點(diǎn)擊作者姓名進(jìn)入Github)
          出處:http://www.52im.net/space-uid-1.html
          交流:歡迎加入即時(shí)通訊開(kāi)發(fā)交流群 215891622
          討論:http://www.52im.net/
          Jack Jiang同時(shí)是【原創(chuàng)Java Swing外觀工程BeautyEye】【輕量級(jí)移動(dòng)端即時(shí)通訊框架MobileIMSDK】的作者,可前往下載交流。
          本博文 歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明出處(也可前往 我的52im.net 找到我)。


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          Jack Jiang的 Mail: jb2011@163.com, 聯(lián)系QQ: 413980957, 微信: hellojackjiang
          主站蜘蛛池模板: 五大连池市| 德安县| 金坛市| 新干县| 西林县| 阜宁县| 永康市| 凤翔县| 凯里市| 宣武区| 平舆县| 庆元县| 泽库县| 宣城市| 阿鲁科尔沁旗| 宣武区| 买车| 乌拉特中旗| 凤凰县| 宝山区| 多伦县| 隆尧县| 乌什县| 冀州市| 长子县| 巴东县| 福鼎市| 涟水县| 扎兰屯市| 临洮县| 武陟县| 岱山县| 禹州市| 乌审旗| 信阳市| 尉犁县| 香港| 大同市| 麻城市| 三穗县| 运城市|