TTechSpecs

簡介

本 Harness 驗證 Graphify 的知識提取功能是否正常運作,並評估提取品質。


驗證步驟

第一步:準備測試資料

# 建立測試目錄
mkdir -p graphify-test/inputs
cd graphify-test

# 準備測試文件
cat > inputs/test-project.md << 'EOF'
# Graphify 專案

Graphify 是一個將大型語言模型(LLM)與圖譜結合的工具,專注於知識管理。

## 核心團隊

- 張三:Tech Lead,負責後端架構
- 李四:Frontend Lead,負責 React 前端
- 王五:Product Manager

## 技術棧

- 後端:Python, FastAPI, Neo4j
- 前端:React, Next.js, TailwindCSS
- AI:OpenAI GPT-4

## 相關專案

- Superpowers:AI 開發方法論
- Codebase Memory:程式碼知識庫
EOF

第二步:執行提取測試

# 初始化測試圖譜
graphify init --name="test-extraction" --backend=builtin

# 提取測試文件
graphify extract inputs/test-project.md

預期輸出

正在從 inputs/test-project.md 提取知識...

提取摘要:
- 實體:10+ 個
- 關係:15+ 個

✓ 知識已加入圖譜!

第三步:驗證實體提取

graphify query "圖譜中有哪些 Person 類型的實體?"

預期結果

根據圖譜查詢結果,Person 類型實體有:
1. 張三
2. 李四
3. 王五

第四步:驗證關係提取

graphify query "張三和李四的角色是什麼?"

預期結果

根據圖譜查詢結果:
- 張三:Tech Lead,負責後端架構
- 李四:Frontend Lead,負責 React 前端

第五步:驗證技術關係

graphify query "Graphify 使用了哪些技術?"

預期結果

根據圖譜查詢結果,Graphify 使用以下技術:

後端:
- Python
- FastAPI
- Neo4j

前端:
- React
- Next.js
- TailwindCSS

AI:
- OpenAI GPT-4

第六步:驗證專案關係

graphify query "Graphify 與哪些專案相關?"

預期結果

根據圖譜查詢結果:
- Superpowers:AI 開發方法論
- Codebase Memory:程式碼知識庫

品質評估

評估一:實體覆蓋率

graphify query "測試文件中的所有實體是否都被提取?"

評估標準

  • ✓ 人員:張三、李四、王五(3/3)
  • ✓ 專案:Graphify, Superpowers, Codebase Memory(3/3)
  • ✓ 技術:Python, FastAPI, Neo4j, React, Next.js, TailwindCSS, GPT-4(7/7)

通過條件:≥ 90% 實體被提取


評估二:關係準確度

graphify query "所有關係是否準確反映文件內容?"

評估標準

  • ✓ 張三 → 負責 → 後端架構
  • ✓ 李四 → 負責 → React 前端
  • ✓ Graphify → USES → Neo4j
  • ✓ Graphify → RELATES_TO → Superpowers

通過條件:≥ 85% 關係準確


評估三:屬性完整性

graphify query "實體屬性是否完整?"

評估標準

  • ✓ 人員有角色資訊
  • ✓ 技術有分類資訊
  • ✓ 專案有描述資訊

驗證清單

步驟 測試項目 狀態 預期結果
1 準備測試資料 🔲 測試文件建立
2 初始化圖譜 🔲 .graphify/ 目錄建立
3 執行提取 🔲 實體數 >= 10
4 驗證實體提取 🔲 人員 3/3
5 驗證關係提取 🔲 角色資訊正確
6 驗證技術關係 🔲 技術 7/7
7 驗證專案關係 🔲 專案 3/3

進階測試

測試一:批量提取

# 準備多個測試文件
cat > inputs/test1.md << 'EOF'
# 專案 A
團隊:張三、李四
技術:React, Node.js
EOF

cat > inputs/test2.md << 'EOF'
# 專案 B
團隊:王五、趙六
技術:Python, Django
EOF

# 批量提取
ls inputs/*.md > file-list.txt
graphify extract --batch=file-list.txt

驗證

graphify query "所有專案的技術棧?"

測試二:增量提取

# 第一輪提取
graphify extract inputs/test-project.md

# 查詢統計
graphify stats

# 第二輪提取(新增文件)
cat > inputs/additional.md << 'EOF'
# 補充資訊

Graphify 還支援多種 LLM 提供者,包括 Anthropic Claude。
EOF

graphify extract inputs/additional.md

# 驗證增量
graphify query "圖譜中支援哪些 LLM 提供者?"

測試三:提取效能

# 準備大型文件
cat > inputs/large-doc.md << 'EOF'
# 大型文件
$(repeat 100 "這是一段測試文字,包含實體和關係。")
EOF

# 測量提取時間
time graphify extract inputs/large-doc.md

效能基準

  • 小文件(< 1KB):< 2s
  • 中文件(1-10KB):< 10s
  • 大文件(> 10KB):< 30s

故障排除

❌ 問題:提取實體數過少

可能原因

  • 文件內容過於簡單
  • LLM 無法理解語意

解決方案

# 使用更詳細的文件
# 或調整提取模式
graphify extract file.md --mode=full

❌ 問題:關係提取不準確

可能原因

  • 文件中關係描述不明確
  • LLM 溫度參數過高

解決方案

# 調整溫度參數
graphify extract file.md --temperature=0.1

# 或使用自訂提示
graphify extract file.md --prompt=./prompts/relations.txt

❌ 問題:重複實體

可能原因

  • 不同來源描述同一實體
  • 實體名稱略有差異

解決方案

# 合併重複實體
graphify merge --entities="Graphify,graphify"

# 或設定實體標準化
graphify config set entity.normalization=true

結論

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


下一步

提取驗證成功後,可以:

  1. 執行「查詢效能測試」驗證查詢功能
  2. 執行「視覺化測試」驗證視覺化功能
  3. 開始建立實際的知識圖譜