概念地圖

Graphify 知識圖譜的核心概念,一張圖看懂

Graphify 做的事可以一句話講完:把你整個專案變成一張圖,然後用「問問題」的方式去讀它。下面從「輸入」到「輸出」拆解這張圖長什麼樣。

1. 輸入:什麼都能進圖

不只是程式碼。Graphify 接受程式碼、文件、PDF、圖片、影音,全部進同一張圖:

2. 流程:七個階段

來源:ARCHITECTURE.md。每個階段是一個獨立模組、一個函數,透過純 dict / NetworkX 圖溝通:

3. 圖的基本元素

圖的格式是 NetworkX 的 node-link 結構(graph.json):

邊的信任標籤:EXTRACTED vs INFERRED

每一條邊都帶一個標籤,告訴你「這條關係是讀到的還是推出來的」——這是 graphify 最強調的透明性設計:

標籤意義範例
EXTRACTED在原始碼中直接找到(confidence 固定 1.0)一個 import 語句、一個直接呼叫
INFERRED合理的推論,帶 confidence_score(0.0–1.0)呼叫圖第二遍、跨檔同名解析
AMBIGUOUS不確定,會在報告中標記人工檢視同名符號無法消歧

INFERRED 的離散信賴級距

分數意義
0.95近乎確定(明確的跨檔引用、單一可行目標)
0.85強證據(命名 + 上下文吻合)
0.75合理(有脈絡但不明確)
0.65弱(僅命名相似)
0.55臆測

4. 社群偵測:Leiden 演算法

Leiden 是把「彼此之間連線很密的節點」歸成同一群的圖分群方法。Graphify 不需要 embedding 或向量資料庫——Claude 抽出的語意相似邊(semantically_similar_to)本身就已經是圖的一部分,圖的結構就是相似度訊號。

5. 三個查詢介面

圖建好之後,取代「讀原始檔」的就是這三件事:

實際輸出的長相(README 的範例):

$ graphify explain "APIRouter"
Node: APIRouter
  Source:    routing.py L2210
  Community: 2
  Degree:    47

Connections (47):
  --> RequestValidationError [uses] [INFERRED]
  --> Dependant [uses] [INFERRED]
  --> .get() [method] [EXTRACTED]
  <-- __init__.py [imports] [EXTRACTED]

$ graphify path "FastAPI" "ModelField"
Shortest path (3 hops):
  FastAPI --uses--> DefaultPlaceholder <--references-- get_request_handler() --references--> ModelField

6. 產出檔案

所有產出都放在 graphify-out/,可 commit 進 git 讓整個團隊共享——每個人都直接讀圖,不用重新建。

小結:輸入任何東西 → 本機 AST 抽取(免費、確定性)→ 可選的 LLM 語意抽取 → 組圖 → Leiden 分群 → 分析 → 報告 + 互動圖。查詢時讀壓縮過的圖,而不是掃原始檔——這就是省 token 的來源。

延伸閱讀:運作原理詳解 · 架構總覽 · 效能基準