大模型RAG問答:模塊化構成與機遇

2024年2月6日 24点热度 0人点赞

關於RAG的綜述文章《Retrieval-Augmented Generation for Large Language Models: A Survey》(https://arxiv.org/abs/2312.10997)當前受到大傢廣泛關註,其中對RAG的演化、評估、關鍵環節等多個部分的內容進行了介紹。

該工作所提出的模塊化(Modular)RAG比較有趣,因此,今天我們來看看這個話題,價值之一在於,對RAG各個模塊的方案進行了歸置,對建立體系認知有幫助,供大傢一起參考。

一、RAG技術的演進的變化

而隨著RAG技術的演進,RAG整體的流程變動更加豐富和自由,具體表現在以下幾個方面:

在檢索增強數據源上,不再局限於傳統的純文本文檔為為代表的非結構化數據。越來越多的研究引入了半結構化數據(例如,PDF、HTML和LaTex)、結構化數據(例如三元組、KG、以及結構化查詢語句)。

經過預處理結構數據更進一步提供檢索的邏輯性和可驗證性,降低模型幻覺。此外,以檢索LLM自身代替外部知識源的方 法逐漸興起。通過進一步挖掘LLM的能力,以減少對外部知識源的依賴。

在檢索增強技術上,RAG的思想正更多和其他術進行融合,增強的手段越發豐富。例如,微調技術和RAG的協同使用。 例如利用通過微調的方式對檢索器和生成器單獨進行微調或協同微調。增加Adapter模塊來對⻬ Query之間Chunk 之間的語義差異。

增加下遊任務無關\任務特定的檢索適配器。除了微調,研究人員借鑒了RLHF的思想,通過RL,以更強大的LLM(GPT-4)作為監督信號來增強檢索能力。

在檢索增強流程上,RAG系統不再局限於,先檢索再生成,以及每次前都必須檢索的流程。 可以迭代的進行多輪檢索增強,用檢索出來的內容指導生成,用生成的內容進一步指導檢索。另一方面,可以利用LLM或自主判斷是否需要檢索。以提高回答問題的效率。如果LLM已經對問題有較高的把握程度,則可以直接進行回答,反之則進行檢索。

二、Modular RAG是什麼

可以看到,上述RAG的快速發展早已經突破傳統的鏈式RAG范式,展示出了模塊化的特點。但是當前的對RAG范式的梳理和抽象還沒有跟上技術的快速發展。

因此,立足當前RAG的技術發展特點和趨勢,該工作進一步整合了Naive RAG和Advanced RAG的發展范式,提出了Modular RAG范式。

Modular RAG是具有高度擴展的范式,它將RAG系統拆分為Molule Type-Module-Operator的三層結構。

如下圖所示,展示對各個模塊的核心思路與方法的歸類,例如chunk optimizaton的方案:

例如:

indexing包括chunk優化(包括small-to-big,用小塊做索引,但召回大塊),sliding window(滑動窗口,提高語義連貫性),也包括summary摘要(解決跨文檔)以及結構化的組織,例如使用知識圖譜進行文檔內容的組織,根據文檔結構進行層級組織。

Retrieval也包括檢索方式的選擇以及檢索的微調兩種,減速哦方式包括稀疏檢索(es字符串匹配)以及稠密檢索(向量化檢索),微調方式包括SFT、adapter等。

post-retrieval包括一些後處理的模塊,例如重排rerank(基於規則的、基於模型的、基於大模型llm本身的),上下文壓縮compresion/selection(這個主要包括我們前面所說的llmlingua, recomp,selective context,核心在於利用不同的手段,將上下文中不重要的信息進行剔除)

pre-retrival階段,則包括query-routing(問題的分發、意圖分類)、query-expansion(query擴展,一變多,拆分子query)、query transformer(包括query rewrite改寫等)、query construction(包括text-cypher, text2sql等,將結構化知識利用起來)

Generation階段,則包括對底層基礎模型的一些事情,比如基於cloud-api,還是進行SFT微調。

orchestraction階段,則包括對各個模塊之間的執行和通信進行管理。

因此,我們可以看到,每一個Module Type 代表了RAG系統中的一個核心流程,Module Type中包含多個功能模塊,每個功能模塊內部又包括多個具體的算子。整個RAG系統變成多個模塊和對應算子之間的排列和組合,將其稱為RAG Flow。

在FLow中,在每個模塊類型中可以選擇不同一個或多個功能模塊,而每個功能模塊內部又可以選擇一或多個算子。

三、Modular RAG和之前范式的關系及當下機遇

1、Modular RAG和之前范式的關系

Modular RAG中以多層級模塊化的形式組織了RAG系統。Adavanced RAG 則是模塊化的RAG特例形式,進一步的Naive RAG本身也是Advanced RAG的特例,三個范式之間是繼承與發展的關系。

2、Modular RAG下的機遇

Modular RAG的好處是顯而易⻅的,將當前RAG的技術整合到一個范式中,提供了更加全面且更高維度的視⻆,可以讓研究人員快速把握當前研究發展的全貌和趨勢,構建一個RAG的思維地圖。通過模塊之間編排,相關的技術和方法被清晰的匯總,RAG系統的設計和構建變得更加便利,更容易定位到問題環節。

對於研究人員。 研究人員可以在全面了解RAG當前的發展的基礎上,更好地識別當前RAG各個模塊中的缺陷,聚焦研究內容,提出新的模塊類型、模塊和算子。

對於開發人員。 一方面開發研究人員可以借鑒當前經過驗證的RAG Flow Pattern,快速上手。另一方面開發 人員可以根據特定的數據情況、使用場景、下遊任務以及其他需要去定制化地編排不同的RAG模塊和算子,定義新的Flow和Flow Pattern。

總結

本文對關於模塊化RAG進行了簡要的介紹,更多詳細的內容可以參考:Modular RAG and RAG Flow: Part I(https://medium.com/@yufan1602/modular-rag-and-rag-flow-part-ⅰ-e69b32dc13a3)

這是對RAG的一個總括,可以仔細看看,會有收獲。

參考文獻

1、https://medium.com/@yufan1602/modular-rag-and-rag-flow-part-ⅰ-e69b32dc13a3

2、https://arxiv.org/abs/2312.10997