LinkAI RAG知識庫平臺最佳化之路

visionwpc發表於2024-07-31

基於知識庫的RAG(Retrieval-Augmented Generation, 檢索增強生成)作為當下主流的AI智慧體應用技術之一,為解決大語言模型在問答互動場景下存在的不足(知識的侷限性、滯後性以及幻覺等問題)提供瞭解決方案,也讓AI大模型在專業領域(尤其是企業應用場景)的落地應用、滿足真實的生產需求和業務場景成為可能。

選擇一個功能豐富,體驗友好的知識庫平臺至關重要,經過持續的迭代最佳化工作,LinkAI知識庫能力在檢索前、檢索中和檢索後等方面均得到顯著提升,對於有資料保密要求的企業也可以提供私有化部署。

即刻體驗:快速開始;LinkAI官網:LinkAI

編組 53

知識庫匯入

檢索前的重要步驟之一便是知識庫的內容匯入,這包括檔案的上傳、解析、內容切分和向量化儲存。將各種私有知識有序、合理地匯入知識庫,是後續獲得知識庫問答良好效果的重要前提。

多種內容格式

LinkAI知識庫現支援匯入:

  • 無結構文件
  • Q&A問答對
  • 多列表格
  • 網站內容

在匯入文件時,支援匯入PDF、docx、txt、md等格式的檔案,自動解析分段,使用方便;匯入問答對時,可將一問一答格式的CSV進行匯入,問答時的精準度更高,後續也更易於維護;匯入表格時,則可將多列的Excel或csv表格直接匯入,並支援按列檢索,非常適合匯入多屬性的列表型產品資訊

內容分段及預覽

當我們匯入無結構的內容(文件、網站)時,為了避免文件過長給知識檢索帶來的影響(索引混淆,核心知識在資訊中佔比較小,導致按索引檢索時無法命中關鍵資料;大模型token過長截斷導致語義不完整等),我們需要將無結構的文件內容進行切分。

在切分時,針對不同型別文件的特性我們定義了不同的分割器,並按照分割符和分塊長度進行切分。再設定冗餘字元和相鄰段落銜接句字重複的策略,來避免句子被截斷的問題,使一個完整的句子保留在同一個段落中。

另外,在預設分段字元長度(600 tokens)的基礎上,使用者可根據文件特點和需求手動調整分段長度並再次預覽分段,從而調整至相對最佳狀態。整個分段過程實時預覽,清晰可見

Snipaste_2024-07-28_17-09-47

增強解析

需要匯入的PDF、docx檔案時一般都是無結構的文件,除了排版不規範外,常常還會在檔案中帶有圖片和表格。

增強解析功能為加強對無結構文件的解析能力而推出,針對PDF、docx和md檔案,除文字以外,可對圖片和表格自動提取解析,並可在分段中直接預覽後匯入。

匯入後文件中的圖片可作為附加素材直接參與到答案生成中(可參考「素材傳送」部分),而表格則以Markdown格式儲存可支援行列檢索(可參考「表格匯入」部分)。

Snipaste_2024-07-28_16-49-37 Snipaste_2024-07-28_16-50-12

表格匯入

結構化的多列表格是使用場景中(例如多sku多屬性值的產品資訊表)非常見的知識格式。支援好表格知識的錄入是RAG應用承載更多業務場景落地的重要前提。

表格型知識庫使用了多列索引+單行檢索的模式。在知識庫表格匯入時,預設會將表格中所有的列作為索引列(即參與檢索的列,指的是使用者提問時會將使用者問題和該列的內容進行匹配),也可手動將列調整為非索引。另外可編輯修改列的名稱,列名會在大模型答案生成的過程中起到重要的“語義解釋”作用,設定一個含義清晰的列名能夠讓AI更好的理解該列的內容。而在檢索時,則透過列資料匹配得到行資料。

knowledge_table

以上圖場景舉例:匯入QS大學排名表格後,設定“學校英文名”一列為非檢索列,其餘三列均為檢索列,當使用者提問中涉及“牛津大學”時,會將使用者問題與“排名”、“學校名稱”、“型別”三列的內容進行檢索匹配,則可檢索到第三行資料“2,牛津大學,University of Oxford,QS200”,那麼在AI回覆使用者時,這一整行資料都會用於回覆的生成

同時,多列索引+單行檢索模式可支援跨列檢索,即提問“排名為第1名的學校中文名”和“排名為第1名的學校英文名”,可分別得到答案“麻省理工學院”和“University of Oxford”。在實際應用場景中舉例,假設使用者提問“推薦一款紅色的衣服”和“推薦一款M碼的衣服”,都能夠命中“顏色:紅色;尺碼:M碼...”這條知識庫中的商品資訊。

網站匯入

網站匯入功能支援很方便地將企業官網、產品介紹、部落格、公眾號文章等靜態網頁資源快速匯入知識庫中,搭建知識庫問答智慧體。支援將批次獨立網址連結貼上後一鍵匯入知識庫,還支援直接輸入網站地圖URL一鍵自動獲取網站下所有頁面的內容並匯入知識庫。

與匯入文件類似,系統會自動結合分段長度和標點符號、語義將長文字拆分成多個段落,方便建立索引進行檢索,在右側可以看到解析得到的每個網頁名稱,以及網頁中內容拆分效果的預覽。

knowledge-webinput

對於定期會更新的網站,我們即將支援設定定時獲取網站內容以更新知識庫的能力

知識庫的匯入非常重要,是RAG有效應用關鍵的第一步。基於我們過去的工作,使得LinkAI在多格式、多來源知識文件的解析,後續檢索環節的前置準備等方面不斷最佳化提升,很好地滿足了客戶及使用者的業務需求。

知識庫檢索

語義向量檢索

匯入知識庫內容後,在實際問答場景中的RAG檢索主要基於語義向量檢索實現,即使用模型對匯入的每段文字建立索引的向量,再使用同一模型將使用者的每次提問進行向量化,從而進行向量之間的匹配,得出吻合度相對最高的結果。

絕大多數問答場景下,基於向量檢索都可以得到比較好的檢索結果,從而生成高質量的回覆,在一些特殊場景下則需依賴增強檢索模式。

增強混合檢索

為提升知識庫問答的效果,我們上線了增強檢索模式。增強檢索是將語義檢索全文關鍵詞檢索混合增強的模式,能夠大幅提升一些特殊場景下(如對姓名、字母、數字、型號等文字的提問)的檢索和回覆效果。

提問及答案中包含例如姓名、字母、數字內容時,使用關鍵詞匹配往往會有比向量匹配更好的效果(對於部分短詞、符號,其向量往往無法反映真實的語義)故將向量檢索與關鍵詞匹配結合起來使用,可較為完美地覆蓋常規提問和特殊提問的需求。

123

當然,經典的關鍵詞檢索方式也有弊端,即文字間的強匹配可能會給大模型生成回覆帶來噪音(例如使用者提問中的無實義常用語匹配到同樣包含這些詞彙的知識庫內容,造成錯誤回覆)。為解決這一問題,LinkAI設定了過濾詞庫機制,將此類詞彙從關鍵詞檢索範圍中剔除。

檢索測試

知識庫匯入後,檢索時的工作過程往往是“黑盒”的(向量匹配相似度的不確定性以及大模型生成回覆的不確定性)為了將這一過程儘可能的白盒化,我們可以透過模擬使用者提問的方式來觀察檢索過程。

檢索測試可透過模擬使用者提問檢視問題在知識庫中的檢索結果,支援按 語義檢索 和 增強檢索 兩種模式進行測試,可檢視不同提問檢索到的前20條(語義檢索、關鍵詞檢索各10條)知識庫語料以及對應相似度。

Snipaste_2024-07-29_20-12-16

基於檢索測試可以在回答不符合預期時檢視該提問與預期的知識庫語料之間的向量匹配相似度,也便於為使用者提供配置知識庫語義檢索相似度閾值的參考依據。

當然,RAG檢索在實踐中還有很多正規化的變種,例如模組化並行檢索,加入記憶模組參與檢索,加入搜尋引擎內容參與檢索等等。同時,LinKAI在自研的AI搜尋、內容總結、擬人對話等功能和場景中廣泛使用和進行了RAG相關的多種技術最佳化實踐,因不涉及知識庫功能便不展開闡述。

知識庫答案生成

對於一次對話而言,知識庫檢索完成後便進入答案生成的環節,該環節是將檢索結果、使用者提問等內容結合LLM大語言模型能力進行智慧生成的過程,也是使用者接收到答案前的最後一道工序,對於最終回答的生成至關重要。

檢索結果加工

在前序環節中,取決於檢索策略配置(語義相似度閾值、檢索模式、檢索條數等)會得到多條檢索結果,其中可能包含重複的知識庫語料(分別透過語義檢索和關建詞匹配檢索得到,或同一語料重複錄入),便需要進行去重加工。另外,多條知識庫語料給到大語言模型的順序也至關重要,包含了同樣是語義檢索、但向量匹配相似度不同的語料之間的排序;以及關建詞檢索結果與語義檢索結果之間的排序。不同的排序方式對於大語言模型的理解和生成都可能會帶來不同的影響,故需引入重排策略進行調控。

降噪及嚴謹性控制

當透過上述手段確定可以使用的檢索結果後,依然還可能會面臨“可用性”問題。那就是檢索結果可能與使用者提問之間並無關係(部分短詞、符號,其向量往往無法反映真實的語義,但增強檢索又只能檢索到文字極其相似但實際含義完全不同的內容,如型號、標號相近的產品資訊),這時候如果直接將檢索結果提供給模型,相當於引入噪聲,從而干擾問題的準確回覆。

所以在此之前還需要對檢索結果進行最終降噪,實現方法是使用大語言模型對檢索結果和使用者提問進行前置比對,即藉助LLM出色的自然語言理解及推理能力來判斷檢索得到的知識庫語料與使用者提問是否有足夠的相關性。當確認兩者相關時才將其進一步給到大語言模型進行最終的答案生成。

對於知識庫中沒有的內容,部分企業場景則需要AI“有分寸感”的避而不答。LinkAI支援當知識庫檢索結果為空時(知識庫中沒有滿足語義檢索向量相似度閾值的語料)輸出固定回覆或不回覆,從而滿足嚴謹性控制的需求。

答案來源標註

大模型最終生成的回覆,對於終端使用者來說仍然是“黑盒”的,即使用者無法準確分辨該答案到底是基於確有其文的資料回覆的,還是基於大模型自身的知識能力回覆的。特別是在部分企業場景中,對於機器人的回答有嚴謹性和可追溯的要求。故可在最終回覆生成時,由大模型補充知識庫匯入時的檔案或網站名稱作為內容來源進行標註說明,以提升答案的可信度和可溯源性。

Snipaste_2024-07-29_21-23-24

素材傳送

知識庫內容除了文字以外,還會有圖片、影片和獨立檔案,在知識庫智慧體對話場景中,除了需要以文字回覆使用者外,也有回覆使用者圖片、影片和檔案的需求。

例如AI銷售的場景中,需根據顧客的需求傳送合適的服裝搭配方案,除了文字介紹外還需傳送衣服的圖片、影片作為補充。再例如企業內部員工問答bot的場景,當員工需要獲取一個檔案模板時,智慧體需要將整個檔案原封不動發出,而不是傳送檔案裡的具體內容。

知識庫除匯入用於RAG的文字語料外,還支援上傳圖片、影片、檔案等素材,上傳後的素材將以URL的格式作為附件一併儲存於知識庫內,當使用者提問命中該條知識庫語料時,附件可以一同發出

Snipaste_2024-07-28_22-10-24

知識庫素材傳送能力,不僅在網頁端使用時支援,LinkAI的應用接入渠道(網站嵌入、釘釘、飛書、企業微信等)均可相容。

知識庫回答反饋最佳化

使用記錄定位溯源

經過上述一系列動作後,一次基於RAG知識庫的對話便完成了。但即便使用了多種AI和工程能力的調控最佳化手段,也無法保證最終回答達到100%的準確率,偶爾還是會出現不符合預期的情況。

藉助LinkAI的使用記錄功能,可檢視每一次AI智慧體問答的詳情,其中包含了知識庫應用的RAG檢索結果以及工作流中知識庫節點的RAG檢索結果。

records-Knowledge2 1123

透過使用記錄中的知識庫命中詳情,可溯源大語言模型在生成智慧回覆時具體使用的知識庫參考資訊,還可一鍵跳轉到該條知識庫語料的編輯頁面,進行調整和最佳化。

未命中知識庫資料看板

在企業應用場景中,對於知識庫型智慧體,使用者提問如果未命中知識庫,往往是不符合預期的。一般來說代表著知識庫內容還沒有完全覆蓋使用者可能會提問的全部問題。故實時洞察未命中知識庫的使用者問題對於知識庫的不斷改善和最佳化也十分重要。

基於資料駕駛艙功能的「未命中知識庫」圖表,企業管理員可實時檢視任意週期內未命中知識庫內容的使用者提問統計資料,並可下鑽檢視明細,根據使用者當時的具體問題,判斷是否需要補充新的知識庫內容。這樣一來,智慧體應用的Feedback模式將從使用者反饋變為資料驅動,以此幫助企業不斷最佳化改善知識庫型智慧體的應用表現。

Snipaste_2024-07-29_23-11-15

RAG知識庫的運營型迭代最佳化是一個複利工程。受益於AI chatbot 1vN 服務的規模效應,當我們改善一個知識庫的問題時,對於服務效果的提升、人力的節省,都將帶來巨大的規模性收益。透過持續不斷的反饋最佳化,能夠最大程度釋放AI應用在企業場景落地的價值!

總結

RAG工程的每個步驟和環節都有可能對最終效果產生影響,在不同的使用場景中又會有不同的目標及側重。一套功能強大且場景覆蓋全面,並能相容各種corner case的RAG知識庫系統是知識庫型AI智慧體在企業場景落地應用的基礎。

LinkAI自23年6月釋出以來,不斷在RAG知識庫產品方面進行探索和最佳化,逐步達成功能通用、產品易用、多場景可用的目標。將繼續透過優秀的產品能力解決好大模型企業級應用中知識依賴和知識更新的問題。

更多內容點選訪問LinkAI官網,知識庫文件:LinkAI知識庫

相關文章