跳到主要內容

AI 103 · 模組 4

Semantic Chunking 與 Metadata

讓 Agent 找得到正確的一小段知識

開始第一節
已完成 0 / 6
同步我的進度加入梯次後,進度可跨裝置保存,講師也能看到

資訊

加入後,你已完成的模組編號會連同「學員代碼」傳送給講師,講師可以看到你的進度。請使用講師提供的代碼,不要輸入姓名、公司機密或其他個資。進度資料與該梯次的其他資料一起保存。

學習目標

  • 說明文件進入知識庫(Knowledge Base)之後,Agent 仍可能找不到正確答案的原因
  • 區分 Fixed-Length、Structural 與 Semantic Chunking,並以「哪些內容屬於同一個語意單位」作為切分依據
  • 為一份文件定義 Metadata 欄位與檢索過濾條件(Retrieval Filter)
  • 完成一份 Knowledge Chunk & Metadata Design

問題與準備流程

10 分鐘

文件已經進知識庫,為什麼還是找不到?

上一個單元你看到 RAG 的基本流程:先檢索,再回答。但文件「放進去」不等於「找得到」。這個單元回答:Agent 要能找到正確的一小段知識,知識在進入索引之前需要先經過哪些準備?

核心問題

文件已經進 Knowledge Base,為什麼 Agent 還是找不到正確答案?

想像一份 40 頁的請假辦法(模擬情境)。員工問:「病假需要附診斷證明嗎?」如果系統把文件從中間任意切開,檢索到的可能是「病假天數」的前半段,而必要的證明文件規定被切在另一段。答案看似有找到資料,卻是不完整的。

知識準備流程
  1. Document:取得並載入原始文件
  2. Structure:辨識標題、章節、表格與清單
  3. Chunk:依語意切成可獨立理解的片段
  4. Metadata:為每個片段標上來源、日期、版本、權限等資訊
  5. Index:建立可被搜尋的索引
  6. Retrieve:依問題與過濾條件取出相關片段

資訊

檢索的品質,很大一部分在檢索發生之前就已決定。切得好、標得清楚,Agent 才有機會找到對的內容。

重點: 找不到正確答案,常常是知識準備的問題,而不只是模型的問題。

10 分鐘

Document Loading 與 Structure:先看懂文件長什麼樣子

Document Loading 是把文件讀進系統。文件的「結構」,標題階層、章節、表格、清單、註腳,本身就帶有語意。載入時若把它們全部壓平成一長串文字,結構訊息就遺失了。

保留結構

  • 標題與章節仍可辨識
  • 表格的欄名與內容仍在一起
  • 條列項目不會被拆散
  • 之後能依結構切分,並在回答時引用章節

壓平成純文字

  • 標題被當成一般句子
  • 表格變成無法對應的數字與詞語
  • 條列順序與層次消失
  • 很難判斷一段內容屬於哪個章節

注意

載入文件前,先確認你有權使用它,並移除不必要的個人資料與機密內容。練習時請只使用模擬或已公開的文件,不要輸入公司機密、客戶個資或未經授權的資訊。

不同文件類型的結構重點不同:SOP 看步驟與前置條件,政策看條文與例外,報告看章節與圖表說明。先讀懂結構,才知道邊界可能在哪裡。

自我檢測

一份含有表格的採購辦法,載入時被整份壓平成一串純文字。最可能發生什麼問題?

一份含有表格的採購辦法,載入時被整份壓平成一串純文字。最可能發生什麼問題?

重點: 先辨識並保留文件結構,才知道內容的邊界在哪裡。

切分方式與語意單位

10 分鐘

Chunking 的三種方式:Fixed-Length、Structural、Semantic

Chunking(切分)是把長文件切成較小、可被獨立檢索的片段。常見有三種思路,它們不是誰取代誰,而是關注的問題不同。

三種 Chunking 方式比較
方式依據優點風險
Fixed-Length固定長度(字數或 token)簡單、快速、容易大量處理可能在句子或條文中間切斷
Structural標題、章節、段落等結構尊重作者的文件組織章節過長或過短時,語意仍可能不完整
Semantic內容是否屬於同一個語意單位片段可獨立理解,回答較完整需要判斷,較耗人力與理解

Chunk Size(片段大小)與 Chunk Overlap(重疊區)是調整用的參數:片段太大,容易混入不相關內容;太小,則失去上下文。適度重疊可以降低邊界被切斷的風險,但也會增加重複。這些是需要依文件與任務測試的取捨,不是有標準答案的數字。

注意

本課程不教「多少 token 就是最佳大小」這種固定規則。更重要的問題是:這一段內容,是否自成一個有意義的單位?
自我檢測

有人說:「所有文件都切成 500 token、重疊 50 token,這就是語意切分。」這個說法哪裡有問題?

有人說:「所有文件都切成 500 token、重疊 50 token,這就是語意切分。」這個說法哪裡有問題?

重點: 切分的依據是語意單位,大小與重疊只是需要測試的調整參數。

10 分鐘

哪些內容屬於同一個語意單位?

判斷邊界時,問自己:如果這段內容被單獨取出來,讀的人(或 Agent)是否能理解並正確使用它?如果需要另一段才看得懂,那兩段可能屬於同一個單位。

模擬 SOP:客訴退款處理

「適用範圍」與「前置條件」需要放在一起,否則不知道這些步驟何時適用。「步驟 1 至 4」是一個連續流程,不宜拆開。「例外情況」(例如超過退款期限)自成一個單位,而且常被單獨查詢。

  1. 找出自然段落
    先標出標題、步驟、表格與例外說明。
  2. 問「單獨看得懂嗎」
    每個候選片段獨立閱讀,是否仍能被正確理解?
  3. 把依賴的內容放在一起
    條件與其結論、名詞與其定義、步驟與其前置條件,盡量同片段。
  4. 為片段命名
    用一句話說明這個片段在回答什麼問題;說不出來,代表邊界可能不對。

資訊

切分是判斷,不是公式。最後由熟悉文件的人檢查邊界是否合理,因為只有人知道哪些內容在實際工作上必須一起看。
自我檢測

一份 SOP 的「前置條件」與「步驟」被切成兩個獨立片段。Agent 只檢索到步驟片段。可能發生什麼?

一份 SOP 的「前置條件」與「步驟」被切成兩個獨立片段。Agent 只檢索到步驟片段。可能發生什麼?

重點: 把彼此依賴、必須一起理解的內容放在同一個片段。

Metadata 與練習

10 分鐘

Metadata 與檢索過濾,以及練習

Metadata 是描述片段的資料:它是什麼、從哪來、何時、給誰。有了 Metadata,檢索不只比對文字內容,還可以縮小範圍:只找「最新版本」、「人資部門」、「公開等級」的片段。

常用 Metadata 欄位
欄位用途檢索時的問題
Source片段來自哪份文件、哪個章節這是可信的來源嗎?
Author文件的負責人或單位該找誰確認?
Date建立或更新日期資訊是否過時?
Topic主題分類是否與這次問題相關?
Document TypeSOP、政策、報告、FAQ 等需要規範還是案例?
Access Level誰可以看到提問的人是否有權閱讀?
Version文件版本是否為現行有效版本?

注意

Access Level 只是資料上的標記,不等於授權。真正的存取控制必須在伺服器端強制執行,不能只靠前端隱藏或只靠 Agent 自己判斷。
  1. 標出片段邊界
    拿一份模擬的 SOP、政策或報告,決定各個 Chunk 從哪裡到哪裡。
  2. 定義 Metadata
    為每個片段列出需要的欄位,以及各欄位怎麼填。
  3. 定義檢索過濾條件
    寫出哪些問題該套用哪些過濾,例如「只找現行版本且權限符合的片段」。
  4. 產出設計
    整理成 Knowledge Chunk & Metadata Design。練習時請不要輸入機密或個人資料。
自我檢測

兩個版本的差旅辦法都在知識庫裡,Agent 常引用到已作廢的舊版。哪一項改善最直接?

兩個版本的差旅辦法都在知識庫裡,Agent 常引用到已作廢的舊版。哪一項改善最直接?

重點: Metadata 讓檢索可以依來源、時效、版本與權限縮小範圍,但授權仍要在伺服器端強制執行。

重點回顧

5 分鐘

重點回顧

完成

好的檢索來自好的知識準備:先看懂結構,依語意切分,再用 Metadata 標清楚來源、時效與權限。
知識準備流程回顧
  1. Document
  2. Structure
  3. Chunk
  4. Metadata
  5. Index
  6. Retrieve

切分邊界與 Metadata 的設計是人的判斷。Agent 依據這些設計檢索,但設計是否合理、資料是否可信,仍由人檢查並負責。下一個單元要問:Agent 有了知識,是否就知道如何完成工作?

重點: 切分與 Metadata 由人設計並檢查,Agent 只是依此檢索。

接下來做什麼?