第二章 · 元数据的作用与管理

本章定位:上一章讲完「怎么把文档切成块」,但光有文本内容还不够——一个裸的 chunk 就像一张没有标签的档案卡,你不知道它来自哪份文档、属于哪个章节、谁能看、出错了怎么定位。元数据(Metadata)就是给每个 chunk 贴上的「标签」,它让 RAG 系统从「能用」升级到「好用」。

本章分两部分:

  • 上篇 · 概念与场景(科普):为什么只有文本不够?元数据到底是什么?企业场景下常见的元数据字段分哪几类?元数据的三大核心应用场景是什么?设计元数据有哪些最佳实践?——看完你会「懂为什么需要元数据」。
  • 下篇 · SparkX 源码落地(实践):SparkX 把元数据存在哪?写入了哪些 key?检索时怎么消费这些 key?以及源码里的设计亮点。——看完你会「懂 SparkX 怎么做」。

上篇 · 概念与场景

一、为什么只有文本内容还不够?

假设你在一家公司做企业知识库问答系统。知识库里有产品需求文档、人事薪酬政策、财务预算、员工手册。系统上线后,你陆续撞上三个痛点。

痛点一:用户问「这个规则的依据是什么」,系统答不上来

用户问「新员工试用期多久」,系统回答「3 个月」。用户追问「这个规定在哪份文档里?第几页?」——系统哑火了,因为它只存了文本,不知道这段话来自哪。

缺的是「文档标识」元数据doc_idfile_namesource_url、章节、页码。

痛点二:不同部门的员工看到了不该看的敏感信息

技术部的小李问「公司年终奖怎么算」,系统把人事部的内部薪酬文档返回给了他——敏感信息泄露。原因是检索时没做权限过滤,所有 chunk 一视同仁。

缺的是「权限控制」元数据access_departmentsaccess_rolessensitivity_level

痛点三:发现答案有误,但找不到是哪个 chunk 出了问题

用户反馈「系统答的退货政策过时了」,你想去定位是哪个 chunk 的内容旧了。但库里几万个 chunk,每个只有文本,你根本不知道哪个 chunk 对应哪份文档的哪个位置——大海捞针。

缺的是「位置追溯」元数据document_idchunk_index、原文偏移量。

这三个痛点指向同一件事:chunk 不能只有文本,必须带「身份信息」。这就是元数据要解决的问题。


二、元数据到底在干什么

1. 元数据在 RAG 流程中的位置

原始文件 → ① 解析 → 纯文本 → ② 分块 → 文本块 → ③ 贴元数据 → ④ 向量化 → 入库
                                                       ↑
                                                   本章重点
用户提问 → 检索(用元数据过滤)→ 召回块(带元数据)→ 生成答案(用元数据生成引用)

元数据紧接在分块之后、向量化之前写入,一路跟随 chunk 走完整个生命周期——入库时写入、检索时过滤、生成时引用、运维时定位。

2. 元数据的本质:给每个 chunk 贴标签

元数据就是「描述数据的数据」。一个完整的 chunk 长这样:

{
  "content": "新员工试用期为 3 个月,试用期内工资为正式工资的 80%。",
  "metadata": {
---

## 🔒 以上为本章部分预览(约 10%)

> 本章剩余 **90%** 内容包含:关键源码逐行拆解、设计细节与工程权衡、代码示例与生产实践要点。

<div class="unlock-cta">
  <button class="unlock-btn" onclick="openModal()">
    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2">
      <rect x="3" y="11" width="18" height="11" rx="2"/>
      <path d="M7 11V7a5 5 0 0 1 10 0v4"/>
    </svg>
    🔑 点击解锁本章完整内容
  </button>
  <span class="unlock-hint">加入知识星球,获取《SparkX 源码深度解析》全部 13 章</span>
</div>

> 💡 **本次展示的仅为部分预览内容(约 10%)**。完整的源码深度解析包含每一个技术点的完整实现细节。点击上方按钮扫码加入知识星球,解锁全部内容。
🔒

本章为知识星球会员专属内容

完整源码解析、设计决策与落地实践,加入知识星球即可解锁全部章节。

知识星球
🌟 加入知识星球
解锁源码与设计详解
知识星球二维码 了解详情