指令用途
graphify extract 是 Graphify 的核心指令之一。它的用途是從非結構化文字(文件、網頁、筆記等)中,使用 LLM 自動提取實體(Entity)與關係(Relationship),並建立到知識圖譜中。
運作流程
- 讀取輸入來源:支援本地檔案或 URL
- LLM 理解內容:讓 LLM 讀懂文字的語意
- 提取實體與關係:識別節點類型和邊類型
- 建立圖譜節點:在圖譜資料庫中創建節點和邊
- 附加來源資訊:追蹤每個節點的來源文件
基本用法
從本地檔案提取
# 從 README.md 提取專案資訊
graphify extract README.md
# 從多篇文件提取
graphify extract docs/*.md
從網頁提取
# 從 GitHub README 提取
graphify extract https://github.com/Graphify-Labs/graphify
# 從網站文章提取
graphify extract https://example.com/article
進階選項
指定提取模式
# 輕量模式(快速,但可能遺漏部分資訊)
graphify extract README.md --mode=light
# 完整模式(全面,但耗時)
graphify extract README.md --mode=full
# 自訂模式(平衡速度與完整性)
graphify extract README.md --mode=custom --extractor="gpt-4"
指定圖譜命名空間
# 將提取的內容放到特定命名空間
graphify extract README.md --namespace="project-docs"
指定 LLM 提示範本
# 使用自訂的提取提示
graphify extract README.md --prompt="./prompts/entity-extraction.txt"
實戰對話範例
範例一:提取專案 README
- You:
graphify extract README.md - AI:
正在從 README.md 提取知識…
提取摘要:
- 實體:12 個(5 個 Person,3 個 Project,4 個 Technology)
- 關係:18 個
識別的實體:
- Person: 張三、李四、王五
- Project: Graphify、Superpowers、TechSpecs
- Technology: LLM、Neo4j、React
建立的關係:
- 張三 → WORKS_ON → Graphify
- Graphify → DEPENDS_ON → LLM
- Graphify → USES → Neo4j
✓ 知識已成功加入圖譜!
範例二:從網頁提取 API 文件
- You:
graphify extract https://api.example.com/docs - AI:
正在從 https://api.example.com/docs 提取知識…
提取摘要:
- 實體:8 個(4 個 API,4 個 DataType)
- 關係:12 個
識別的實體:
- API: POST /users, GET /users, PUT /users/:id, DELETE /users/:id
- DataType: User, CreateUserRequest, UpdateUserRequest, UserResponse
建立的關係:
- POST /users → RETURNS → UserResponse
- POST /users → ACCEPTS → CreateUserRequest
- GET /users → RETURNS → UserResponse
✓ 知識已成功加入圖譜!
輸出格式
終端輸出
Extracting knowledge from README.md...
[======== ] 40% (Processing section 2 of 5)
Extracted Entities:
✓ Person: 張三
✓ Project: Graphify
✓ Technology: LLM
Extracted Relationships:
✓ 張三 → WORKS_ON → Graphify
✓ Graphify → DEPENDS_ON → LLM
Summary:
- Entities: 12
- Relationships: 18
- Processing time: 2.3s
- Source: README.md
✓ Knowledge successfully added to graph!
常見問題
Q1:提取結果不如預期怎麼辦?
A:可以嘗試以下方法:
- 使用
--mode=full進行完整提取 - 使用自訂提示範本(
--prompt) - 調整 LLM 溫度參數(
--temperature=0.1)
Q2:如何避免重複提取?
A:Graphify 會自動去重:
- 相同實體只會建立一次
- 重複提取會合併到現有節點
- 可以使用
--force強制重新提取
Q3:如何查看提取的詳細日誌?
A:使用 --verbose 參數:
graphify extract README.md --verbose
與其他指令組合
提取後查詢
# 1. 提取文件
graphify extract README.md
# 2. 查詢提取的知識
graphify query "誰參與了這個專案?"
提取後視覺化
# 1. 提取文件
graphify extract README.md
# 2. 視覺化圖譜
graphify visualize --output=graph.html
最佳實踐
1. 分批提取大型文件
# 不要一次提取所有文件
# 建議分批提取並驗證結果
graphify extract docs/introduction.md
graphify extract docs/getting-started.md
graphify extract docs/api-reference.md
2. 使用命名空間組織知識
# 將不同來源的知識分開存放
graphify extract project1/README.md --namespace="project1"
graphify extract project2/README.md --namespace="project2"
3. 驗證提取結果
# 提取後立即查詢確認結果
graphify extract README.md
graphify query "README 中提到了哪些技術?"
graphify extract 是建立知識圖譜的第一步,掌握它你就能從任何文字來源中提取結構化知識!