KAG:RAG已經(jīng)不夠了,知識增強生成才是王道,提升樸素RAG一倍性能 精華
1. 為什么要提出KAG框架
檢索增強生成(RAG)技術得到廣泛運用,利用外部檢索系統(tǒng),顯著提升大語言模型的時效性,并大幅減少模型幻覺。
為了進一步提升RAG在多跳任務、跨段落任務的性能,作者引入了知識圖譜,包括GraphRAG、DALK、SUGRE、ToG 2.0 和 HippoRAG 等。
盡管 RAG 及其優(yōu)化方案已經(jīng)解決了因知識缺乏和更新導致的大部分幻覺問題,但生成的文本仍然缺乏連貫性和邏輯性,難以產生正確且有價值的答案,尤其是在法律、醫(yī)學和科學等需要分析推理的專業(yè)領域:
? 首先,真實場景的業(yè)務流程一般需要基于知識片段之間特定關系的推理來收集與回答問題相關的信息。但RAG 通常依賴于文本或向量的相似性來檢索參考信息,會可能導致搜索結果不完整和重復。
? 其次,真實場景往往涉及邏輯或數(shù)值推理,例如確定一組數(shù)據(jù)在時間序列中的增減情況,而語言模型使用的下一個標記預測機制在處理這類問題上仍然顯得力不從心。
為了解決以上問題,本篇論文作者提出了知識增強生成(Knowledge Augmented Generation,KAG)。
2. KAG框架
KAG框架充分利用知識圖譜和RAG技術的互補優(yōu)勢。不僅將圖結構整合到知識庫,還將知識圖譜的語義類型、關系以及知識圖譜問答(KGQA)整合到KAG中。
圖片
如上圖所示,KAG 架構由三大核心組成:KAG-Builder、KAG-Solver 和 KAG-Model。
? KAG-Builder 負責構建離線索引,此模塊提出了一個與大語言模型兼容的知識表示框架,并實現(xiàn)了知識結構與文本片段之間的互索引機制。
? KAG-Solver 引入了一個以邏輯形式為指導的混合推理引擎,整合了大型語言模型推理、知識推理和數(shù)學邏輯推理。利用語義推理進行知識對齊,以增強 KAG-Builder 和 KAG-Solver 在知識表示和檢索方面的準確性。
? KAG-Model 則基于通用語言模型,針對每個模塊所需的特定能力進行優(yōu)化,從而全面提升模塊性能。
2.1 知識表示框架 LMFriSPG
為了定義一個對大型語言模型更友好的知識語義表達方式,作者對 SPG 進行了三大方面的升級:深化文本上下文意識、動態(tài)屬性和知識分層,并將其命名為 LLMFriSPG。
SPG:Semantic-enhanced Programmable Graph,語義增強可編程知識圖譜。
圖片
上圖展示了 LLMFriSPG:一個專為大型語言模型(LLM)設計的友好型知識表示框架。
LLMFriSPG將實例與概念區(qū)分開來,通過概念實現(xiàn)與 LLMs 的對接。
SPG 的屬性被劃分為知識區(qū)和信息區(qū),也就是靜態(tài)區(qū)和動態(tài)區(qū),分別與具有嚴格模式約束的決策專業(yè)知識以及具有開放信息表示的文檔檢索索引知識相兼容。
圖中的紅色虛線描繪了從信息提煉為知識的融合與挖掘過程。增強的文檔塊表示方法為 LLMs 提供了可追溯且易于解讀的文本上下文。
? = {??, ρ, ??, ?}
其中 ? 代表 LLMFriSPG 定義的所有類型
?? 代表所有實體類型(EntityType)(例如上圖中的“人”)、事件類型類(EventType)以及所有與 LPG 語法聲明兼容的預定義屬性。
?? 代表所有概念類型類(ConceptType)、概念及其關系,每個概念樹的根節(jié)點是一個與 LPG 語法兼容的概念類型類(如上圖中的“人的概念分類”),每個概念節(jié)點都有一個獨特的概念類型類。
ρ 代表從實例到概念的歸納關系。
? 代表定義在邏輯關系和邏輯概念上的可執(zhí)行規(guī)則全集。
? 對于每一個類型,所有屬性和關系包括:
領域專家預先設定的部分
臨時添加的內容
系統(tǒng)預設的屬性,比如:
支持塊(supporting_chunks)、描述(description)、摘要(summary)和歸屬(belongTo)。
? 對于每一個實例,所有類型包括:
? 支持塊(supporting_chunks):
指包含該實例的所有文本塊,塊生成策略和最大長度由用戶來定義。
? 描述(description):
指針對該實例的所有類型的通用描述信息。
這種描述能夠有效地輔助大型語言模型(LLM)把握特定實例或類型的確切含義,并可用于信息提取、實體識別和摘要生成等任務。
? 摘要(summary):
指實例或關系在原始文檔上下文中的概要。
? 歸屬(belongTo):
反映了從實例到概念的歸納語義。
每個實體類型或事件類型都可以通過歸屬與概念類型相關聯(lián)。
圖片
如上圖,作者將知識和信息表示分為三個層次:
? 知識層定義為 KGcs(KG constraint, cs應該是 constraint 的縮寫),包括遵循領域模式約束、經(jīng)過提煉、整合和評估的領域知識。
? 信息層定義為KGfr(KG schema free,fr應該是free的縮寫),代表通過信息提取得到的實體和關系等圖數(shù)據(jù)。
? 原始塊層(RC,Raw Chunks)則是指經(jīng)過語義分割處理后的原始文檔片段。
? 知識層(KGcs)嚴格遵循SPG語義規(guī)范,支持在嚴格的模式約束下構建知識體系和定義邏輯規(guī)則,確保了知識的高準確性和邏輯的嚴密性。然而,這種依賴于人工標注的構建方式,使得其構建成本較高,且信息的完整性有待提高。
? 圖信息層(KGfr)與知識層(KGcs)共享實體類型、事件類型和概念體系,并為KGcs提供了有效的信息補充。
? 圖信息層(KGfr)與原始塊層(RC)之間構建的支撐塊、摘要和描述邊,形成了基于圖結構的倒排索引,極大地提高了RC的信息完整性,使其成為KGf r的有力原始文本上下文補充。
如上圖右側所示,在特定領域應用中,R(KGcs)、R(KGf r)和R(RC)分別代表了它們在解決目標領域問題時的知識覆蓋范圍。
? 如果應用對知識準確性和邏輯嚴密性有更高的要求,則需要構建更多的領域結構化知識,并投入更多的專家資源以擴大R(KGcs)的覆蓋范圍。
? 如果應用更注重檢索效率,并對信息的一定損失或錯誤有一定的容忍度,則應擴大R(KGfr)的覆蓋范圍,充分利用KAG的自動化知識構建能力,減少專家資源的消耗。
2.2 互索引(Mutual Indexing)
KAG 構建器(KAG-Builder)包括三個緊密相連的流程:結構化信息獲取、知識語義對齊和圖存儲寫入。主要目標包括:
? 1)在圖結構與文本塊之間構建互索引,為圖結構提供更豐富的描述性上下文;
? 2)利用概念語義圖對不同粒度的知識進行對齊,減少噪聲,增強圖的連通性。
圖片
上圖展示了 KAG 構建器處理領域非結構化文檔的流水線。流程從左至右:
? 首先,通過信息抽取獲取短語和三元組;
? 接著,通過語義對齊進行消歧和整合;
? 最終,生成的知識圖譜被存儲起來。
圖片
上圖是一個 KAG Builder 的示例。
2.2.1 語義分塊( Semantic Chunking)
基于文檔的結構層次和段落間的內在邏輯聯(lián)系,利用系統(tǒng)內置提示實現(xiàn)了語義分塊過程。產生的文本塊既符合長度限制(特別是為了適應 LLM 的上下文窗口大小限制),又保持了語義連貫性,確保每個塊的內容在主題上緊密相關。
在 RC 中定義了“塊實體類型”,包含 id、摘要和主文本等字段。語義分割后得到的每個塊將被寫入一個“塊”實例,其中 id 是一個由 articleID、paraCode、idInPara 通過連接器#拼接而成的復合字段,這樣做是為了確保連續(xù)的塊在 id 空間中是相鄰的。
? articleID 代表全局唯一的文章 ID
? paraCode 代表文章中的段落代碼
? idInPara 是段落中每個塊的順序代碼
內容上的鄰接關系在它們的標識符上也表現(xiàn)為順序上的鄰接。
原始文檔與其分割出的塊之間建立了雙向關系,便于在文檔內容的不同粒度間進行導航和理解上下文。這種結構化的分割方法不僅優(yōu)化了與大型語言模型的兼容性,還保留了并增強了文檔的內在語義結構和關聯(lián)性。
2.2.2 信息提取與更豐富的描述性上下文
在給定數(shù)據(jù)集的基礎上,采用大語言模型來提取實體、事件、概念和關系,構建知識圖譜 KGf。
采用的大語言模型可以是無需微調的大型語言模型(LLM)(如 GPT-3.5、DeepSeek、QWen 等)或微調的小尺寸大模型 Hum。
然后,構建 KGfr 與 RC 之間的互索引結構,實現(xiàn)跨文檔的實體和關系鏈接。分為三個步驟:
? 首先,逐塊提取實體集 E={e1, e2, e3, …};
? 其次,提取與所有實體相關聯(lián)的事件集 EV={ev1, ev2, ev3, …},并迭代提取實體集 E 中所有實體之間的關系集 R={r1, r2, r3, …};
? 最后,完成實例與其 spgClass 之間的所有上位關系。
為了后續(xù)的知識對齊階段提供便利,并解決 Wikidata和 ConceptNet等知識短語識別度低的問題,在實體提取階段,使用 LLMs 為每個實例 e 生成內置屬性描述、摘要、semanticType、spgClass、描述 semanticType,根據(jù) e.description、e.summary 的結構將它們存儲在 e 實例存儲中,并按照<e, belongTo, semanticType>和<e, hasClass, spgClass>的結構進行組織。
2.2.3 領域知識注入和約束
當開放信息抽?。╫penIE)應用于專業(yè)領域時,可能會引入不相關的噪聲。這些噪聲和不相關的語料庫可能會顯著降低 LLMs 的性能。因此將提取的信息與領域知識對齊是一個難題。
KAG 中的領域知識對齊能力包括:
? 1)領域術語和概念注入。采用迭代提取方法:
? 首先將領域概念和術語及其描述存儲在 KG 存儲中。
? 然后,通過 openIE 提取文檔中的所有實例,執(zhí)行向量檢索以獲得所有可能的概念和術語集。
? 最后,將概念和術語集添加到提取提示中,并進行另一次提取,以獲得與領域知識大部分對齊的集合。
? 2)模式約束提取。在垂直專業(yè)領域中,如藥品說明書、體檢報告、政務、在線訂單數(shù)據(jù)、結構化數(shù)據(jù)表等,文檔之間的數(shù)據(jù)結構具有強烈的一致性,更適合采用模式約束進行信息提取,結構化提取也便于知識管理和質量提升。對于同一實體類型,如 Person,可以預定義屬性和關系,如 name、gender、placeOfBirth、(Person, hasFather, Person)、(Person, hasFriend, Person),也可以直接通過 openIE 提取三元組,如(Jay Chou, spgClass, Person)、(Jay Chou, constellation, Capricorn)、(Jay Chou, record company, Universal Music Group)。
? 3)按文檔類型預定義知識結構。專業(yè)文件如藥品說明書、政務文件和法律定義通常具有相對標準化的文檔結構。每種類型的文檔可以定義為一個實體類型,不同的段落代表實體的不同屬性。
? 以政務為例,可以預定義 GovernmentAffair EntityType 及其屬性,如行政區(qū)劃、服務程序、所需材料、服務地點和目標群體。
劃分的塊是不同屬性的值。
如果用戶詢問“在西湖區(qū)申請住房公積金需要哪些材料?
”,可以直接提取對應屬性所需材料的塊來回答這個問題,避免 LLM 重新生成可能引起的幻覺。
2.2.4 文本塊向量與知識結構的互索引
KAG 的互索引機制遵循 LLMFriSPG 的語義表示,是一套知識管理和存儲方案。涵蓋四個核心數(shù)據(jù)結構:
? 1、共享模式,作為項目層面預設的 SPG 類別,囊括了實體類型、概念類型和事件類型,它們作為高層分類,例如人物、組織、地理位置、日期、生物、作品、事件。
? 2、實例圖,囊括了 KGcs 和 KGfr 中的所有事件和實體實例,無論是通過無模式的開放信息抽取還是通過模式約束的結構化抽取得到的實例,均存儲于 KG 存儲中。
? 3、文本塊,是一種特殊的實體節(jié)點,符合塊實體類型的定義。
? 4、概念圖,作為知識對齊的核心,由一系列概念及其關系構成,概念節(jié)點代表了實例的細粒度類型。通過關系預測,實例節(jié)點能夠與概念節(jié)點相連,從而獲得其細粒度的語義類型。
此外,還有兩種存儲結構:
? 1、KG 存儲,將 KG 數(shù)據(jù)結構存儲于 LPG(Labeled Property Graph) 數(shù)據(jù)庫中,例如 TuGraph、Neo4J。
? 2、向量存儲,將文本和向量存儲于向量存儲引擎中,如 ElasticSearch、Milvus,或是 LPG 引擎內置的向量存儲。
2.3 邏輯形式求解器
在攻克復雜問題的道路上,通常遵循三大核心步驟:規(guī)劃、推理和檢索。
? 規(guī)劃:將問題拆解是一種規(guī)劃行為,旨在明確接下來的解題方向。
? 推理:包括基于拆解后的問題檢索相關信息,根據(jù)檢索結果推導出問題的答案,或者在現(xiàn)有信息不足以解答時,對子問題進行進一步的拆解。
? 檢索,為了尋找能夠作為原始問題或拆解后的子問題參考依據(jù)的內容。
在傳統(tǒng) RAG 中,由于各模塊間的互動基于自然語言的向量表達,因此常常出現(xiàn)偏差。借鑒知識圖譜問答中常用的邏輯形式,設計了一種具備推理與檢索功能的可執(zhí)行語言。這種語言能夠將問題拆解為多個邏輯表達式,每個表達式都可能涵蓋檢索或邏輯運算的功能。這一過程通過互索引機制實現(xiàn)。
同時,受到 ReSP 的啟發(fā),設計了一種基于反思和全局記憶的多輪解題機制。
? 首先將當前問題分解為一系列邏輯形式的子問題 list,然后通過混合推理來逐一解決。
? 如果能夠通過結構化知識的多跳推理直接得到確切答案,系統(tǒng)將直接返回結果。
? 若非如此,系統(tǒng)將進行反思:將與 list 相關的答案和檢索結果存入全局記憶,并判斷問題是否已解決。
? 如果問題仍未解決,系統(tǒng)將生成額外問題并進入下一輪迭代。
圖片
上圖展示了該過程。左側展示了知識圖譜構建過程,右側則展示了整個推理和迭代流程。
這種邏輯形式語言具有以下三大優(yōu)勢:
? 采用符號語言,增強了問題拆解和推理的嚴謹性與可解釋性。
? 充分利用 LLMFriSPG 的層次化表示,通過符號圖結構引導事實和文本知識的檢索。
? 整合問題拆解與檢索流程,簡化了系統(tǒng)復雜度。
圖片
上圖展示了一個該框架下的多輪對話情景。
? 首輪對話中,盡管無法精確得知瘟疫發(fā)生的次數(shù),但提取的信息顯示:“威尼斯,這位音樂巨匠維瓦爾第的誕生地,曾遭受過毀滅性的黑死病侵襲,也就是人們常說的大瘟疫。這場由鼠疫桿菌引發(fā)的瘟疫在歐亞大陸造成了 7500 萬至 2 億人的死亡,尤其在 1347 至 1351 年的歐洲達到了頂峰。這場瘟疫給歐洲帶來了劇烈的動蕩。雖然威尼斯沒有詳細的瘟疫發(fā)生記錄,但可以肯定的是,這座城市在 14 世紀中期受到了沖擊。”。
? 經(jīng)過兩輪迭代后,最終確定瘟疫在威尼斯發(fā)生了 22 次。
2.3.1 邏輯形式規(guī)劃
圖片
如上表所示,邏輯函數(shù)是一系列執(zhí)行動作表示。通過精心規(guī)劃這些表達式的組合,可以將復雜問題拆解,進而推理出精細的解決方案。
? 檢索:依據(jù)SPO檢索所得的知識和信息,同一表達式中不應重復出現(xiàn)s、p、o。查詢時可對s、p、o施加約束。多跳查詢需要多次檢索。若當前變量指向之前提及的變量,則變量名需與所引用變量名一致,僅需提供變量名。首次引用時指定知識類型和名稱。
? 排序:對檢索結果進行排序。A代表檢索到的SPO(主體-謂語-賓語)的變量名(si, oi, 或 s.prop, p.prop, o.prop)。direction定義排序方向,direction = min表示升序,direction = max表示降序。limit = n表示輸出前N個結果。
? 數(shù)學:執(zhí)行數(shù)學運算。expr使用LaTeX語法,可對檢索結果(集合)或常數(shù)進行計算。mathi表示計算結果,可用作后續(xù)操作中的變量名。
? 推理:根據(jù)檢索或計算結果回答問題。A、B可以是檢索到的SPO的變量名或常數(shù)。運算符op = entailment|greater|less|equal分別表示A蘊含B、A大于B、A小于B和A等于B。
2.3.2 推理的邏輯形式
當自然語言表述的查詢語句用于搜索時,往往存在邏輯上的模糊性,比如“尋找含有蔬菜或水果的圖片”與“尋找含有蔬菜和水果的圖片”。不論是文本搜索還是向量搜索,這兩類查詢的相似度極高,但它們的答案卻可能截然不同。
對于包含邏輯推理過程的問題,如涉及“與”、“或”、“非”以及交集和差集的情況,也是同樣的道理。
因此,采用邏輯形式來表達問題,以便能夠清晰地描述語義關系。與 IRCOT 類似,把復雜的原始問題拆解,并規(guī)劃出多種執(zhí)行動作,包括多步驟的信息檢索、數(shù)值計算、邏輯推理和語義推導。每個子問題都通過邏輯形式函數(shù)來表達,子問題之間的聯(lián)系則通過變量引用來建立。
在此過程中,GraphRetrieval 模塊依據(jù)邏輯形式子句執(zhí)行知識圖譜結構檢索,獲取結構化的圖結果。另一個關鍵模塊 HybridRetrieval 則結合自然語言表述的子問題和邏輯函數(shù),全面檢索文檔和子圖信息。
圖片
上圖展示了該過程的一個案例。
2.3.3 檢索的邏輯形式
在傳統(tǒng)的 RAG 模型中,通過計算問題與文檔片段嵌入之間的相似度(如余弦相似度)來實現(xiàn)信息檢索,其中嵌入模型的語義表達能力至關重要。這通常包括稀疏編碼器(如 BM25)和密集檢索器(基于 BERT 架構的預訓練語言模型)。稀疏與密集嵌入方法各自捕捉不同的關聯(lián)特征,通過利用彼此的互補信息,相得益彰。
目前,將這兩種方法結合的常見做法是將兩種搜索方式的得分進行集成,但在實際操作中,不同問題可能需要不同的搜索策略,尤其是在需要多跳推理的問題上。當查詢包含專有名詞、人物、地點、時間、數(shù)字和坐標時,預訓練模型的表現(xiàn)力可能受限,此時需要更精確的文本索引。而對于更接近文本段落表達的查詢,如場景描述、行為動作和抽象概念,這兩種方法可能會在某些問題中結合使用。
在設計邏輯形式時,可以有效地融合這兩種檢索方法。當需要將關鍵字信息作為明確的過濾條件時,可以在檢索函數(shù)中指定選擇條件,實現(xiàn)結構化檢索。
例如,對于查詢“在杭州西湖區(qū)申請殘疾證需要哪些文件?”,檢索函數(shù)可以表示為:
??Retrieval(s=s1:Event[applying for a disability certificate], p=p1:support_chunks, o=o1:Chunk, s.locatinotallow=West Lake, Hangzhou)?
?
這種方法利用建立不同的索引(稀疏或密集)來支持精確搜索或根據(jù)需求進行模糊搜索。
此外,當無法使用邏輯函數(shù)檢索以 SPO 形式存在的結構化知識時,可以采用其他方法。
包括半結構化檢索,即利用邏輯函數(shù)搜索信息塊,以及非結構化檢索。
非結構化檢索涵蓋了如增強型檢索(RAG),通過自然語言表達的子問題來檢索相關的文本塊。
2.4 知識對齊
利用信息提取構建知識圖譜索引和基于向量相似度的檢索在知識對齊方面存在三個主要缺陷:
? 知識間語義關系錯位:正確答案與查詢之間通常需要特定的語義關系,例如“包含”、“導致”和“屬于”。然而,檢索過程所依賴的相似性是一種缺乏屬性和方向的弱語義度量,可能導致內容檢索不精確。
? 知識粒度不一致:開放信息抽取帶來的知識粒度差異、噪聲和不相關性問題對知識管理構成了巨大挑戰(zhàn)。語言的多樣性導致了眾多的同義詞或類似節(jié)點,使得知識元素間的連通性降低,檢索召回率不完整。
? 與領域知識結構不匹配:特定領域內缺乏有組織、系統(tǒng)化的知識。本應相互關聯(lián)的知識呈現(xiàn)碎片化,導致檢索內容缺乏專業(yè)性。
為解決這些問題,作者提出了一種解決方案:通過語義推理利用概念圖來增強離線索引和在線檢索。
包括知識實例標準化、實例到概念的鏈接、語義關系完善和領域知識注入等任務。
? 在提取階段我們?yōu)槊總€實例、概念或關系添加了描述性文本信息,以提高其可解釋性和上下文相關性。
? KAG 支持注入領域概念和術語知識,以減少垂直領域中知識粒度不匹配造成的噪聲問題。
概念推理的目標是充分利用向量檢索和概念推理,基于前述知識結構完成概念關系,提高領域知識圖譜的準確性和連通性。
圖片
如上表所示,總結了檢索和推理通常需要的六種語義關系。
2.4.1 增強索引
通過語義推理增強索引的過程,實際是利用大型語言模型預測索引項之間的語義關系或相關知識元素,涵蓋四種策略:
? 知識實例的消歧和融合:首先利用實體的直接關聯(lián)和描述信息來預測同義詞關系,從而獲得實體的同義詞實例集。接著,從同義詞集中確定目標實體。最終,應用實體融合規(guī)則,將同義詞集中剩余實例的屬性和關系復制到目標實體,并將其名稱添加為目標實體的同義詞,同時立即刪除這些剩余實例。
? 預測實例與概念間的關系:對于每個知識實例(例如事件、實體),預測其對應的概念,并添加推導出的三元組<ei, belongTo, cj>到知識索引中。比如:<Chamber, belongTo, Legislative Body>意味著Chamber在分類中屬于Legislative Body。
? 完善概念及其相互關系:在提取過程中,利用概念推理來完善語義類型和spgClass之間的所有上位詞和isA關系。比如,可以在提取階段得知Chamber的語義類型是Legislative Body,其spgClass是Organization。通過語義完善,能夠得出<Legislative Body, isA, Government Agency>, <Government Agency, isA, Organization>。這樣的語義完善使得KGfr空間的三元組信息更加完整,節(jié)點之間的連通性也更加緊密。
2.4.2 增強檢索
在檢索階段,使用語義關系推理根據(jù)邏輯形式中的短語和類型來搜索知識圖譜索引。對于邏輯形式中提到的類型或關系,采用結合語義關系推理與相似度檢索的方法,以替代傳統(tǒng)的相似度檢索方法。
這種檢索方法使檢索路徑更加專業(yè)和邏輯化,從而獲得正確答案。
圖片
? 首先,混合推理進行精確的類型匹配和實體鏈接。
? 如果類型匹配失敗,則進行語義推理。如上圖所示,如果類型 Political Party 匹配失敗,則使用語義推理預測 Political Party 包含 Political Faction,并從 Political Faction 開始進行推理或路徑計算。
2.5 KAG 模型
KAG 涵蓋了兩個核心計算流程:
? 離線構建索引
? 在線處理查詢與生成答案
在小規(guī)模語言模型盛行的時代,這些任務通常需要兩個獨立的處理流程,每個流程都包含多個特定任務的 NLP 模型。這種設計不僅增加了應用系統(tǒng)的復雜性,提高了搭建成本,還因為模塊間的錯誤傳播而不可避免地帶來了級聯(lián)損失。與此相對,大型語言模型作為一種能力復合體,有潛力將這些流程統(tǒng)一為一個集成的、同步的端到端推理過程。
圖片
如上圖,索引構建和問答生成的過程包含相似的步驟。這兩個流程都可以概括為分類、實體識別、實體關系識別、語義對齊、嵌入以及信息塊、實例或查詢聚焦的摘要。
? 分類、實體識別和實體關系識別可以歸為自然語言理解(NLU)
? 語義對齊和嵌入可以歸類為自然語言推理(NLI)
? 信息塊、實例或查詢聚焦的摘要可以歸入自然語言生成(NLG)
一個 RAG 系統(tǒng)依賴的自然語言處理的三大核心能力是 NLU、NLI 和 NLG。
為了減少將模型串聯(lián)成流水線所帶來的級聯(lián)損失,將多個推理過程融合為單一推理過程
2.5.1 NLU(自然語言理解)
NLU 自然語言處理的基石之一,涵蓋了文本分類、命名實體識別、關系抽取、主賓語提取、觸發(fā)詞識別、事件論元抽取、事件抽取以及機器閱讀理解等多個方面。
為提升模型的理解力:
? 搜集了超過 30 個公共數(shù)據(jù)集
? 進行了大規(guī)模的指令重構,設計了多種指令合成策略
利用此數(shù)據(jù)集對選定的基礎模型進行監(jiān)督式微調后,模型在下游任務中表現(xiàn)出更強的 NLU 能力。指令重構策略主要包括以下三種類型:
? 標簽打包:此策略關注于標簽引導任務,旨在根據(jù)標簽提取文本或將文本映射到特定標簽,涵蓋分類、NER、RE 和 EE 等任務。如果數(shù)據(jù)集中的標簽在訓練集內頻繁共同出現(xiàn),模型可能會學習到這一模式,從而過度擬合數(shù)據(jù)集,無法獨立理解每個標簽的含義。因此,在指令合成過程中,采用投票策略,每個訓練樣本僅指定一個標簽作為桶的一部分。同時,鑒于某些標簽語義相近且易混淆,將這些易混淆的標簽歸入同一桶中,幫助模型更有效地學習這兩個標簽之間的語義差異。
? 靈活多樣的輸入輸出格式:LLM 通過遵循指令進行推理,若輸入輸出格式過于一致,可能導致模型過度擬合特定任務,缺乏對未知格式的泛化能力。因此,對輸入輸出格式進行了靈活處理。輸出被設計為五種不同的格式化指令和兩種自然語言指令。此外,輸出格式可以動態(tài)指定為 markdown、JSON、自然語言或示例中指定的任何格式。
? 帶有任務指南的指令:傳統(tǒng) NLP 訓練常采用“問題海洋”策略,訓練集中包含大量數(shù)據(jù),使模型在學習過程中理解任務需求,例如在提取人名時是否包括職位。在 LLM 訓練中,讓模型像專業(yè)標注員一樣,通過理解任務描述來執(zhí)行任務。
因此,對于收集到的 NLU 任務,通過 LLM 內的自省過程總結任務描述,創(chuàng)建包含任務描述的訓練數(shù)據(jù)。為增強任務多樣性,還采用啟發(fā)式策略改寫任務描述和答案,使模型能更準確地理解不同任務描述之間的差異,并根據(jù)指令完成任務。
對六個基礎模型進行了微調:qwen2、llama2、baichuan2、llama3、mistral、phi3,并使用 OpenCompass 上記錄的六個理解基準進行性能驗證。下表展示了模型微調后的對比效果。
圖片
2.5.2 自然語言推理
NLI 任務旨在推斷特定短語間的語義聯(lián)系,包括實體鏈接、消除歧義、分類體系擴展、上位詞識別和文本蘊含等。
在知識庫問答系統(tǒng)中,自然語言的多樣性和模糊性,以及短語間微妙的語義聯(lián)系,常常需要依靠 NLU 基礎上的 NLI 任務來進一步對齊或檢索相關信息。
圖片
在 KAG 過程中,語義推理是一項核心能力。通過 NLI 任務和通用推理問答任務來評估模型性能,如上圖。評估結果顯示,KAG 模型在語義推理相關任務上取得顯著提升:
? 在上位詞識別任務中(這與語義增強索引和檢索中所需的推理形式一致),微調的 KAG-llama 模型明顯優(yōu)于 Llama3 和 ChatGPT-3.5。
? 在 CMNLI、OCNLI 和 SIQA 上的表現(xiàn)超越了 Llama3,證明模型在通用邏輯推理方面同樣表現(xiàn)出色。
2.5.3 自然語言生成
開發(fā)了兩種高效率的微調方法,專為特定領域場景設計,以期生成的內容能夠更貼近實際場景的需求:即 K-LoRA 和 AKGF(Alignment with KG Feedback)。
K-LoRA 預訓練:利用知識生成答案與從文本中提取知識是相反的過程。通過逆向操作前述的提取流程,能夠創(chuàng)建一個“三元組到文本”的生成任務。經(jīng)過大量實例的深入微調,模型學會識別知識圖譜注入的信息格式,并能夠習得目標文本的特定領域語言風格。為提高效率,繼續(xù)采用基于 LoRA 的 SFT 策略,并將此步驟中獲得的 LoRA 稱為 K-LoRA。
與 KG 反饋的對齊:模型在回答中可能因過擬合等原因產生錯誤。借鑒了 RLHF 方法,希望 KG 充當自動評估器,對當前回答的知識準確性提供反饋,引導模型進一步優(yōu)化。通過不同的輸入格式或隨機種子為每個查詢生成多種回答。然后,利用 KG 對這些回答進行評分和排序。評分過程通過比較生成的答案與 KG 中的知識來判斷其正確性。獎勵由正確匹配的知識三元組數(shù)量決定。
選取兩個生物醫(yī)學問答數(shù)據(jù)集 CMedQA 和 BioASQ 來評估模型性能。
圖片
如上圖,生成性能顯著提升。
2.5.4 單次推理
大多數(shù)檢索增強型系統(tǒng)由一系列展示模型、檢索器和生成模型組成,導致系統(tǒng)復雜度高、構建成本昂貴,以及由于模塊間錯誤傳播而不可避免的級聯(lián)損失。
因此,作者提出了一種高效的單次統(tǒng)一生成和檢索(OneGen)模型,允許任何大型語言模型(LLM)在單次前向傳遞中同時進行生成和檢索。受到大型語言模型在文本嵌入方面最新進展的啟發(fā),通過增加特殊標記(即檢索標記)擴展了原有詞匯表,并將檢索任務分配給自回歸生成的檢索標記。
在訓練過程中,檢索標記僅通過對比學習參與表示微調,其他輸出標記則按語言模型目標進行訓練。在推理階段,利用檢索標記進行高效的按需檢索。不同于以往至少需要兩個模型分別負責檢索和生成的流水線方法,OneGen 將這兩者統(tǒng)一在一個模型中,從而省去了單獨的檢索器需求,大幅降低了系統(tǒng)復雜性。
圖片
實驗結果如上表所示:
?1、OneGen 在 R→G 任務中展現(xiàn)了出色的效果,聯(lián)合訓練的檢索和生成在 RAG 任務上實現(xiàn)了性能提升。Self-RAG 賦予 LLMs 自我評估和自適應檢索的能力,而 OneGen 進一步增加了自我檢索的功能。在所有數(shù)據(jù)集上均優(yōu)于原始的 Self-RAG,特別是在 Pub 數(shù)據(jù)集上提升了 3.1 個百分點,在 ARC 數(shù)據(jù)集上提升了 2.8 個百分點,證明了聯(lián)合訓練的優(yōu)勢。
2、OneGen 在訓練上極為高效,經(jīng)過指令微調的 LLMs 展現(xiàn)出強大的檢索能力,而且只需極少的額外調整。它需要的檢索數(shù)據(jù)更少且質量要求更低,即使僅用 6 萬個噪聲樣本和不完整的文檔,也能實現(xiàn)與合成數(shù)據(jù)相當?shù)男阅堋?/p>
3. 效果評估
3.1 總體效果
圖片
上表展示了問答系統(tǒng)的端到端性能。在基于 ChatGPT-3.5 作為核心模型的 RAG 框架中,HippoRAG 的表現(xiàn)超過了 NativeRAG。
HippoRAG 采用了仿人類長期記憶的策略,促進了外部文檔中的知識與 LLMs 的持續(xù)融合,顯著提升了問答性能。然而,考慮到使用 ChatGPT-3.5 的高昂經(jīng)濟成本,選擇了 DeepSeek-V2 API 作為替代方案。
平均來看,結合 DeepSeek-V2 API 的 IRCoT + HippoRAG 配置在性能上略勝 ChatGPT-3.5 一籌。
KAG 框架與 IRCoT + HippoRAG 相比,在 HotpotQA、2WikiMultiHopQA 和 MuSiQue 數(shù)據(jù)集上的 EM 分別提升了 11.5%、19.8%和 10.5%,F(xiàn)1 分數(shù)分別提高了 12.5%、19.1%和 12.2%。
這些性能上的飛躍主要歸功于框架中更高效的索引構建、知識對齊和混合解題庫的開發(fā)。
圖片
上表中展示了單步和多步檢索器的檢索性能。實驗結果顯示,多步檢索器通常比單步檢索器表現(xiàn)更佳。分析發(fā)現(xiàn):
? 單步檢索器檢索的內容相似度極高,導致無法利用其結果推導出需要進行推理的問題的答案。
? 多步檢索器解決了這一問題。KAG 框架直接采用了多步檢索器,并通過互索引、邏輯形式解題和知識對齊等策略顯著提升了檢索性能。
3.2 消融實驗
3.3.1 知識圖譜索引消融實驗
在圖譜索引構建階段,提出以下兩種替代方案:
? 互索引法(Mutual Indexing Method,M_Indexing):作為 KAG 框架的基準方法,利用信息提取技術(例如 OpenIE)從文檔片段中提取短語和三元組,根據(jù) LLMFriSPG 的層級表示構建圖結構與文本片段之間的互索引關系,并將其存入知識圖譜庫。
? 知識對齊增強法(Knowledge Alignment Enhancement,K_Alignment):利用知識對齊技術來增強知識圖譜的互索引能力和邏輯形式引導的推理及檢索效率。主要完成實例與概念的分類、概念的上下位詞預測、概念間語義關系的完善、實體的消歧和整合等任務,從而增強知識的語義清晰度和實例間的連接性,為之后的邏輯形式引導的推理和檢索打下堅實基礎。
3.3.2 推理與檢索消融實驗
多輪自省機制。引入了 ReSP的多輪自省機制,以評估邏輯形式求解器是否已經(jīng)充分回答了問題。如果答案不盡完善,系統(tǒng)將迭代產生補充問題,直至全局記憶中的信息充足。對最大迭代次數(shù) n 的影響進行了分析,記作 refn。當 n=1 時,意味著自省機制未啟動。在推理和檢索階段,我們設計了以下三種替代方案:
? 片段檢索器(ChunkRetri)。借鑒 HippoRAG的檢索功能,為 KAG 設定了基線檢索策略,旨在回憶起能夠支持回答當前問題的 top_k 片段。片段得分通過權衡向量相似度和個性化 PageRank 得分來計算。
? 邏輯形式求解器啟用圖檢索(LFrefn):采用邏輯形式求解器進行推理,該方法利用預定義的邏輯形式解析并回答問題。首先,它深入挖掘 KGcs 和 KGfr 空間內的知識圖譜結構,在推理過程中注重準確性與嚴謹性。如果前面的推理步驟未得出結果,它將利用 RC 中的 supporting_chunks 進行補充檢索。
? 邏輯形式求解器啟用混合檢索(LFSHrefn)。對 LFrefn 進行了修改,關閉了直接推理的圖檢索功能,轉而全部采用混合檢索方法生成答案。能夠評估圖檢索對推理性能的貢獻。
3.3.3 消融實驗結果
圖片
知識圖譜索引效果
將知識對齊整合到知識圖譜互索引中后,CRref3 的前 5 個召回率分別提升了 9.2%,28.4%和 9.5%,平均增幅達到 15.7%。經(jīng)過知識對齊增強,關系密度顯著增加,頻率-出度圖整體右移。
1 跳圖譜明顯右移,說明加入的語義結構增加了每個節(jié)點的鄰接節(jié)點數(shù),提高了圖譜的密集度。
2 跳和 3 跳圖譜呈現(xiàn)不均勻分布,左側稀疏,右側密集。K_Alignment 優(yōu)化前后的對比顯示,數(shù)據(jù)集中的節(jié)點普遍右移,左側變得更為稀疏,表明原本鄰接節(jié)點較少的節(jié)點獲得了新的連接,導致了這一現(xiàn)象。
表明新增的語義關系有效增強了圖譜的連通性,進而提升了文檔的召回率。
圖譜推理分析
在召回率方面,LFSHref3 在同一圖譜索引的基礎上相較于 CRref3 有顯著提升,前 5 個召回率分別提高了 15%,32.2%和 12.7%,平均增長 19.9%。這一改進主要歸功于兩個因素:
圖片
? LFSHref3 將查詢分解為多個可執(zhí)行步驟,每個子查詢獨立檢索信息片段。上圖的時間分析顯示,無論是 LFSHref3 還是 LFref3,其計算時間都超過 LFSHref3 一倍以上,說明計算時間的增加是提高召回率的必要代價。
? LFSHref3 不僅檢索信息片段,還將執(zhí)行過程中的 SPO 三元組整合到片段計算中。與 LFSHref3 相比,它檢索到了更多與查詢相關的聯(lián)系。
由于 LFref3 基于子圖進行查詢回答,無法直接與 LFSHref3 在召回率上進行比較,但可以通過 F1 分數(shù)來衡量。與 LFSHref3 相比,LFref3 基于檢索到的子圖回答問題的比例分別為 33%,34%和 18%。LFref3 的 F1 分數(shù)下降了 2.2%,0.1%和 0.5%,而計算時間分別減少了 12%,22%和 18%。
性能下降的案例分析揭示了構建階段的錯誤或不完整的 SPO 導致子查詢答案出錯,最終導致錯誤答案。這一問題將在案例研究中詳細討論。計算時間的減少主要是由于 SPO 的檢索效率比文檔片段更高。
在工業(yè)應用中,計算時間是一個至關重要的指標。盡管 LFrefn 可能引入一些錯誤,但這些錯誤可以通過圖譜的糾正和完善來改善。值得注意的是,在當前實驗中,我們?yōu)榱藴p少計算時間,接受了度量標準的輕微下降,這為工業(yè)應用提供了一個可行的改進方向。
為了分析最大迭代次數(shù)參數(shù) n 對結果的影響,比較了 LFref1 與 LFref3,發(fā)現(xiàn) F1 分數(shù)分別下降了 0.6%,1.6%和 4.8%。
基于 LFref3 的實驗數(shù)據(jù)顯示,迭代 1 次的比例為 97.2%,94.8%和 87.9%;LFSHref1 與 LFSHref3 相比,F(xiàn)1 分數(shù)分別下降了 0.2%,1.2%和 4.4%。
基于 LFSHref3 的實驗數(shù)據(jù)顯示,迭代 1 次的比例為 98.3%,95.2%和 84.1%,顯示出與 F1 分數(shù)降低的正相關性。
圖片
本文轉載自??大語言模型論文跟蹤??
