官方技能 · AI 實務
從文件擷取知識圖譜
從文件擷取實體和關係,整理成附原文引句和信心程度的三元組,合併名稱,輸出可轉成 CSV 的表格和 Mermaid 圖。
可在 Claude、ChatGPT 和程式設計代理中使用。使用 Team 和 Business 方案時,我們改進官方技能後,你 Pod 裡的這個技能會自動更新。
適用情境
- 想跨大量文件整理人、公司和產品之間的關係
- 需要給圖形工具或 RAG 系統用的 CSV
你要提供的內容
- 文件或貼上的文字
- 重要的實體類型和關係
- 現有的標準名稱清單(選填)
你會得到的內容
一張實體表、一張附引句和信心程度的三元組表、一張 Mermaid 圖,以及關於重複實體的待釐清問題。
運作方式
- 先固定實體類型和述詞 寫成一份簡短清單:類型用英文單數名詞(Person、Company、Product、Project),述詞用小寫英文動詞片語(works_at、uses、owns、reports_to),方便匯入工具。一個意思只用一個述詞;「受僱於」和「在……工作」都寫成 works_at。
- 逐句擷取三元組 只取句子明確說出的內容。每個三元組包含:主詞、述詞、受詞、一字不差的來源引句(60 字以內)、文件和位置。不要因為兩者出現得很近就推論有關係(「在同一段被提到」不是關係)。
- 評定信心程度 高:直接寫明(「美雅負責 Orbit 專案」)。中:有寫,但語氣保留或是間接的(「美雅現在好像在帶 Orbit」)。低:從上下文推斷。這個技能的預設值:低信心的三元組保留在表格裡,但不放進圖。
- 把重複的實體合併到標準名稱 把各種寫法(「Acme」「ACME Corp.」「Acme 公司」)歸到同一個標準名稱下,並記下別名。同名但不同的東西加上區別說明(「Mercury(專案)」「Mercury(供應商)」)。不確定兩個名稱是不是同一個實體時,分開保留,並列為待釐清問題。
- 檢查矛盾 兩個不可能同時成立的三元組(美雅 reports_to 志強;美雅 reports_to 雅琪),連同兩邊的來源和日期一起標出來。只有在文件有日期時才採用較新的來源;否則保持未決。
- 寫出輸出 一張實體表、一張可直接轉成 CSV 的三元組表(沒有合併儲存格,一個三元組一列),以及一張只含高、中信心三元組的 Mermaid 流程圖。在 Mermaid 裡,含空格或括號的標籤要加雙引號,而且絕不能用單獨的 end 當節點 id。
SKILL.md 檔案
完整檔案,就是你的 AI 讀到的內容。 下載檔案
---
name: knowledge-graph-extraction
description: 從文件中擷取實體和關係,整理成知識圖譜:實體類型、附上原文引句和信心程度的「主詞—述詞—受詞」三元組(triple),並把重複的實體合併到同一個標準名稱下,輸出為可直接轉成 CSV 的表格和 Mermaid 圖。適用於有人要整理誰和誰合作、哪些客戶用哪些產品、把文件變成知識圖譜、擷取實體和關係、從筆記建立圖譜,或為 GraphRAG、Neo4j 準備資料時。
---
# 從文件擷取知識圖譜
知識圖譜是一組「主詞—述詞—受詞」形式的陳述(「Acme 公司 — 使用 — Ledgerly」),和 W3C RDF 三元組是同樣的三段結構。只有每條陳述都能追溯到來源句子、同一個東西永遠用同一個名稱時,它才有用。所以這裡的每個三元組都附上引句和信心程度,而且在畫圖之前先合併重複的實體。
## 適用情境
- 把會議記錄、合約、CRM 筆記或報告,整理成一張人、公司、產品以及彼此關係的地圖。
- 準備要匯入圖形工具(Neo4j、Kumu、試算表樞紐分析)或 RAG 系統的 CSV。
- 跨大量文件回答「誰和什麼有關?」。
- 不適用於從零設計一個領域的類別和規則:如果還不知道實體類型,請先用 ontology-draft。
## 需要準備
- 文件或貼上的文字。替它們編號(D1、D2……),讓每個三元組都能標出來源。
- 重要的實體類型和關係。沒有提供時,讀第一遍後提出 4 到 8 種實體類型和 5 到 10 個述詞,標上「[提案]」,然後繼續。
- 現有的標準名稱清單(客戶名單、員工通訊錄)。沒有的話,在步驟 4 建立一份。
## 步驟
1. **先固定實體類型和述詞。** 寫成一份簡短清單:類型用英文單數名詞(Person、Company、Product、Project),述詞用小寫英文動詞片語(works_at、uses、owns、reports_to),方便匯入工具。一個意思只用一個述詞;「受僱於」和「在……工作」都寫成 works_at。
2. **逐句擷取三元組。** 只取句子明確說出的內容。每個三元組包含:主詞、述詞、受詞、一字不差的來源引句(60 字以內)、文件和位置。不要因為兩者出現得很近就推論有關係(「在同一段被提到」不是關係)。
3. **評定信心程度。** 高:直接寫明(「美雅負責 Orbit 專案」)。中:有寫,但語氣保留或是間接的(「美雅現在好像在帶 Orbit」)。低:從上下文推斷。這個技能的預設值:低信心的三元組保留在表格裡,但不放進圖。
4. **把重複的實體合併到標準名稱。** 把各種寫法(「Acme」「ACME Corp.」「Acme 公司」)歸到同一個標準名稱下,並記下別名。同名但不同的東西加上區別說明(「Mercury(專案)」「Mercury(供應商)」)。不確定兩個名稱是不是同一個實體時,分開保留,並列為待釐清問題。
5. **檢查矛盾。** 兩個不可能同時成立的三元組(美雅 reports_to 志強;美雅 reports_to 雅琪),連同兩邊的來源和日期一起標出來。只有在文件有日期時才採用較新的來源;否則保持未決。
6. **寫出輸出。** 一張實體表、一張可直接轉成 CSV 的三元組表(沒有合併儲存格,一個三元組一列),以及一張只含高、中信心三元組的 Mermaid 流程圖。在 Mermaid 裡,含空格或括號的標籤要加雙引號,而且絕不能用單獨的 end 當節點 id。
## 輸出格式
````markdown
## 實體
| id | canonical_name | type | aliases |
|---|---|---|---|
| E1 | [名稱] | [類型] | [別名; 別名] |
## 三元組
| subject | predicate | object | confidence | source_quote | source |
|---|---|---|---|---|---|
| [標準名稱] | [述詞] | [標準名稱] | high/medium/low | 「[原文引句]」 | D[n],[段落/行] |
## 圖(只含高、中信心)
```mermaid
flowchart LR
E1["[名稱]"] -->|[述詞]| E2["[名稱]"]
```
## 待釐清問題
- [可能重複/矛盾/關係不明],來源 D[n]、D[n]
````
(表頭和 confidence 的值保留英文,方便匯入 Neo4j 等工具;內容用中文。)
## 範例
**輸入:**
D1(通話記錄,5月3日):「光浪科技的陳美雅說,他們已經在財務團隊導入 Ledgerly。他們的財務長白志強已經簽核。」
D2(電子郵件,5月10日):「光浪科技股份有限公司想加購 Ledgerly Reports。美雅提到子晴可能會接手這個專案。」
**輸出:**
````markdown
## 實體
| id | canonical_name | type | aliases |
|---|---|---|---|
| E1 | 光浪科技 | Company | 光浪科技股份有限公司 |
| E2 | 陳美雅 | Person | 美雅 |
| E3 | 白志強 | Person | |
| E4 | Ledgerly | Product | |
| E5 | Ledgerly Reports | Product | |
| E6 | 子晴 | Person | |
| E7 | Ledgerly 導入 | Project | |
| E8 | Ledgerly 專案 | Project | |
## 三元組
| subject | predicate | object | confidence | source_quote | source |
|---|---|---|---|---|---|
| 陳美雅 | works_at | 光浪科技 | high | 「光浪科技的陳美雅」 | D1,第 1 句 |
| 光浪科技 | uses | Ledgerly | high | 「他們已經在財務團隊導入 Ledgerly」 | D1,第 1 句 |
| 白志強 | works_at | 光浪科技 | high | 「他們的財務長白志強」 | D1,第 2 句 |
| 白志強 | approved | Ledgerly 導入 | high | 「白志強已經簽核」 | D1,第 2 句 |
| 光浪科技 | interested_in | Ledgerly Reports | high | 「想加購 Ledgerly Reports」 | D2,第 1 句 |
| 子晴 | may_lead | Ledgerly 專案 | medium | 「子晴可能會接手這個專案」 | D2,第 2 句 |
## 圖(只含高、中信心)
```mermaid
flowchart LR
E2["陳美雅"] -->|works_at| E1["光浪科技"]
E3["白志強"] -->|works_at| E1
E1 -->|uses| E4["Ledgerly"]
E1 -->|interested_in| E5["Ledgerly Reports"]
E3 -->|approved| E7["Ledgerly 導入"]
E6["子晴"] -->|may_lead| E8["Ledgerly 專案"]
```
## 待釐清問題
- 子晴是在光浪科技工作,還是在我們公司?D2 沒有說。
- 「Ledgerly 導入」和「Ledgerly 專案」可能是同一個專案;目前分開保留。
````
## 寄出前檢查
- [ ] 每個三元組都有一字不差的引句,而且引句確實出現在標示的文件中。
- [ ] 每個真實世界的實體只用一個標準名稱,並列出別名。
- [ ] 一個意思只用一個述詞;沒有兩個述詞是同一個意思。
- [ ] 圖裡只有高、中信心的三元組,而且是能正常顯示的 Mermaid。
- [ ] 可能的重複和矛盾都列為待釐清問題,沒有默默合併。
## 常見錯誤
- 把同時出現當成關係。兩個名字出現在同一段,除非有句子說明兩者怎麼相關,否則不算有關係。
- 讓述詞清單膨脹到 40 個意思相近的詞。擷取之前先合併。
- 把每個三元組都畫出來。超過大約 30 條邊的圖就看不懂了;請依實體或類型拆開。
分享給你的團隊
把它加入 AI Skill Pod,團隊每個人(外包人員也包括在內)都能從自己的 AI 使用同一個版本。 看看和團隊分享 AI 技能的最佳做法
更新紀錄
- v1.0.0 · · First release.
參考來源
- RDF 1.1 Concepts and Abstract Syntax (2026-11-04 查閱)
- Welcome - GraphRAG (2026-11-04 查閱)
- Flowcharts Syntax | Mermaid (2026-11-04 查閱)
- Ontology Development 101: A Guide to Creating Your First Ontology (2026-11-04 查閱)