為什么你的 RAG 系統在復雜問題上失靈?
本文通過 Retrieval and Structuring (RAS) 范式理解精準推理與領域專長,并附實現示例
Large Language Models(LLM,大型語言模型)在文本生成和復雜推理方面展現了卓越能力。但它們并不完美。
當 LLM 用于真實世界場景時,會面臨多種挑戰:有時會出現“幻覺”,有時會給出過時的答案。
為了解決這些問題,引入了 Retrieval-Augmented Generation(RAG)。RAG 先從外部文檔檢索相關信息,以此為 LLM 的回答“接地氣”,顯著減少幻覺。
看起來是個好方案?還不完全是。
傳統 RAG 往往把外部信息當作原始、非結構化的文本片段來處理。這些雜亂文本中常包含令人困惑或非原子化的信息,容易誤導 LLM。同時,當問題需要多步推理時,系統也會變得吃力。
為突破這些限制,Retrieval and Structuring(RAS)范式應運而生。RAS 在 RAG 基礎上增加了知識結構化這一步。
本文將帶你了解 RAS 框架、各階段及其實現步驟。
為什么需要為 RAG 進行結構化?
結構化通過把檢索到的非結構化文本轉化為有組織、可操作的知識,解決傳統 RAG 的關鍵限制。
下面來理解在 RAG 中進行數據結構化的重要性。
1. 克服傳統 RAG 的局限
傳統 RAG 連接 LLM 與外部信息,以緩解幻覺和知識過時等問題。然而,RAG 仍然處理的是非結構化文本片段。
非結構化文本常包含無關細節,容易干擾模型,導致誤導性答案。
面對需要多步推理或需要有組織的領域知識的復雜問題,常規 RAG 會很吃力。
2. 增強 LLM 的生成與推理
把外部知識結構化為諸如 Knowledge Graph(知識圖譜)之類的表示,是提升 LLM 輸出質量與推理能力的關鍵。
當答案構建于結構化知識之上,模型更不易產生幻覺。比如,KG-RAG 以 Knowledge Graph 引導模型,使得回答更準確、更有依據。
結構化數據能讓模型看到事實之間的連接,從而應對需要更深層推理的復雜問題。
與閉源和開源模型的對比顯示,RAS 能顯著提升 AI 應用的效果。
![RAS 的性能對比 - 與閉源/開源模型 [Source]]](https://miro.medium.com/1*OiBbYIHuV9-AkIgkbtc6Kg.png)
什么是 RAS?
Retrieval And Structuring(RAS)范式在傳統 RAG 基礎上引入 Taxonomy 和 Knowledge Graph 等知識結構化技術,將非結構化文本轉化為有組織的知識,以增強推理與可驗證性。
RAS 將三個關鍵組件統一到一個框架中:信息檢索、結構化知識表示(如 Knowledge Graph)以及 LLM。
下面用一個通俗的版本來說明 RAS。
傳統 LLM 只依賴訓練中“記住”的內容(可能過時或不完整),因此可能猜測甚至“幻覺”答案。
RAG(Retrieval-Augmented Generation)為解決幻覺與過時/專有數據問題而發展,讓 LLM 先查資料(檢索非結構化文本片段)。問題在于,檢索回來的是一大堆雜亂文本,信息不原子且容易誤導。
RAS(Retrieval-And-Structuring)發展出一種更強的策略,用于徹底消除“臟數據”的困擾:
- Step 1: Retrieval——LLM 搜索所有相關文檔。
- Step 2: Structuring——不直接拉取原始文本,而是訪問組織化的數據(如 Knowledge Graph 或 Taxonomy),消除混淆并提煉事實與關系。
- Step 3: Generation——LLM 基于這個組織化的 Knowledge Graph 構建事實正確、可驗證的答案。
RAS 范式抽象示意 [Source]
本質上,RAS 不僅教會 LLM 如何找到信息,還教它如何正確組織與運用信息進行推理。
RAS 范式的基礎原則
RAS 提升了 LLM 執行知識密集型任務的能力,并促進更高效的知識發現。其核心是有效使用結構化數據,改進檢索流程與 LLM 輸出質量:
1. Structure-Enhanced Retrieval(結構增強檢索:更聰明地找知識)
結構化技術幫助檢索系統精準找到 LLM 需要的內容,尤其在復雜或領域特定的問題上。三種基礎方法:
- Taxonomy-Based Approaches:不再只做通用搜索,而是使用領域特定的主題 Taxonomy。搜索由領域結構引導,不必依賴大量標注數據。
- Knowledge Graph(KG)-Based Approaches:使用 Knowledge Graph 提升檢索質量。例如 KG-RAG 讓 LLM 按圖逐步推理,聚焦實體及關系而非僅關鍵詞,從而更準確。
- The Iterative Cycle:采用迭代循環。先由“Taxonomy 增強的檢索器”找到相關文檔,立即結構化為子圖以更新“面向查詢的 KG”。LLM 基于該 KG 回答問題,必要時再生成聚焦的子查詢,開啟新一輪精煉檢索。
2. Structure-Enhanced LLM Generation(結構增強生成:更聰明地用知識)
在得到結構化知識后,關鍵是利用它增強 LLM 的回答。結構增強生成將模型回答錨定在顯式知識結構上,顯著減少幻覺并提升事實一致性。
- ToG(Think-on-Graph)通過引導式提示在 KG 上直接推理,逐步構建顯式推理鏈。
- GoT(Graph-of-Thought)將 LLM 的推理過程結構化為圖,而非簡單的線性鏈,支持多路徑探索和循環思考等復雜模式。
- 其他技術如 GraphRAG 將復雜結構化知識濃縮為文本摘要,使 LLM 能處理需要對語料全局理解的復雜查詢。
RAS 范式基礎原則 - 圖片由作者使用 Napkin.ai 制作
為 RAG 創建并添加結構的技術與實現
1. 為數據添加簡單結構
添加結構涉及多個步驟:從 Taxonomy 構建開始,隨后進行 Taxonomy 豐富、實體抽取與 Knowledge Graph 創建。
為數據添加簡單結構的步驟 - 作者:Vivedha Elango
Step 1: 創建核心的結構化表示(Taxonomies 與 Entities)
該階段建立領域知識的組織結構,第一步通常是構建一個 Taxonomy。
什么是 Taxonomy?
Taxonomy 是一種樹狀結構,從上層的廣義類別(父節點)組織到下層更具體的類別(子節點)。在文本挖掘中,Taxonomy 有助于結構化標簽與組織信息。
Taxonomy 構建從一個“seed”起步。不同方法在寬度與深度上擴展 seed,并在后續調整整體結構。
- HiExpan 通過實體擴展來生長 Taxonomy,并用詞類比進行細化。它面向任務地從領域語料中構建 Taxonomy。用戶可提供 seed Taxonomy 進行引導,確保結果與需求匹配。其流程會自動生成關鍵詞列表,基于 seed 逐步擴展各節點并遞歸拓展子節點集,保持子節點組的一致性與相關性,并提供弱監督關系抽取模塊。
任務引導的 Taxonomy 構建:用戶提供 seed 樹,系統從原始語料中抽取關鍵詞并自動生成 Taxonomy [Source]層級樹擴展算法概覽 [Source]
- CoRel 使用預訓練語言模型學習可泛化的父子關系。ColRel 提供一種更契合用戶興趣的 Taxonomy 構建方式:以用戶提供的 seed Taxonomy 與語料為起點,生成覆蓋更豐富的定制化 Taxonomy。每個節點是一個相關術語簇,使得結構更有意義、更貼近用戶需求。其核心模塊包括:
Relation Transferring:學習用戶關注的關系,并在不同路徑間遷移,從而在寬度與深度上擴展結構,獲得更細致與更廣的層級。
Concept Learning:通過對 Taxonomy 與語料進行聯合嵌入,讓每個概念由一組一致的相關術語來表示,以增強語義。
Seed 引導的主題 Taxonomy 構建 [Source]
Step 2: Taxonomy Enrichment
該步驟為已構建的 Taxonomy 節點關聯描述性文本(如關鍵詞),使每個節點更具信息性與區分度,并在豐富過程中顯式建模樹狀結構。
- TaxoGen:遞歸地對詞向量進行聚類,并用本地語料細化簇。它將相關術語聚為單一主題,先用嵌入捕捉語義,再用特殊聚類逐級細化主題,確保一般性術語位于高層、具體術語位于低層。隨后在與小主題相關的本地語料上重學嵌入,以分辨細微差別,最終自動產出清晰有用的 Taxonomy。
TaxoGen 概覽 [Source]
- NetTaxo:在 TaxoGen 基礎上引入網絡結構信息,讓文檔之間的連接與文本內容共同作用,構建更豐富、更準確的主題層級,更易發現主題及其子主題,提升可用性與信息量。
NetTaxo 概覽 [Source]
Step 3: Information Extraction(實體與關系挖掘)
Information Extraction(IE)聚焦于抽取實體級信息,作為知識結構化的基石。該步驟識別現實世界實體與其關系,是構建 Knowledge Graph 的關鍵。
常用技術包括:
- Entity Mining(如 Named Entity Recognition,NER)
- Fine-Grained Entity Typing(FET,將實體歸類進本體/ontology)
- Relation Extraction
Step 4: Knowledge Graph Construction(KG)
在該步驟中,將抽取的信息實體化為 Knowledge Graph(KG):用節點表示實體,用邊表示關系。
典型技術與框架包括:
- Pipelined Methods:歷史上常用 Open Information Extraction(OpenIE)工具抽取三元組,再進行過濾與融合。OpenIE 能抽取開放域的主語-關系-賓語三元組,并產出對應蘊含句片段(存于 CoreMap 的 EntailedSentencesAnnotation 鍵)。
OpenIE 工作流概覽 [Source]
- End-to-End Models:如 REBEL 等框架直接利用 Pre-trained Language Models 將原始文本端到端轉成結構化知識。
- LLM-based Construction:如 KnowledgeGraph GPT,直接通過提示 LLM(如 GPT-4)將純文本轉為 KG。
以上步驟構成了簡單 RAS 循環所需的流程與可用框架,下面的流程圖有助于整體把握。
為 RAG 添加簡單結構的實現
kg-gen 包提供了便捷實現。它是一個 text-to-KG 生成器,使用 LLM 從純文本直接構建高質量圖。kg-gen 會把相近實體聚類,降低稀疏性、提升可用性。通過 pip install kg-gen 可安裝為 Python 庫。
from kg_gen import KGGen
# Initialize KGGen with optional configuration
kg = KGGen(
model="openai/gpt-4o", # Default model
temperature=0.0, # Default temperature
api_key="YOUR_API_KEY"# Optional if set in environment or using a local model
)
# EXAMPLE 1: Single string with context
text_input = "Linda is Josh's mother. Ben is Josh's brother. Andrew is Josh's father."
graph_1 = kg.generate(
input_data=text_input,
context="Family relationships"
)
# Output:
# entities={'Linda', 'Ben', 'Andrew', 'Josh'}
# edges={'is brother of', 'is father of', 'is mother of'}
# relations={('Ben', 'is brother of', 'Josh'),
# ('Andrew', 'is father of', 'Josh'),
# ('Linda', 'is mother of', 'Josh')}對于長文本,可通過 chunk_size 參數分塊處理:
graph = kg.generate(
input_data=large_text,
chunk_size=5000 # Process in chunks of 5000 characters
)你還可以在生成時或之后對實體與關系進行聚類:
# During generation
graph = kg.generate(
input_data=text,
cluster=True,
context="Optional context to guide clustering"
)
# Or after generation
clustered_graph = kg.cluster(
graph,
context="Optional context to guide clustering"
)聚合多個圖
使用 aggregate 方法合并多個圖:
graph1 = kg.generate(input_data=text1)
graph2 = kg.generate(input_data=text2)
combined_graph = kg.aggregate([graph1, graph2])2. 進階:動態添加結構(迭代式 RAS 循環)
在進階 RAS 系統中,結構化過程通常是動態與迭代的,結合 Taxonomy 與 KG,針對查詢定制上下文。
該技術適用于更靈活的高級 RAG 應用:動態構建并細化與用戶查詢強相關的結構化知識上下文。
RAS 如何構建與使用知識來回答問題,可分為四個關鍵階段:
- Stage1: Action Planning(規劃所需信息)
- 需求評估:Planner 模型先檢查主問題,判斷現有知識是否足夠。
- 無需檢索:若可直接作答,則進入生成階段。
- 生成子查詢:若知識不足,Planner 會生成聚焦的子查詢以彌補特定知識缺口。該迭代規劃機制突破了一次性檢索方法的局限。
- Stage 2: Theme-Scoped Retrieval(主題域檢索)
- 主題域劃定:通過分類器確定子查詢的主題分布,并據此限定到主題子語料。
- 密集檢索:僅在該子語料內進行語義匹配以找到最相關文本,提高效率與相關性。
- Stage 3: Dynamic Knowledge Structuring(動態知識結構化)
- 文本到三元組:將檢索到的文本轉為知識三元組(subject-predicate-object)。
- 迭代豐富:將新事實并入隨查詢演化的 KG,使其逐步擴展。
- 再評估:Action Planner 基于更新后的 KG 判斷是否足以回答主問題,否則生成下一輪子查詢。
- Stage 4: Knowledge-Augmented Generation(結構增強生成)
- 利用結構:Answerer 模型使用累積的 KG、子查詢鏈與檢索事實生成最終答案。
- 輸出準確:在 KG 的精確結構化知識支撐下,回答更準確、連貫,且優于舊式 RAG 在復雜任務上的表現。
下面的流程圖概括了迭代式 RAS 循環的步驟。
RAS 步驟 - 作者:Vivedha Elango
迭代式 RAS 的實現
RAS 論文(鏈接)提供了代碼實現(GitHub 鏈接)。你可按說明搭建并在復雜查詢上測試其效果。
性能對比 [Source]
RAS 的技術挑戰
Retrieval and Structuring(RAS)為讓 LLM 更聰明、更實用開辟了新路,但仍有諸多挑戰。主要集中在三方面:檢索效率、知識質量與集成復雜度。
1. 檢索效率
首要挑戰是速度。數據越大,快速而準確地找到所需信息就越難。
- Scaling 與 Latency:更大的模型與數據帶來更大負載;RAS 的額外步驟也會提高時延。
Dense RAG 與 RAS 的時延對比 [Source]
關鍵在于如何在規模化時保持速度與相關性,這需要新的索引方法與高并發請求處理機制。
- 自適應策略:查詢難度不一。系統需具備自適應能力,何時深入、何時淺嘗輒止,從而在性能與體驗間取得平衡。
2. 知識質量
RAS 依賴將雜亂的非結構化文本轉為干凈的結構化知識,這并不容易。噪聲、矛盾與不一致都會削弱系統。
- 噪聲與不一致:自動化構建 Taxonomy 與 Knowledge Graph 的工具可能引入錯誤或矛盾。
- 穩健驗證:需要更強的質控方法,最好引入領域專家參與并支持迭代改進。
- 跨領域一致性:醫學、法律、工程等領域有差異化語境,需在尊重領域差異的前提下保持結構化知識的連貫性。
3. 集成復雜度
即便檢索快速、知識高質,結構化信息與 LLM 推理的深度融合仍然最為棘手。
- 融合異源:知識來源多樣、可能沖突、重疊或過時。系統需要解決與更新機制。
- 一致性維護:新數據加入時,舊知識需增量更新與沖突消解,保持整體一致。
- 實時適配:LLM 既要準確信息,也要實時性,要求框架能動態攝取與整合信息。
- 性能權衡:更多結構意味著更多計算開銷,需要在推理能力與效率之間取得平衡。
研究機會
隨著數據類型、規模與復雜度增長,RAS 仍在演進,未來有多條有前景的方向。
多模態知識集成
當下數據不僅是文本,還有圖像、視頻、音頻等。未來 RAS 需要無縫處理多模態,構建統一索引,跨模態建立語義連接(如把視頻片段關聯到文本、把圖像關聯到音頻描述)。融合 vision-language 模型與文本編碼器的神經架構是方向之一,使 LLM 能跨模態推理并在回答中引用非文本線索。
跨語言系統
知識不受語言限制,但大多數結構化系統仍受限于語言。多語言嵌入與平行語料可幫助構建跨語言的 Taxonomy;遷移學習可將高資源語言的結構遷移到低資源語言。標準化的跨語基準與健壯的領域自適應方法將進一步提高準確性。
交互式與自我精煉系統
靜態檢索有其上限。用戶常希望通過對話自然細化查詢。交互式界面可以支持這一點;同時,借助強化學習或元學習的自我精煉機制,系統能自檢自糾;若還能解釋修正步驟并結合用戶反饋,將更聰明也更透明。
人機協作框架
在復雜結構化任務中,人類專家仍不可或缺。專家可精煉 Taxonomy、審查邊界案例;眾包可幫助保持數據新鮮與相關。人機協作還有助于確保隱私與公平。機器的規模與人的判斷結合,才能發揮最大價值。
個性化知識投遞
用戶訴求各異。個性化通過引入用戶畫像、歷史行為或直接反饋,使檢索更相關。同時需內置隱私保護。隨著時間推移,系統可在核心架構之上疊加上下文線索以自適應。
結語
Retrieval and Structuring(RAS)是推動 LLM 從“驚艷但不完美”邁向“可靠、知識驅動”的下一步。
傳統 RAG 通過引入外部文檔緩解了部分問題,但面對雜亂無章、重復、缺失或難以解析的非結構化數據時仍會失靈。
RAS 的核心很簡單:把非結構化數據轉成結構化、可驗證的知識。通過文本結構化構建 Taxonomy、創建層級、抽取實體,進而組織成可用的 Knowledge Graph。
當然,RAS 仍面臨挑戰:檢索需更快、更可擴展;Knowledge Graph 隨增長需保持準確與一致;結構化數據需要持續維護、精煉與驗證。
展望未來,RAS 將走向更深的集成與更強的適應性,包括跨文本、圖像、視頻、音頻等多模態的系統,以及跨語言共享知識的結構。
參考文獻
[1] A Survey on Retrieval And Structuring Augmented Generation with Large Language Models
[2] RAS: Retrieval-And-Structuring for Knowledge-Intensive LLM Generation






























