TTechSpecs

簡介

本 Harness 驗證 Graphify 的查詢功能是否正常運作,並評估查詢效能與準確度。


驗證步驟

第一步:準備測試圖譜

# 建立測試圖譜
graphify init --name="test-query" --backend=builtin

# 準備測試資料
cat > test-data.md << 'EOF'
# 測試知識庫

## 人員
- 張三:資深工程師,專精 Python
- 李四:前端工程師,專精 React
- 王五:產品經理

## 專案
- Graphify:LLM + 圖譜工具
- Superpowers:AI 開發方法論
- TechDocs:技術文件平台

## 關係
- 張三 → 參與 → Graphify
- 李四 → 參與 → Graphify
- 李四 → 參與 → TechDocs
- 王五 → 負責 → Superpowers
- Graphify → 依賴 → Superpowers
EOF

# 提取資料
graphify extract test-data.md

第二步:簡單查詢測試

# 測試一:列出所有人員
graphify query "圖譜中有哪些人?"

預期結果

根據圖譜查詢結果:
1. 張三 - 資深工程師,專精 Python
2. 李四 - 前端工程師,專精 React
3. 王五 - 產品經理

驗收標準

  • ✓ 返回 3 人
  • ✓ 角色資訊正確
  • ✓ 回應時間 < 1s

# 測試二:列出所有專案
graphify query "有哪些專案?"

預期結果

根據圖譜查詢結果:
1. Graphify - LLM + 圖譜工具
2. Superpowers - AI 開發方法論
3. TechDocs - 技術文件平台

驗收標準

  • ✓ 返回 3 個專案
  • ✓ 描述資訊正確
  • ✓ 回應時間 < 1s

第三步:關係查詢測試

# 測試三:查詢參與關係
graphify query "誰參與了 Graphify 專案?"

預期結果

根據圖譜查詢結果,參與 Graphify 專案的人員有:
1. 張三 - 資深工程師
2. 李四 - 前端工程師

驗收標準

  • ✓ 正確識別參與者
  • ✓ 排除未參與者(王五)
  • ✓ 回應時間 < 2s

# 測試四:查詢多個專案
graphify query "李四參與了哪些專案?"

預期結果

根據圖譜查詢結果,李四參與了以下專案:
1. Graphify - LLM + 圖譜工具
2. TechDocs - 技術文件平台

驗收標準

  • ✓ 返回 2 個專案
  • ✓ 專案名稱正確
  • ✓ 回應時間 < 2s

第四步:多跳查詢測試

# 測試五:兩跳查詢
graphify query "張三參與的專案依賴哪些專案?"

預期結果

根據圖譜查詢結果:
張三 → 參與 → Graphify
Graphify → 依賴 → Superpowers

答案:Superpowers(AI 開發方法論)

驗收標準

  • ✓ 正確推斷兩跳關係
  • ✓ 邏輯清晰
  • ✓ 回應時間 < 3s

第五步:聚合查詢測試

# 測試六:統計查詢
graphify query "每個專案有多少人參與?"

預期結果

根據圖譜查詢結果:
1. Graphify - 2 人(張三、李四)
2. TechDocs - 1 人(李四)
3. Superpowers - 1 人(王五,但為負責人)

驗收標準

  • ✓ 正確統計人數
  • ✓ 分組正確
  • ✓ 回應時間 < 3s

# 測試七:最大值查詢
graphify query "哪個專案人數最多?"

預期結果

根據圖譜查詢結果:
Graphify 專案人數最多,有 2 人參與。

驗收標準

  • ✓ 正確識別最大值
  • ✓ 理由充分
  • ✓ 回應時間 < 3s

第六步:條件查詢測試

# 測試八:條件過濾
graphify query "哪些人專精 Python?"

預期結果

根據圖譜查詢結果:
張三 - 資深工程師,專精 Python

驗收標準

  • ✓ 正確過濾
  • ✓ 無誤判
  • ✓ 回應時間 < 2s

# 測試九:否定條件
graphify query "哪些專案李四沒有參與?"

預期結果

根據圖譜查詢結果:
李四沒有參與的專案:
1. Superpowers - AI 開發方法論

驗收標準

  • ✓ 正確識別非參與專案
  • ✓ 無遺漏
  • ✓ 回應時間 < 3s

第七步:邊界情況測試

# 測試十:空結果查詢
graphify query "誰參與了不存在專案?"

預期結果

根據圖譜查詢結果,沒有人參與「不存在專案」。

驗收標準

  • ✓ 正確處理空結果
  • ✓ 無錯誤
  • ✓ 回應時間 < 1s

效能基準

小圖譜(< 100 節點)

查詢類型 目標時間
簡單查詢 < 1s
關係查詢 < 2s
多跳查詢 < 3s
聚合查詢 < 3s

中圖譜(100-1000 節點)

查詢類型 目標時間
簡單查詢 < 2s
關係查詢 < 5s
多跳查詢 < 10s
聚合查詢 < 10s

驗證清單

步驟 測試項目 狀態 預期結果
1 準備測試圖譜 🔲 3 人、3 專案提取
2 簡單查詢(人員) 🔲 3 人,< 1s
3 簡單查詢(專案) 🔲 3 專案,< 1s
4 關係查詢(參與) 🔲 正確識別,< 2s
5 關係查詢(多專案) 🔲 2 專案,< 2s
6 多跳查詢 🔲 正確推斷,< 3s
7 聚合查詢(統計) 🔲 正確統計,< 3s
8 聚合查詢(最大值) 🔲 正確識別,< 3s
9 條件查詢(過濾) 🔲 正確過濾,< 2s
10 條件查詢(否定) 🔲 正確識別,< 3s
11 邊界查詢(空結果) 🔲 無錯誤,< 1s

故障排除

❌ 問題:查詢回應時間過長

可能原因

  • 圖譜規模過大
  • 查詢複雜度高
  • 索引未建立

解決方案

# 建立索引
graphify index create --type=Person --property=name
graphify index create --type=Project --property=name

# 或限制查詢範圍
graphify query "..." --limit=10

❌ 問題:查詢結果不準確

可能原因

  • 圖譜資料不完整
  • LLM 理解錯誤
  • 查詢詞彙模糊

解決方案

# 驗證圖譜內容
graphify stats

# 使用更明確的查詢詞
graphify query "明確指定查詢條件"

# 或調整 LLM 溫度
graphify config set llm.temperature=0.1

❌ 問題:查詢返回錯誤

可能原因

  • 圖譜資料庫連線失敗
  • 查詢語法錯誤

解決方案

# 測試連線
graphify test-connection

# 查看詳細錯誤
graphify query "..." --verbose

結論

若所有測試均通過 🟢,則 Graphify 查詢功能驗證成功,可以進行正式的知識查詢作業。


下一步

查詢驗證成功後,可以:

  1. 執行「視覺化測試」驗證視覺化功能
  2. 執行「來源追蹤測試」驗證驗證功能
  3. 開始使用查詢探索知識圖譜