嘿,親愛的算法探險家們!歡迎來到RAG技術的“奇幻冒險”之旅!?? 今天,咱們要一起探索的是如何讓大語言模型(LLM)從“呆萌小學生”進化成“機智博士生”的奇妙旅程!
想象一下,你正在和一個超級聰明的AI聊天,但它有時候會像個小迷糊,回答得讓你哭笑不得。這時候,RAG技術就像是個“AI教練”,幫助它變得更聰明、更精準。但傳統的RAG技術還不夠完美,它就像是個“只會按部就班的老師”,雖然能糾正錯誤,但不會主動優化問題。
于是,Adaptive-RAG和RQ-RAG這兩位“超級英雄”閃亮登場了!???♂????♀? 它們不僅能讓AI更聰明,還能根據問題的復雜性,動態調整策略,甚至還能把復雜的問題拆解成簡單的小問題,就像是個“問題界的拆彈專家”!
所以,親愛的探險家們,準備好你們的“智慧背包”,咱們要一起踏上這場充滿驚喜和挑戰的RAG技術冒險之旅了!???? 記住,幽默和智慧是咱們的最佳拍檔,讓我們一起笑對挑戰,勇往直前吧!????
高級RAG技術:查詢分類與優化
雖然傳統的RAG技術可以緩解LLM(大語言模型)回答的不準確性,但它并沒有對初始查詢進行任何增強。這一點在圖1的紅框中有所展示。
圖1:傳統RAG技術的局限性
這種方法可能會導致一些潛在問題,例如:
- 系統可能會消耗過多的計算資源來處理簡單查詢。
- 對于復雜查詢,僅使用原始查詢進行檢索往往無法收集到足夠的信息。
- 對于可能有多個答案的模糊查詢,使用原始查詢進行信息檢索顯得不足。
本文將介紹兩種高級解決方案:查詢分類和查詢優化。這兩種方法通過訓練小模型都展示了改進效果。最后,文章將討論從這兩種算法中獲得的見解和思考。
Adaptive-RAG:通過問題復雜性學習適應檢索增強的大語言模型
總體流程
Adaptive-RAG引入了一種新的自適應框架。如圖2所示,它根據查詢的復雜性動態選擇最適合LLM的策略,從最簡單到最復雜不等。
圖2:不同檢索增強LLM方法的概念比較。來源:Adaptive-RAG。
圖2(A)表示一種單步方法,首先檢索相關文檔,然后生成答案。然而,這種方法對于需要多步推理的復雜查詢可能不夠準確。
圖2(B)象征一種多步過程,涉及迭代文檔檢索和中間響應的生成。盡管這種方法有效,但對于簡單查詢來說效率低下,因為它需要多次訪問LLM和檢索器。
圖2(C)是一種自適應方法,它使用精心構建的分類器來確定查詢的復雜性。這增強了選擇最適合LLM檢索策略的能力,可能包括迭代、單步甚至無需檢索的方法。
為了更直觀地理解Adaptive-RAG的流程,我們將結合代碼進行解釋。目前有四個版本的代碼:官方版本、Langchain版本、LlamaIndex版本和Cohere版本。我們將使用LlamaIndex版本進行解釋。
詳情請參考這個Jupyter Notebook。代碼較長,因此這里只討論關鍵部分:
# 我們將使用之前創建的 `QueryEngines` 和 `FunctionCallingAgentWorker` 創建工具。
query_engine_tools = [QueryEngineTool(query_engine=lyft_2020_query_engine,metadata=ToolMetadata(name="lyft_2020_10k_form",description="僅與 2020 年 Lyft 財務活動相關的查詢。",),),QueryEngineTool(query_engine=lyft_2021_query_engine,metadata=ToolMetadata(name="lyft_2021_10k_form",description="僅與 2021 年 Lyft 財務活動相關的查詢。",),),QueryEngineTool(query_engine=lyft_2022_query_engine,metadata=ToolMetadata(name="lyft_2022_10k_form",description="僅與 2022 年 Lyft 財務活動相關的查詢。",),