基于大模型的智能問答場景解決方案——RAG提升召回率的關鍵 原創
“ 知識庫的質量才是RAG系統的核心,任何優化手段都是建立在高質量知識庫的基礎之上。”
在目前大模型應用場景中智能問答應該是一個主流的應用方法,在很多領域智能問答已經部分取代人工,不但大大降低了企業的人工成本,而且能夠做到7*24小時在線,能夠及時解決用戶問題。
而具體的應用場景有智能客服,業務咨詢,醫療教育,金融投資等等多種行業;但目前為止很多人可能還認為AI只適用于那些大型互聯網公司,和中小企業以及傳統企業無關。
RAG智能體問答召回
在基于大模型進行智能問答的場景中,RAG已經成為當今的主流架構,而且經過這兩年的發展RAG系統也經過多次迭代升級;但等到真正投入使用后才發現,智能問答系統好像并沒有想象中的那么好用;即使接入了最好的模型,但效果依然不夠理想,其生成結果依然不盡人意。
但事實上大模型作為一個可插拔的組件,雖然對生成結果有一定的影響,但并不是主要原因,主要原因在于文檔召回率不足,以及對召回的文檔沒有做好處理。

大家可以想象一下,在一場歷史的開卷考試中,你帶了一本數學參考資料,這個開卷對你來說還有意義嗎?RAG也是如此。
所以,我們今天就來深入探討一下召回率的本質,以及如何構建一個結構化,內容豐富且高質量的知識庫;以顯著提升RAG系統的召回效果,從而增強問答系統的準確性和使用性。
什么是召回率?
在RAG檢索增強系統中,召回率是指在真正相關的問答中,能夠檢索回來多少相關文檔。
召回率計算公式:
召回率 = 檢索到的相關內容文檔數量 ? 所有相關內容文檔舉例來說以企業問答為例,假設你做了一個企業問答類的系統,知識庫中是關于企業基本介紹,產品,營銷等方面的文檔。
然后用戶咨詢,你們公司是做什么的?
這時實際上與公司經營高度相關的內容可能有五條,但RAG系統只返回了三條,這時召回率就是百分之六十。
在RAG系統中,召回率是一項非常關鍵的指標,這玩意就類似于公司客服對企業越了解,用戶咨詢時才能回答的更好;因為大模型能不能“答對”,很大程度取決于有沒有拿到相關內容。召回率越高,LLM 在生成答案時能參考的有效信息就越多,回答的質量和準確性也就越有保障。

事實上在RAG系統中,有很多種優化方案,包括問題改寫,歷史消息,重排序等;但事實上對RAG系統影響最大的一點還是知識庫的構建,高質量的知識庫能夠大大增強系統的召回率,并減輕后續工作量。
因此,知識庫構建才是RAG系統中最根本,也是最核心的基礎設施。
召回率低,主要有以下幾個原因:
- 知識覆蓋不足:知識來源單一,不能全面覆蓋業務所需的內容;以及過期知識不能及時刪除,新知識不能及時更新等問題。
- 內容理解偏差:RAG系統需要對文檔進行分塊,語義化處理;但由于分塊不合理,數據組織混亂,導致語義理解不清晰等問題。
- 結構策略粗糙:在構建知識庫時不能合理規劃元數據,缺少上下文信息等導致召回率不足。
那怎么提升知識庫的質量,以此來間接提升召回率呢?
提高數據覆蓋率
首先要提升知識庫文檔的覆蓋率,召回準不準確先不說,如果都沒有就不用談召回問題了。
具體做法有:
匯聚多渠道的內容:介紹,產品說明,FAQ,工單等
支持多種接入方式:數據庫,API,本地文檔等
建立數據清理和更新機制:數據是有時效性的,因此過期的數據需要清除和更新
提升內容理解質量
分塊策略合理
分塊(Chunking) 是指將長文檔切割成適合 RAG 檢索的、更小的文本單元:
- 若分塊太小:上下文缺失,回答不準確。
- 若分塊太大:Embedding 過于抽象,無法命中具體問題。
在具體實踐中,應考慮:
- 按語義、標題、段落切塊,避免語義斷層。
- 支持 Chunk Overlap,每塊有一定重疊,如每 300 個 Token 滑動切,同時根據語義分段,召回命中率更高。
并且在適當的場景中可以選擇多模態技術,以及知識圖譜等新技術。

結構化向量數據
很多人在剛開始做RAG時,認為只需要把內容分塊,但傳統向量檢索僅依賴 Embedding 相似度,雖具備語義匹配能力,但仍存在明顯短板:向量相似但語義不相關的內容易被誤召回。
結構化向量數據可以通過給向量庫添加元數據的方式,如根據時間,部門,業務類型等對數據進行邏輯隔離;以及對文檔內容進行標簽提取,可有效補充傳統的文檔上下文不足等問題。
并且對于非結構化數據,可以使用markdown或html等這種半結構格式進行統一處理,防止多種格式帶來的復雜問題。
并且,在后續過程中還可以根據這些元數據進行精準檢索,過濾,排序等操作。
總之,在RAG系統中并不只是簡單的把文檔切割,embedding嵌入就可以實現一個高召回率的智能問答系統。做一個智能問答系統很簡單,但想做好一個問答系統很不簡單。
本文轉載自??AI探索時代?? 作者:DFires

















