# 友達課程:LLM-RAG(4) - GraphRAG backed by Neo4j - 課後測驗問答集 1. 在一個連通圖中,存在「歐拉路徑」(Eulerian Path)的條件是什麼?(歐拉路徑是指一條經過圖中所有邊各一次的路徑) * A:圖中所有頂點的度數皆為奇數 * B:圖中所有頂點的度數皆為偶數 * C:圖中度數為奇數的頂點數量為 0 個或 2 個 * D:圖中必須存在一條 Hamiltonian Path > 答案:C > 解說:這是歐拉路徑存在的充要條件,如果奇數度頂點為 0 個,則存在歐拉迴路(起點和終點相同);如果為 2 個,則這兩個頂點分別是路徑的起點和終點。 2. 在圖論的廣度優先搜尋(BFS)演算法中,用來記錄已訪問節點的資料結構通常是什麼? * A:堆疊(stack) * B:陣列(array) * C:佇列(queue) * D:鏈結串列(linked list) > 答案:C > 解說:廣度優先搜尋(BFS)的目標時進行逐層(level-by-level)的探索,而佇列「先進先出」(FIFO)的特性是實現此目標的關鍵。演算法會從佇列的前端取出節點進行訪問,同時將其所有未訪問過的鄰居加入佇列的尾端。這個機制確保了距離起點較近的節點總是被優先處理,從而自然地形成了由近及遠、逐層向外擴展的搜索順序,這與使用推疊(Stack)深入探索單一路徑的深度優先搜尋(DFS)正好相反。 3. 在知識圖譜(Knowledge Graph)中,用來表示一條知識的基本結構「三元組」(Triple)通常由哪三項組成? * A:表格(Table)、欄位(Column)、資料(Data) * B:節點(Node)、路徑(Path)、權重(Weight) * C:主題(Subject)、謂詞(Predicate)、客體(Object) * D:實體(Entity)、屬性(Attribute)、數值(Value) > 答案:C > 解說:主題(Subject)、謂詞(Predicate)、客體(Object),這個「三元組」結構是知識圖譜中表達事實的最小單位,其中「主體」是被描述的核心實體,「謂詞」是定義它們之間的關係或屬性,而「客體」則是與主題相關聯的另一個實體或具體數值。例如,在「(達文西)-[繪製了]→(蒙娜麗莎)」這條知識中,「達文西」是主題,「繪製了」是謂詞,「蒙娜麗莎」是客體。正是無數個這樣的原子化知識,構建成一張龐大且互相關聯的知識網路。 4. 在知識圖譜中,同來定義概念的層次結構(如「貓」是一種「哺乳動物」)、關係的類型及約束(如 hasSpouse 關係的對象也必須是 Person)的「規則或模式集合」稱為什麼? * A:資料描述框架(RDF) * B:SPARQL 查詢語言 * C:本體論(Ontology) * D:圖資料庫(Graph Database) > 答案:C > 解說:本體論(Ontology)扮演著知識圖譜的「骨架」或「藍圖」。它定義了知識庫中允許存在的實體類別、屬性以及它們必須遵守的規則和邏輯約束。這不僅確保了知識的一致性,更是實現知識推理的基礎。RDF 是資料模型,而本體論是定義這個模型的規則。 5. 如果一個知識圖譜中已知兩個事實:「(蘇格拉底,是一種,人)」和(人,是一種,凡人)」。系統基於這些訊息自動推導出一個新的、隱含的事實:「(蘇格拉底,是一種,凡人)」,這個過程稱為什麼? * A:知識表示學習(Knowledge Representation Learning) * B:實體對齊(Entity Linking) * C:知識推理(Knowledge Reasoning) * D:實踐抽取(Event Extraction) > 答案:C > 解說:知識推理(Knowledge Reasoning)是指利用已有的事實和預先定義的邏輯規則(通常來自本體論)來發現和生成新知識的能力。它讓知識圖譜不再只是一個靜態的資料庫,而是一個能夠進行邏輯推斷、回答複雜問題的「智慧」資料系統。 6. 在圖資料庫中,「屬性圖模型」(Property Graph Model)的核心特徵是什麼? * A:節點可以擁有多個標籤(Labels)進行分類,但關係(Relationships)本身是匿名的,不能擁有類型。 * B:屬性(Properties)只能附加在節點上,而關係僅用於表示連結,本身不能攜帶任何屬性資料。 * C:節點和關係都可以附加任意數量的屬性(鍵值對),並且節點可透過標籤分類,關係也具有類型和方向。 * D:模型中的所有關係都必須是雙向的,且不允許節點指向自身的自循環關係。 > 答案:C > 解說:「屬性圖模型」之所以強大,是因為它將圖形結構的表達能力提升到了一個新的層次。其核心特徵在於,不僅代表實體的節點可以擁有屬性(如姓名、年齡)並透過標籤(Labels)分類,代表連結的關係本身也可以攜帶自己的屬性(如建立關係的日期、權重等),同時還具備明確的類型和方向。這種設計允許我們將豐富的上下文和元資料(Metadata)直接儲存在節點之間的連結上,從而能夠以極高的精度和效率,來描繪和查詢真實世界中錯綜複雜的關聯網絡。 7. Neo4j 圖資料庫中,常見的查詢語言Cypher是用於什麼目的? * A:主要用於定義資料庫底層的物理儲存結構與索引演算法 * B:專門用來處理和操作傳統的表格化資料(Tables)與資料列(Rows) * C:提供一種宣告式的視覺化(直觀表示)語法,透過描述節點(Nodes)與關係(Relationships)組成的模式(Pattern),來對圖形進行查詢、新增與修改 * D:作為資料庫伺服器的主要設定工具,用來管理系統權限與網路配置 > 答案:C > 解說:Cypher 語言的設計哲學是讓使用者能夠以一種直觀、易於理解的方式與圖形資料互動。它的核心優勢在於模式匹配(Pattern Matching)。Cypher 的語法,例如 MATCH (a:Person)-[:KNOWS]->(b:Person) ,看起來就像是在用文字「畫」出你想要尋找的資料圖形。使用者只需宣告式地(Declarative)描述出「節點與關係」組成的模式,而不需要關心資料庫內部是如何找到這些資料的。這種方式完美對應了圖形資料庫的儲存模型,不僅可用於查詢(MATCH),也同樣適用於創建(CREATE)和修改(MERGE, SET, DELETE)圖形中的資料。 8. 從電腦科學的理論模型角度來看,關聯式資料庫與圖資料庫分別基於哪兩種核心資料模型? * A:關聯式資料庫基於「屬性圖模型」,圖資料庫基於「關聯式模式」 * B:兩者都基於「物件導向模型」,只是實現細節不同 * C:關聯式資料庫基於「關聯式模式」,圖資料庫基於「屬性圖模型」 * D:關聯式資料庫基於「鍵值模型」,圖資料庫基於「文件模型」 > 答案:C > 解說:這是兩種資料庫的理論基礎。由 E.F. Codd 提出的「關聯式模型」是關聯式資料庫的基石,它基於集合論,將資料組織在表格中。而「屬性圖模型」則是圖資料庫的通用邏輯模型,它由節點、關係、屬性、標籤等核心元素構成,更直觀地表達實體間的複雜關聯。 9. 關於關聯式資料庫(如 PostgreSQL)與原生圖資料庫(如 Neo4j)在處理「關係」的根本區別,以下描述何者最為準確? * A:兩者都使用外鍵(Foreign Key)來建立關係,但圖資料庫的速度更快 * B:關聯式資料庫透過指標直接連結資料列,而圖資料庫需要透過索引來計算關係 * C:關聯式資料庫在查詢時透過 JOIN 操作計算關係,而原生圖資料庫則是遍歷物理上已儲存的關係實體 * D:兩者在物理層面的儲存方式完全相同,僅是上層查詢語言(SQL vs. Cypher)不同 > 答案:C > 解說:這是兩者最核心的區別。關聯式資料庫的關係是邏輯上的,在查詢時才透過比對主鍵和外鍵(JOIN操作)來動態建立。原生圖資料庫則將「關係」視為一個物理儲存的實體,節點之間透過直接的指標連接,查詢時只需沿著這些指標「遍歷」,而非「計算」。 10. 原生圖資料庫(如 Neo4j)之所以能實現極速的鄰居節點查詢,其核心物理儲存原則是什麼? * A:它為資料庫中每個節點的所有屬性都自動建立了 B+ Tree 索引 * B:它將所有節點都載入記憶體中,因此查詢速度極快 * C:免索引鄰接(Index-Free Adjacency),即每個節點紀錄中都直接儲存了指向其關係記錄的物理指標,形成一個鏈結串列網路 * D:透過預先計算所有可能的查詢路徑,並將結果快取起來 > 答案:C > 解說:「免索引鄰接」是圖資料庫高性能的基石。不同於關聯式資料庫需要去索引中查找符合條件的外鍵,圖資料庫的每個節點在物理層面就包含了指向其關係的「指標」(Pointers)。查詢鄰居節點的過程,就是跟隨這些指標的過程,其時間複雜度只與該節點的鄰居數量有關,而與整個資料庫的總大小無關。