---
# System prepended metadata

title: 友達課程：Agentic GraphRAG - 課後測驗問答集

---

# 友達課程：Agentic GraphRAG - 課後測驗問答集


1. 在語意網路的知識表示法中，我們通常將「具體的概念」（如：金絲雀、蘋果）與「抽象的屬性」（如：會飛、紅色的）儲存在不同的節點中。請問語意網路與類神經網路（Neural Networks）在「概念表示」上最根本的結構差異為何？
    - A：語意網路使用分散式表示（Distributed Representation），每個概念由多個節點共同定義
    - B：語意網路依賴權重調整（Weight Adjustment）來進行學習，而非明確的規則連結
    - C：語意網路採用單一化表示（Localist Representation），每一個節點代表一個獨立且明確的概念
    - D：語意網路無法處理階層關係，而類神經網路擅長處理層次結構

> 答案：C
> 解說：這是 Symbolic AI（符號主義）與 Connectionist AI（連結主義）最大的差別。語意網路是典型的 Localist Representation（單一化/局部表示），意味著網路中的這一個球球（節點）就明確代表「Grandmother」這個概念。相對的，類神經網路使用 Distributed Representation（分散式表示），一個概念是由成千上萬個神經元活化模式共同組成的（向量），單看某一個神經元通常看不出意義。


2. 在 1970 年代末期，為了不僅僅依賴語意網路（Semantic Networks）的圖形直覺，Ronald Brachman 在 KL-ONE 系統中引入了關鍵的架構變革，這項變革主要解決了什麼問題？
    - A：解決了電腦儲存空間不足的問題，透過壓縮演算法減少資料量
    - B：將所有數據轉換為 SQL 格式，以便於傳統資料庫管理
    - C：強制區分「術語定義」（Terminological）與「斷言事實」（Assertional），解決了類別與實例混淆的邏輯危機
    - D：發明了反向傳播演算法，開啟了類神經網路的時代

> 答案：C
> 解說：在 KL-ONE 之前（如 Clyde 大象案例），系統常混淆「Clyde 是大象（實例）」與「大象是物種（類別）」的層級關係。Brachman 提出的 TBox 與 ABox 分離，是為了讓電腦能清楚區分「定義（Schema）」與「數據（Data）」，這是現代描述邏輯與知識圖譜的基礎。


3. 在本體論發展史上，Tom Gruber 提出了一個至今仍被廣泛引用的定義，其核心精神為何？
    - A：本體論是所有資料庫 schema 的總集合
    - B：本體論是一種視覺化工具，用於繪製流程圖
    - C：本體論是「對概念化的明確規範」（An explicit specification of a conceptualization），旨在解決知識共享的溝通障礙
    - D：本體論是用來取代 SQL 的下一代查詢語言

> 答案：C
> 解說：在專家系統導致「知識孤島」的年代，Tom Gruber 的定義強調了 Ontology 的核心價值在於「明確的規範」。這意味著不同系統間必須對此回合規則有共用的「說明書」，才能實現真正的知識共享，這是從單機 AI 走向 Semantic Web 的關鍵思想。


4. 關於「描述邏輯」（Description Logic, DL）與 W3C 的 OWL 標準之間的演化關係，下列敘述何者正確？
    - A：OWL 是為了取代 DL 而發明的全新數學邏輯
    - B：DL 是網頁前端語言，而 OWL 是後端資料庫語言
    - C：OWL 本質上是 DL 的 Web 標準化實現，將嚴謹的數學邏輯包裝成 XML/RDF 格式以利網路交換
    - D：DL 僅適用於專家系統，與現代的 Semantic Web 完全無關

> 答案：C
> 解說：OWL（Web Ontology Language）是將學術界描述邏輯（特別是 $\mathcal{SHOIN}$ 和 $\mathcal{SROIQ}$）標準化後的產物。它的目的是讓這些嚴謹的數學邏輯能透過統一的 Web 標準格式在網際網路上被不同的機器讀取與交換。


5. Google 在 2012 年發布 Knowledge Graph 時，提出的著名核心哲學是什麼？
    - A：Mobile first
    - B：Don’t be evil
    - C：Things, not strings
    - D：AI for everyone

> 答案：C
> 解說：這是 Amit Singhal 發布 GKG 時的口號，意味著搜尋引擎不再只是匹配關鍵字（Strings），而是理解背後的實體（Things/Entities）及其屬性。從學術嚴謹的邏輯轉向工程實用的實體連結，強調識別「事物」的唯一性。Google 的策略是將學術標準（OWL）進行工程化和簡化（如 `Schema.org`）。重點不再是完美的邏輯推理，而是透過 TBox 讓搜尋引擎理解「達文西（Person）」與「蒙娜麗莎（Painting）」是實體事物，而不僅僅是文字字串。


6. 在 Neo4j 中，為什麼有時候需要將「關係」也具象化（Reification）成為一個「節點」？
    - A：為了增加節點數量以提升 PageRank 分數
    - B：因為 Neo4j 不支援有方向的關係
    - C：當關係本身包含複雜的多維屬性（如時間區間、來源信賴度、事件脈絡）且單一邊屬性不足以表達
    - D：為了讓關聯式資料庫也能讀取圖形資料

> 答案：C
> 解說：雖然屬性圖模型的 Edge 可以帶屬性，但有時關係本身就是一個「事件」。例如「A 購買 B」這件事，如果需要記錄購買地點、事件、發票號碼，將「購買」這個行為變成一個節點 `(A)-\[:PERFORMED\]->(Purchase)-\[:TARGET\]->(B)` 會比單純的邊更具擴展性，這在處理複雜商業邏輯或法律案件時很常見。


7. 當我們在 Neo4j 中對某個標籤（Label）的特定屬性（例如 `Person` 的 `email`）設定了「唯一約束（Unique Constraint）」後，除了保證資料不重複之外，系統還會在底層自動執行什麼關鍵動作？
    - A：自動將該屬性的資料加密儲存以保護隱私
    - B：自動建立一個觸發器（Trigger），當資料重複時發送 Email 通知管理員
    - C：自動為該屬性建立一個索引（Schema Index），大幅提升以該屬性進行查找（Lookups）時的查詢效能
    - D：自動將該屬性複製到所有相鄰的節點上，以備援資料遺失

> 答案：C
> 解說：在 Neo4j 中，Constraint 與 Index 是緊密綁定的。當你告訴資料庫「這個屬性必須唯一」，資料庫為了快速檢查新寫入的資料是否違規，必須依賴索引。因此，設定 Unique Constraint 是一石二鳥的作法：既確保了資料完整性（Data Integrity），又自動獲得了查詢時的入口索引效能。


8. Neo4j 等圖資料庫在處理「多層深度關係查詢」（例如：朋友的朋友的朋友的）時，效能遠高於關聯式資料庫（RDBMS）。這主要歸功於哪種底層架構特性？
    - A：將所有資料都快取在記憶體中的 In-Memory 機制
    - B：使用了更高級的 B+ Tree 索引演算法來加速 JOIN 操作
    - C：寫入資料時就將關係「實體化」為直接的記憶體指標（Pointer），查詢時只需延著指標跳躍，無需反覆掃描索引
    - D：利用 GPU 進行平行運算來加速圖形矩陣的相乘

> 答案：C
> 解說：這是圖資料庫的核心靈魂。在 RDBMS 中，連結兩個表需要透過 `Index` 進行 `JOIN` 運算，隨著資料量變大，速度會變慢。Neo4j 採用「免索引鄰接」，意思是當節點 A 與節點 B 建立關係時，系統直接在 A 的儲存區塊寫入指向 B 的實體記憶體位址。查詢時就像走迷宮有一條實體的線牽著你走，複雜度是 O(1)，跟資料庫總量無關。


9. 當我們要建立兩個現有節點之間的關係時（例如：把「使用者 A」連結到「商品 B」），為了確保執行效率與資料正確性，標準的 Cypher 寫法順序應該是？
    - A：直接執行 CREATE (`u:User {id: 'A'})-\[:BOUGHT\]->(p:Product {id: 'B'}`)，讓系統自動處理
    - B：使用 `OPTIONAL` `MATCH` 嘗試尋找節點，失敗則報錯
    - C：先使用 `MATCH`（或 `MERGE`）分別查找到起始節點與結束節點，確認它們鎖定後，再使用 `CREATE`（或 `MERGE`）建立關係
    - D：將所有關係資料匯出成 CSV，刪除舊資料庫後重新匯入

> 答案：C
> 解說：這是一個常見的新手陷阱。如果直接使用 A 選項的寫法，若節點原本已存在，Neo4j 會「再建立一次」新的使用者 A 和商品 B（造成重複節點）。正確的邏輯是：先「找到（Match）」這兩個人（透過業務主鍵與索引），抓住它們之後，再「連結（Create Relationship）」它們。這樣才能確保關係是建立在正確的實體之上。


10. 關於 SQL 中的「Join Bomb」（或稱笛卡兒積爆炸），下列哪一種描述最準確地定義了其發生的根本原因？
    - A：資料庫的硬體記憶體不足，導致無法快取索引，進而引發查詢逾時
    - B：開發者在 `SELECT` 子句中選取了過多的欄位（例如使用 `SELECT\*`），導致網路傳輸頻寬被塞滿
    - C：查詢語句在進行資料表連結時，遺漏了關聯條件（Join Condition）或條件邏輯錯誤，導致資料庫嘗試計算所有可能的配對組合
    - D：資料庫的交易隔離級別（Transaction Isolation Level）設定過高，導致資料表被長時間鎖定（Deadlock）

> 答案：C
> 解說：當 SQL 引擎不知道如何配對兩張表的資料（缺乏 `ON` 或 `WHERE` 條件），它的預設行為是將 Table A 的每一筆資料與 Table B 的每一筆資料進行配對，這與選取多少欄位或硬體資源無直接關係，而是邏輯運算上的幾何級數增長。


