TTechSpecs

Semantic Query Skill

Semantic Query 是 Graphify 中最重要的查詢型 skills 之一,專注於使用自然語言查詢知識圖譜,無需學習 Cypher 或 Gremlin 等查詢語言。

何時使用

在以下情況中使用 Semantic Query skill:

需要使用的情境

  • 想要探索圖譜中的知識
  • 需要回答複雜的關係問題
  • 想要發現隱藏的知識關聯
  • 不熟悉圖譜查詢語言的使用者

不適合的情境

  • 需要精確控制查詢執行計畫
  • 對效能有極端要求的場景
  • 需要直接操作圖譜資料庫

查詢流程

第一步:理解問題意圖

識別使用者的查詢意圖:

// 輸入問題
"誰參與了 Graphify 專案?"

// 識別意圖
{
  "intent": "query_participants",
  "target": "Graphify",
  "entity_type": "Person",
  "relationship": "WORKS_ON"
}

第二步:轉換為圖譜查詢

將自然語言轉為圖譜查詢:

// 生成的 Cypher 查詢
MATCH (p:Person)-[:WORKS_ON]->(pr:Project {name: 'Graphify'})
RETURN p.name, p.role

第三步:組織回覆

將查詢結果用自然語言回覆:

根據圖譜查詢結果,參與 Graphify 專案的人員有:
1. 張三 - 核心開發者,負責後端
2. 李四 - 前端工程師,負責 UI
3. 王五 - 專案經理

如何使用 Semantic Query Skill

觸發詞

「使用 semantic-query skill 查詢圖譜」

實際範例

使用者輸入

使用 semantic-query skill 查詢:Graphify 專案依賴哪些技術?

AI 回應

正在使用 Semantic Query skill 查詢...

**查詢意圖**:
- 目標:Graphify 專案
- 關係:DEPENDS_ON
- 實體類型:Technology

**執行的圖譜查詢**:
```cypher
MATCH (p:Project {name: 'Graphify'})-[:DEPENDS_ON]->(t:Technology)
RETURN t.name, t.category

查詢結果: 根據圖譜查詢,Graphify 專案依賴以下技術:

  1. LLM - 類別:AI/ML 用途:知識提取與理解

  2. Neo4j - 類別:Database 用途:圖譜資料庫

  3. React - 類別:Frontend 用途:前端介面

  4. FastAPI - 類別:Backend 用途:API 服務


---

## 查詢類型

### 1. 簡單關係查詢

查詢直接關係:

```bash
# 問:「誰參與了 X 專案?」
graphify query "誰參與了 Graphify 專案?"

# 問:「X 依賴什麼?」
graphify query "Graphify 依賴哪些技術?"

2. 多跳查詢

查詢間接關係:

# 問:「張三參與的專案中,哪些使用了 Neo4j?」
graphify query "張三參與的專案中,哪些使用了 Neo4j?"

# 內部執行:
# 1. 找出張三參與的專案
# 2. 找出這些專案使用的技術
# 3. 過濾出使用 Neo4j 的專案

3. 聚合查詢

統計與分組:

# 問:「有多少人參與了超過 3 個專案?」
graphify query "有多少人參與了超過 3 個專案?"

# 問:「最常見的技術棧是什麼?」
graphify query "最常見的技術棧是什麼?"

4. 條件查詢

帶條件的查詢:

# 問:「找出所有使用 React 且人數超過 3 人的專案」
graphify query "找出所有使用 React 且人數超過 3 人的專案"

# 問:「哪些專案沒有明確的負責人?」
graphify query "哪些專案沒有明確的負責人?"

查詢技巧

技巧一:明確查詢目標

好的查詢:

graphify query "列出所有參與 Graphify 專案的前端工程師"

模糊的查詢:

graphify query "關於前端的人"  # 可能返回意外結果

技巧二:使用上下文

利用前後查詢的上下文:

# 第一輪:廣泛查詢
graphify query "所有專案的技術架構"

# 第二輪:深入細節
graphify query "其中 LLM 的作用是什麼?"

技巧三:迭代優化

逐步優化查詢:

# 第一次:廣泛查詢
graphify query "列出所有專案"

# 第二次:過濾
graphify query "其中使用 React 的專案"

# 第三次:聚焦
graphify query "React 專案中哪些是最活躍的?"

處理複雜查詢

場景一:影響分析

# 問題:「若 user-service 採用新的認證協議,會影響哪些專案?」

# 查詢過程:
1. 找出 user-service 的所有依賴者
2. 找出這些依賴者的依賴者(間接影響)
3. 識別受影響的人員和團隊
4. 評估影響程度

# 回覆:
直接影響:mobile-app, admin-portal
間接影響:external-clients(透過 mobile-app)
需要通知:mobile-app 團隊(李華)、admin-portal 團隊(王偉)

場景二:缺口分析

# 問題:「哪些技術應該採用但尚未採用?」

# 查詢過程:
1. 識別業界標準技術
2. 比較當前圖譜中的技術
3. 找出缺失的技術

# 回覆:
建議採用但尚未使用的技術:
- Docker(容器化)
- GitHub Actions(CI/CD)
- Prometheus(監控)

場景三:推薦查詢

# 問題:「基於我的專案技術棧,有什麼建議?」

# 查詢過程:
1. 分析當前技術棧
2. 找出相似專案
3. 推薦他們使用但尚未使用的技術

# 回覆:
基於你的技術棧(React + Node.js),建議考慮:
- Next.js(SSR 優化)
- TypeScript(類型安全)
- Prisma(ORM)

常見問題

Q1:查詢沒有返回結果?

A:可能的原因:

  1. 圖譜中沒有相關資料 → 先執行提取
  2. 查詢詞彙與實體名稱不匹配 → 嘗試同義詞
  3. 查詢條件過嚴 → 放寬條件

Q2:查詢結果不準確?

A:可以:

  1. 使用更明確的查詢詞
  2. 檢查圖譜中的資料是否正確
  3. 調整 LLM 溫度參數

Q3:查詢速度太慢?

A

  1. 限制查詢深度
  2. 使用索引
  3. 考慮圖譜分片

與其他 Skills 組合

推薦組合

Knowledge Extraction + Semantic Query

knowledge-extraction → semantic-query

提取後立即查詢驗證

Semantic Query + Source Tracking

semantic-query → source-tracking

查詢後追蹤來源


Semantic Query 是探索知識圖譜的核心技能,掌握它你就能用自然語言發掘任何隱藏的知識關聯!