# 友達課程: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 的每一筆資料進行配對,這與選取多少欄位或硬體資源無直接關係,而是邏輯運算上的幾何級數增長。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up