KAG開源了,知識增強掀翻RAG,性能翻倍
KAG(Knowledge Augmented Generation)框架早在9月份就已經發布,近期終于開源了,它的核心在于提出了:
- 一種LLM友好的知識表示方法
- 知識圖譜與原始文本塊之間的相互索引
- 邏輯形式引導的混合推理引擎
- 以及基于語義推理的知識對齊
歸功于在構建更有效的索引、知識對齊和混合解決庫方面的創新,KAG框架在多跳問答任務中相比于現有的RAG方法有顯著的性能提升,2wiki、MuSiQue數據集上的EM指標直接翻倍。此外,KAG框架在螞蟻集團的電子政務問答和電子健康問答場景中也表現出了更高的準確性。
KAG構建器流水線的示例
LLM友好的知識表示方法
KAG框架提出了一個針對大型語言模型(LLMs)友好的知識表示框架,稱為LLMFriSPG。這個框架的目的是為了讓知識圖譜(KG)更好地支持LLMs的應用,并提高兩者之間的協同效果。
LLMFriSPG:一個對大型語言模型(LLMs)友好的知識表示框架。通過概念將實例和概念分開,以實現與LLMs更有效的對齊。在本研究中,除非另有說明,實體實例和事件實例統稱為實例。SPG屬性被劃分為知識和信息領域,也稱為靜態和動態領域,它們分別與具有強模式約束的決策專長和具有開放信息表示的文檔檢索索引知識兼容。紅色虛線代表從信息到知識的融合和挖掘過程。增強的文檔塊表示為LLMs提供了可追溯和可解釋的文本上下文。
- 數據結構定義:LLMFriSPG定義了一個數據結構M,包括實體類型(T)、概念類型(C)、歸納關系(ρ)和可執行規則(L)。實體類型包括預定義的屬性,這些屬性與LPG語法聲明兼容。概念類型包括概念類、概念及其關系,每個概念樹的根節點是一個與LPG語法兼容的概念類型類。
- 實例和概念的分離:LLMFriSPG將實例和概念分離,以實現與LLMs的有效對齊。實體實例和事件實例統稱為實例。每個實例可以與一個或多個概念類型相關聯,以表達其語義類型。
- 屬性和關系:對于每種類型,屬性和關系包括領域專家預定義的部分、臨時添加的內容以及系統內置的屬性,如支持塊(supporting_chunks)、描述(description)、摘要(summary)和歸屬(belongTo)。
- 層次化的知識表示:LLMFriSPG支持從數據到信息再到知識的層次化表示。知識層(KGcs)遵循SPG語義規范,支持在嚴格的模式約束下構建知識體系和定義邏輯規則。信息層(KGfr)通過信息抽取得到實體和關系等圖數據。原始塊層(RC)則是經過語義分割處理后的原始文檔片段。
知識和信息的層次表示
相互索引機制
KAG框架介紹了一種相互索引機制,旨在構建知識結構和文本塊之間的索引,以增強知識表示和檢索的效率:
- 語義分塊(Semantic Chunking):基于文檔的結構層次和段落間的邏輯聯系,實現語義分塊,生成符合長度限制且語義連貫的文本塊。
- 信息提取與描述性上下文:使用大型語言模型(LLMs)提取實體、事件、概念和關系,并構建KGfr與RC之間的互索引結構,實現跨文檔鏈接。
- 領域知識注入和約束:通過迭代提取方法,將領域概念和術語及其描述存儲在KG存儲中,并通過openIE提取文檔中的所有實例,執行向量檢索以獲得與領域知識對齊的集合。
- 預定義知識結構:對于具有標準化結構的專業文檔,如藥品說明書和政務文件,可以預定義實體類型和屬性,以便于信息提取和知識管理。
- 文本塊向量與知識結構的互索引:KAG的互索引機制遵循LLMFriSPG的語義表示,包括共享模式、實例圖、文本塊和概念圖等核心數據結構,以及KG存儲和向量存儲兩種存儲結構。
領域非結構化文檔的KAG構建器的流程。從左到右,首先,通過信息提取獲得短語和三元組,然后通過語義對齊完成消歧和融合,最后,構建的知識圖譜被寫入存儲。
邏輯形式引導的混合推理引擎
KAG框架介紹了一個基于邏輯形式的混合推理和求解引擎,它能夠將自然語言問題轉化為結合語言和符號的解題過程。
邏輯形式執行的示例。在這張圖中,左側顯示了知識圖譜(KG)構建過程,而右側是整體的推理和迭代過程。首先,基于用戶的總體問題執行邏輯形式分解,然后使用邏輯形式引導的推理進行檢索和推理。最后,生成器判斷用戶的問題是否得到滿足。如果沒有,就提供一個新的問題,進入新的邏輯形式分解和推理過程。如果確定問題得到滿足,生成器直接輸出答案。
- 邏輯形式規劃:通過邏輯函數來定義執行動作,將復雜問題分解為可以推理的子問題。這些邏輯函數包括檢索(Retrieval)、排序(Sort)、數學計算(Math)和推理(Deduce)等。
- 邏輯形式推理:使用邏輯形式來表達問題,以便能夠清晰地描述語義關系。這種方法可以處理涉及邏輯推理過程的問題,如“與”、“或”、“非”以及交集和差集等。
- 邏輯形式檢索:在傳統的RAG中,檢索是通過計算問題與文檔片段嵌入之間的相似度來實現的。KAG框架提出了一種結合稀疏編碼器和密集檢索器的方法,以提高檢索的準確性。
知識對齊策略
詳細介紹了KAG框架中的知識對齊(Knowledge Alignment)策略,旨在解決基于信息抽取構建知識圖譜(KG)時在知識對齊方面遇到的挑戰:
- 知識對齊的必要性:傳統的基于向量相似度的信息檢索方法在知識對齊上存在缺陷,如語義關系的錯位、知識粒度不一致、與領域知識結構不匹配等問題。這些問題導致檢索結果不精確,無法滿足特定領域的專業性需求。
- 概念圖的利用:為了增強離線索引和在線檢索的語義推理能力,KAG框架利用概念圖來提升知識對齊。通過概念圖,可以增強知識實例的標準化、概念與實例之間的鏈接、概念間關系的完整性,以及領域知識的注入。
- 語義關系的分類:文中總結了六種常用于檢索和推理的語義關系,包括同義詞(synonym)、屬于(isA)、是部分(isPartOf)、包含(contains)、屬于(belongTo)和導致(causes)等。
- 增強索引(Enhance Indexing):通過使用大型語言模型(LLMs)預測索引項之間的語義關系或相關知識元素,包括知識實例的消歧和融合、實例與概念之間的關系預測、概念及其關系的完整性補充。
- 增強檢索(Enhance Retrieval):在檢索階段,利用語義關系推理來搜索KG索引,結合語義關系推理和相似度檢索,以提高檢索的專業性和邏輯性,從而獲得正確的答案。
KAG框架核心模型
詳細介紹了KAG框架中的核心模型,這個模型旨在通過優化大型語言模型(LLMs)的三個關鍵能力——自然語言理解(NLU)、自然語言推理(NLI)和自然語言生成(NLG),來提升知識增強生成的性能:
1.自然語言理解(NLU):NLU包括任務如文本分類、命名實體識別、關系提取等。為了提升NLU能力,KAG通過大規模指令重構,創建了一個包含超過20,000個多樣化指令的NLU指令數據集,用于監督式微調,從而增強模型在下游任務中的表現。
2.自然語言推理(NLI):NLI任務用于推斷給定短語之間的語義關系,包括實體鏈接、實體消歧、分類擴展等。KAG通過收集高質量的概念知識庫和本體論,構建了一個包含8,000個概念及其語義關系的概念知識集,用于提升模型的語義推理能力。?
3.自然語言生成(NLG):為了使模型生成的文本更好地符合特定領域的邏輯和風格,KAG提出了兩種有效的微調方法:K-LoRA和AKGF。K-LoRA通過預訓練和基于LoRA的微調,使模型能夠識別知識圖譜中信息的格式,并習得領域特定的語言風格。AKGF則利用知識圖譜作為自動評估器,提供對當前響應知識正確性的反饋,引導模型進一步優化。
4.單次推理(Onepass Inference):為了減少系統復雜性、建設成本以及模塊間錯誤傳播導致的級聯損失,KAG引入了一種高效的單次推理模型(OneGen),使任意LLM能夠在單次前向傳遞中同時進行生成和檢索。
KAG所需的模型能力
https://arxiv.org/pdf/2409.13731
KAG: Boosting LLMs in Professional Domains via Knowledge Augmented Generation
Github: https://github.com/OpenSPG/KAG
本文轉載自??PaperAgent??
