EN

3.5 資料塊的元資料(metadata)關聯

每一塊除了內容,還要記得它從哪來、屬於什麼,後面的過濾、引用、權限都靠它。

RAG下一篇 →

只有一段文字和它的向量還不夠。每一塊還需要附上一些描述它的資訊,叫做 metadata(元資料),也就是「關於資料的資料」。

metadata 有什麼用

1. 標出來源

模型回答時,可以說明「根據《員工手冊》第 12 頁」。這需要每一塊都記得自己的來源。第 4 章的來源歸屬就是靠它。

2. 過濾搜尋範圍

使用者可以限定「只看 2025 年以後的文件」「只找人資部的資料」。有了 metadata,檢索時可以先縮小範圍,再做相似度搜尋,結果更準也更快。

3. 權限控制

在每一塊標上「誰可以看」,檢索時只搜尋該使用者有權限的資料,沒有權限的內容完全不會被找出來。

4. 管理資料

知道每一塊來自哪份文件,當文件更新或刪除時,才能找到並更新對應的所有塊(3.6 會用到)。

5. 補充上下文

標題路徑這類 metadata,也可以放進塊的內容裡,讓檢索更準。

常見的 metadata

欄位 範例 用途
source employee-handbook.pdf 標出處、管理更新
page 12 標出處,方便使用者回去對照
headings 員工手冊 > 特別休假 標出章節,也能幫助檢索
date 2026-01-15 過濾新舊、判斷資料是否過期
author / department 人資部 過濾、權限
type 規章 / FAQ / 公告 過濾文件類型
chunk_index 3 知道它是第幾塊,可以找前後塊
access all / hr-only 權限控制

一塊資料的完整樣子,大概是:

{
    "id": "handbook-0",
    "text": "員工在同一公司服務滿六個月未滿一年者,每年有三天特別休假……",
    "metadata": {
        "source": "員工手冊.md",
        "headings": "員工手冊 > 特別休假",
        "date": "2026-01-15",
        "access": "all",
    },
}

把標題放進內容

還有一個很實用的技巧:把標題路徑直接加在塊的文字開頭再去做嵌入。

員工手冊 > 特別休假
員工在同一公司服務滿六個月未滿一年者,每年有三天特別休假……

原因是:塊的內文常常只講「滿六個月有三天」,沒提到「這是什麼的規定」。加上標題之後,向量就更能代表這一塊的主題,使用者問「特休假幾天」時比較容易找到。

設計 metadata 的原則

  • 一開始就想好:之後要補 metadata,得把整個知識庫重新處理一遍。想想未來會需要依什麼過濾、要標什麼出處。
  • 欄位名稱和格式統一:日期都用同一種格式,部門名稱不要一下用中文一下用英文,否則過濾會漏資料。
  • 只放需要的:metadata 也要存、也要搜尋,欄位太多反而增加成本。
  • 不要放敏感資料:metadata 常常會被顯示或記錄在日誌裡。
  • 權限要在載入時就標好:不要寄望之後再補,漏了就是資料外洩的風險。

注意 不同的向量資料庫對 metadata 的型態和過濾功能支援不一樣,例如有的只支援簡單的相等比對。選擇資料庫時(2.6)要一併確認。

← 全部文章