iT邦幫忙

2026 iThome 鐵人賽

DAY 8
0
AI Engineering

從零打造 RAG 系統:檢索、生成與落地全紀錄系列 第 8

[Day 08] Metadata 設計:如何讓檢索更精準

  • 分享至 

  • xImage
  •  

前言

前幾天我們專注在「怎麼切」,今天要談的是容易被忽略、卻對檢索精準度影響很大的一環:Metadata(詮釋資料)設計

什麼是 Metadata?

除了 chunk 本身的文字內容,我們通常還會附加一些額外資訊,例如:

chunk = {
    "content": "RAG 系統的三大環節是 Indexing、Retrieval、Generation...",
    "metadata": {
        "source": "day02_article.md",
        "title": "RAG 系統架構總覽",
        "section": "三大環節",
        "created_date": "2026-08-25",
        "doc_type": "技術文章",
    }
}

Metadata 能解決什麼問題?

1. 過濾式檢索(Filtered Retrieval)

單純的向量相似度搜尋,有時候會找到「語意相近但條件不符」的內容。例如使用者問「2025 年的公司規定」,若知識庫裡有新舊多個版本的規定文件,光靠語意相似度可能分不清版本新舊。這時候可以先用 Metadata 過濾(例如 created_date >= 2025),再做向量搜尋,大幅提升精準度。

SELECT content FROM chunks
WHERE metadata->>'doc_type' = '公司規定'
  AND (metadata->>'created_date')::date >= '2025-01-01'
ORDER BY embedding <=> query_embedding
LIMIT 5;

(此為 Postgres + pgvector 的查詢語法示意)

2. 引用來源標註

回答使用者問題時,附上「這個答案來自哪份文件」,讓使用者可以自行查證,也提升系統的可信度。

3. 提升排序品質

可以把 Metadata 作為 Rerank 階段的額外訊號,例如「越新的文件權重越高」、「官方文件權重高於使用者討論區內容」。

Metadata 設計原則

  1. 記錄來源可追溯性:檔名、URL、章節、頁碼
  2. 記錄時間資訊:建立/更新日期,方便處理時效性問題
  3. 記錄結構資訊:標題層級、文件類型,方便之後分類過濾
  4. 保持精簡:不是每個欄位都有用,過多的 Metadata 反而增加維護負擔

小結

Metadata 看似是附屬資訊,實際上是彌補「純語意搜尋」不足的重要工具——透過過濾、排序、來源標註,能大幅提升系統的實用性與可信度。明天我們要把前面幾天的內容整合起來,建立一個完整的前處理 Pipeline。


上一篇
[Day 07] Chunk Size 與 Overlap 的取捨實驗
下一篇
[Day 09] 前處理 Pipeline 整合與自動化
系列文
從零打造 RAG 系統:檢索、生成與落地全紀錄10
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言