進階RAG技巧: From top-k RAG to Advanced RAG 前檢索階段(Pre-Retrieval) 檢索階段(Retrieval) 後檢索階段(Post-Retrieval) 改善 RAG 效能的關鍵技術 前檢索階段(Pre-Retrieval) 數據準備與清理:清理數據,去除不必要的特殊字符、無用元數據、拼寫錯誤等,確保索引數據的質量。(知識清理) 添加元數據(metadata):在資料中加入額外的元數據,如概念、日期、章節,這有助於提高檢索效率。(知識的歸納) 索引結構(index)優化:可以使用知識圖譜(Knowledge Graphs or Graph Neural Network)或向量索引技術(更好的向量化方式)來增強檢索的精度和效率。 段落劃分優化(chunk optimize):選擇適當的 chunk 大小可以平衡檢索的精細度和系統效能,避免 chunk 過小導致資訊不足,或過大造成過多噪音。 Chunk控制了知識的頁面大小,RAG會找出有用的知識來參考,單位是Chunk,概念類似筆記本的某幾頁,頁面越大(A1)要找到重點資訊就更困難,頁數太小(A5)能容納的知識卻有限 目前最大的障礙和研究目標之一就是如何將知識自動並有效率的濃縮、歸納在一起 檢索階段(Retrieval) 就是一般我們認知到的檢索工作,在這個階段中可以: 查詢重寫(Query Rewriting):通過重寫用戶的查詢來提高檢索準確性,讓系統更好理解用戶需求。 多查詢檢索(Multi-Query Retrieval):從不同角度為單一查詢生成多個檢索,增加找到相關文件的可能性,解決多子問題的檢索挑戰。 混合檢索(Hybrid Search):結合關鍵字檢索和語義檢索來增強檢索的準確性,發揮各自優勢。 後檢索階段(Post-Retrieval) 重排序(Re-ranking):在 LLM 生成結果前對檢索結果重新排序,優先顯示最相關的內容,並避免過多無關文檔進入模型上下文。 上下文壓縮(Contextual Compression):壓縮檢索到的上下文,只保留對應查詢最相關的部分,減少噪音並加速生成速度。 改善 RAG 效能的關鍵技術: 資料清理與優化:清理無用或噪音數據,並將語義上重要的元素突出顯示,以提升檢索的精確性。 適當選擇 chunk 大小:針對不同任務選擇合適的 chunk 大小及重疊範圍,確保在檢索過程中能夠提供足夠的上下文。 多重檢索方法結合:將語義檢索、關鍵字檢索以及向量檢索混合使用,從而增強檢索的準確度和覆蓋面。 重新排序與壓縮文檔:優先提供高相關性的文檔,並對檢索出的文檔進行上下文壓縮,減少不相關信息的干擾。