為什麼需要 Knowledge Graph + LLM?

傳統的大型語言模型(LLM)雖然能生成流暢的文字,但在理解實體之間的複雜關係時常出現幻覺或遺漏關鍵資訊。Knowledge Graph(知識圖譜)以圖結構儲存知識,能明確表達「誰與什麼相關」的關係。將兩者結合,LLM 可以利用知識圖譜的結構化推理能力,實現更精確的關係理解與事實檢索。

核心優勢:

知識圖譜基礎與圖結構

知識圖譜由節點(Node)邊(Edge)組成。節點代表實體(如人物、組織、產品),邊代表關係(如「曾任職於」、「開發了」)。常見的圖譜標準包括 RDF 和屬性圖(Property Graph)。

以 Python 的 NetworkX 庫為例,建立簡單的知識圖譜:

import networkx as nx

# 建立有向圖
G = nx.DiGraph()

# 新增節點(實體)
G.add_node("Alice", type="person", role="工程師")
G.add_node("TechCorp", type="company", industry="AI")
G.add_node("KnowledgeGraph", type="product", type="軟體")

# 新增邊(關係)
G.add_edge("Alice", "TechCorp", relation="任職於")
G.add_edge("Alice", "KnowledgeGraph", relation="開發")
G.add_edge("TechCorp", "KnowledgeGraph", relation="擁有")

print(f"節點數: {G.number_of_nodes()}")
print(f"邊數: {G.number_of_edges()}")

整合架構:RAG 與 Graph RAG 實作

最常見的整合方式是Graph RAG(檢索增強生成)。架構流程如下:

  1. 知識提取: 從文字中識別實體與關係,建立知識圖譜
  2. 圖譜儲存: 將圖譜存入圖資料庫(如 Neo4j)
  3. 檢索階段: 根據使用者問題,從圖譜中檢索相關子圖
  4. 生成階段: 將檢索結果作為上下文,交由 LLM 生成答案

以下使用 Neo4j 與 LangChain 實作基本的 Graph RAG:

from langchain_community.graphs import Neo4jGraph
from langchain_openai import ChatOpenAI
from langchain.chains import GraphQAChain

# 連接 Neo4j 圖資料庫
graph = Neo4jGraph(
    url="bolt://localhost:7687",
    username="neo4j",
    password="password"
)

# 載入知識圖譜(假設已有圖譜資料)
graph.refresh_schema()

# 建立 QA Chain
llm = ChatOpenAI(model="gpt-4")
chain = GraphQAChain.from_llm(
    llm, 
    graph=graph,
    verbose=True
)

# 提問
result = chain.run("Alice 開發了什麼產品?")
print(result)

複雜關係查詢:多跳推理實例

Graph RAG 的核心價值在於處理多跳關係查詢。傳統向量檢索難以處理「A 與 B 之間的關係」,但圖譜可以輕鬆遍歷。

假設圖譜包含以下數據:

查詢「Alice 與 AI實驗室的關係」時,圖譜遍歷會找出:

# 找出 Alice 到 AI實驗室的所有路徑
paths = list(nx.all_simple_paths(
    G, 
    source="Alice", 
    target="AI實驗室"
))

for path in paths:
    print(" -> ".join(path))
# 輸出: Alice -> TechCorp -> AI實驗室

建立你自己的 KG + LLM 系統

要建立完整的系統,可依以下步驟操作:

  1. 選擇圖資料庫: Neo4j、Apache Jena 或 TuGraph
  2. 選擇 LLM API: OpenAI GPT-4、Claude 或本地部署的 Llama
  3. 選擇框架: LangChain、LlamaIndex 或自建管線
  4. 實作知識提取: 使用 LLM 從文字中提取三元組(主詞、關係、受詞)
  5. 建構檢索與生成流程: 將圖譜查詢結果與原始文字結合輸入 LLM

這種架構特別適合企業知識管理、醫療診斷輔助、金融風險分析等需要精確關係推理的場景。