065 · 圖結構實戰:從食譜到程式碼查詢
從食譜抽取、實體去重到程式碼庫查詢,用具體例子拆解怎麼設計圖結構,讓 AI 應用更聰明、成本更低、也更可靠。
原標題:A Practitioner's Guide to Graphs - Tim Ainge, Good Collective
重點摘要
- schema 先決定,圖才有用與其用泛用的 subject-predicate-object triple,不如先定義 schema(像是 recipe、ingredient、quantity),再用 ontology 補齊格式與單位的細節,圖裡的關係才會有意義。
- 實體要先去重同一種東西常被拆成好幾個節點(像 garlic cloves 跟 minced garlic),先用對照表消除已知的重複,再靠 embedding model 抓出沒預先列出的同義詞。
- 圖查詢在多層關聯時比 SQL 直覺同一個問題如果要串好幾層 join,SQL 語法會很快失控,圖查詢語言處理橫跨多個節點的關聯反而自然。
- personalized PageRank 找出真正相關的節點從指定節點出發做隨機遊走,密集群聚、人工很難判斷重要性的場景特別好用,Pinterest Pixie 與 HippoRAG 都是知名案例。
- 子圖檢索能省下大量 tool call走最短路徑或比對子圖的「形狀」,能抓到向量搜尋抓不到的中介節點,一次 .NET 專案的實測就把程式碼搜尋的 tool call 減少了 40%。
時間軸
時碼點下去會跳到影片的那一段。
| 時碼 | 段落 | 重點 |
|---|---|---|
| 00:00 | 開場 | 講者 Tim Ainge(Good Collective)自我介紹,這場要教怎麼用圖讓 AI 應用更聰明、成本更低、也更可靠。 |
| 00:19 | 常見的踢鐵板 | 對絢麗的圖表著迷、一頭熱想上 GraphRAG 或圖資料庫,結果常常換不到預期的即時成效。 |
| 01:10 | 這場的範圍 | 明說不談 GraphRAG 或 agent memory graph,把重點放在能套用在各種 AI 應用的底層 pattern。 |
| 02:18 | 圖的基本定義 | 圖就是節點(node/vertex)加上邊(edge),彼此可以有 label、屬性與方向。 |
| 02:53 | 從文字抽取圖 | 用最陽春的 subject-predicate-object triple 讓 agent 去抽取食譜資訊,結果堪用但沒什麼查詢價值。 |
| 03:30 | 給 schema 才有意義 | 改用 recipe/ingredient/quantity 這種結構化 schema,再補齊 ontology 細節(統一用語與單位),圖才變得可查詢。 |
| 05:26 | potato-potato 問題 | 同一種食材常被拆成好幾個節點,先用對照表消重,再靠 embedding model 處理沒預先列出的同義詞。 |
| 06:52 | 查圖比查表直覺 | 拿同一個問題比較 Cypher 與 SQL,關聯層數一多,圖查詢明顯比 SQL join 好寫也好懂。 |
| 07:44 | Personalized PageRank | 從指定節點出發做隨機遊走,走完會留下跟起點關係最強的節點,Pinterest Pixie 與 HippoRAG 都是這個技巧的應用案例。 |
| 08:55 | 判例引用網絡 | 用一起美國最高法院判決的引用關係圖,找出它其實間接倚賴 Miranda v. Arizona 這個地標判例。 |
| 09:51 | 最短路徑除錯 | 拿「改了 basket constructor 之後 checkout 壞掉」當例子,在程式碼圖上找最短路徑,還能延伸出 k 條最短路徑或指定節點必經的路徑。 |
| 10:43 | 子圖檢索的效益 | 這類路徑能抓到向量搜尋抓不到的中介節點,在一個 .NET 專案的實測中把程式碼搜尋的 tool call 次數砍了 40%。 |
| 11:19 | 子圖比對找程式碼模式 | 不指定任何節點,只憑「wrapper 類別包住並實作同一介面」這種關係形狀,就在 eShop 範例裡挖出一組 decorator pattern。 |
| 12:58 | 收尾 | 點名還有預測、相似度、分群這些留在簡報包裡沒細講的內容,鼓勵聽眾拿這些圖技巧做出更聰明、更省成本、也更可靠的 AI 應用。 |
值得記的話
名詞與人物
| GraphRAG | 這場一開始就聲明不深入的技術,用圖結構強化檢索增強生成。 |
|---|---|
| ontology | 描述要抽取哪些資訊放進圖裡的規則,這場用食譜範例示範怎麼標準化格式與單位。 |
| personalized PageRank(PPR) | Vanilla PageRank 的變形,從指定起始節點出發做隨機遊走,找出跟它關係最強的節點。 |
| Pinterest Pixie | Pinterest 用 PPR 做推薦系統的知名案例,講者拿它當 PPR 的參考點。 |
| HippoRAG | 講者提到的另一個用類似 PPR 技巧做記憶與問答的案例,這場沒有進一步展開。 |
| Cypher | 圖資料庫常用的查詢語言,這場拿它跟 SQL 對照,突顯圖查詢在多層關聯上比較直覺。 |
| decorator pattern | 讓某個類別包裝或延伸另一個類別功能的設計模式,這場用來示範子圖比對的效果。 |
| 子圖比對(subgraph matching) | 只憑節點與邊構成的「形狀」去查詢,不需要先知道具體要找的是哪個節點。 |
延伸
- GraphRAG 與 agent memory graph:這場開場就說明不會深入,留給其他場次講。
- 傳統的流量、成本與搜尋演算法:常用在建模相依關係或網路,這場提了一句就跳過。
- 預測、相似度與分群(clustering):講者說這些留在簡報包裡,這場沒有展開細節。