兩個簡單技巧把 RAG 檢索正確率從 50% 提高到 95 % 原創
在實際項目實施過程中,RAG(檢索增強生成)系統的關鍵在于其檢索階段,這一環節直接關系到生成效果的質量。RAG 系統的運作流程主要涉及數據攝取和數據查詢兩個步驟,而檢索環節的重要性不言而喻。本文分享了一個案例,講述了團隊如何運用兩大關鍵策略,將 RAG 系統的檢索準確率從50%顯著提升至95%。
1、RAG 檢索召回率
RAG 系統的檢索召回率(Recall)是評估檢索系統在用戶查詢時能否有效檢索出所有相關文檔的標準。在 RAG 系統中,這一指標至關重要,因為如果檢索階段不能提供充分的上下文信息,那么即便生成模型再先進,也難以產生高質量的輸出。因此,高的檢索召回率是保障生成內容相關性的關鍵。
召回率的計算公式如下:
召回率(Recall)=(檢索到的相關文檔數 / 數據庫中的總相關文檔數)* 100%
以下是一個示例:
假設用戶搜索的是“赫爾辛基的瑞典按摩”。
數據庫中共有10篇與查詢相關的文檔,檢索系統找回了9篇相關文檔以及1篇不相關文檔。
召回率的計算方式為:
圖片
召回率 =(9 / 10)* 100% = 90%
這意味著檢索系統成功找回了90%的相關文檔。
2、案例剖析
第一、案例背景
在這個實例中,我們通過兩項關鍵的優化措施,將系統的檢索準確率從原本的50-60%大幅提升至95%以上。項目的初衷是打造一款內部聊天機器人,旨在協助客戶服務團隊更迅速地獲取所需信息。
項目啟動階段涉及以下步驟:
- 從多個系統中提取數據。
- 對數據進行預處理、分塊(chunking)以及嵌入(embedding)處理。
- 在 Azure AI Search 上構建搜索索引。
- 將聊天機器人與搜索索引相連接。
數據集包含了關于地點(例如水療中心和健身房)和專家(例如按摩師和私人教練)的信息。為了準備這些數據,我們通過合并文本字段(如描述、城市、地區)成一個統一的內容字段,并為向量搜索創建了嵌入。
最初,搜索查詢是通過向量搜索或全文 BM25 搜索對內容字段進行的。但是,系統只在50-60%的情況下能夠正確檢索到文檔。
我們發現,向量搜索并不適合此應用場景,因為它更傾向于模糊匹配和語義相似性,而我們的需求是精確匹配。同樣,BM25 搜索也表現不佳,因為它基于詞頻統計,導致那些包含更多查詢詞的文檔被優先展示,而不是真正相關的文檔。此外,BM25 搜索在處理芬蘭語詞匯形態變化時也存在問題,微小的形態變化就會阻礙文檔的檢索。
第二、初始方案的問題
系統結合使用了向量搜索和 BM25 全文搜索,但存在以下兩個問題:
- 向量搜索:雖然基于語義相似性,卻不能精確對應特定的服務或地點。
- BM25 搜索:依賴于關鍵詞的出現頻率,往往導致含有高頻關鍵詞但實際相關性較低的文檔被優先展示。特別是在處理像芬蘭語這樣具有豐富詞形變化的語言時,BM25 搜索的效果更是大打折扣。
這些問題導致了檢索結果的相關性不足,從而極大地影響了用戶的體驗。
第三、檢索準確率從 50-60% 提升至 95% 的兩個技巧
通過實施以下兩項重要改進措施,系統的檢索準確率得到了顯著提高:
1.應用 LLM 優化用戶查詢
改進方案:在查詢階段,利用 LLM 將用戶的原始輸入轉換成結構化查詢。例如,將“赫爾辛基的瑞典按摩”重寫為服務字段包含“瑞典按摩”且城市字段為“赫爾辛基”的查詢格式。
實際成效:這種精確的查詢重寫顯著增強了檢索的相關性,減輕了 BM25 對關鍵詞頻率的依賴。
成本與挑戰:
性能負擔:查詢重寫需要實時進行,可能會在高流量情況下導致響應時間延長。
維護難度:需要不斷優化查詢重寫邏輯,以跟上用戶需求的變化。
2.應用LLM優化索引構建
改進方案:在索引階段,利用大語言模型(LLM)從非結構化文本中提取服務信息,創建結構化的服務列表作為索引字段。例如,從句子“這家水療中心提供瑞典按摩和芳香療法”中提取出“瑞典按摩”和“芳香療法”。
處理非標準化數據:通過預處理步驟清理拼寫錯誤、語言差異等干擾因素,提高模型的一致性。
實際成效:索引信息的精確度提升,解決了向量搜索中由于模糊匹配導致的相關性問題。
成本與挑戰:
計算資源:構建索引需要大量的計算資源,尤其是在處理大規模數據時。
維護難度:需要不斷更新動態服務信息,以保持索引的準確性和有效性。
通過這兩項技巧,成功地將 RAG 檢索準確率從50%提升至95%。
3、案例總結
本案例的核心啟示如下:
關鍵在于檢索階段的提升:生成質量的提高依賴于精準的檢索輸出。
簡潔而有效的優化:利用 LLM 對索引和查詢進行改進,大幅增強了系統表現。
成本與回報的平衡:盡管計算和維護成本有所上升,但由此帶來的用戶體驗增進是劃算的。
高效的檢索不僅為生成階段打下了堅實的基礎,同時也說明了技術改進應當圍繞用戶需求進行,避免無謂的復雜化。
本文轉載自公眾號玄姐聊AGI 作者:玄姐
