原始文档元数据metadata

目录

[1. 举个最直观的例子](#1. 举个最直观的例子)

[2. 为什么叫"原始"](#2. 为什么叫“原始”)

[3. 在 RAG / Agent 里它有什么用](#3. 在 RAG / Agent 里它有什么用)

第一种用途:做过滤

第二种用途:做引用

第三种用途:做排序

第四种用途:做权限或状态控制

[4. 它和 chunk metadata 有什么区别](#4. 它和 chunk metadata 有什么区别)

文档元数据

[chunk metadata](#chunk metadata)

[5. 在数据库里一般怎么存](#5. 在数据库里一般怎么存)

[6. 你做 Agent 项目时可以怎么理解](#6. 你做 Agent 项目时可以怎么理解)

[7. 你可以先这样记](#7. 你可以先这样记)


"原始文档元数据"就是:

描述一篇文档本身的信息,但不是文档正文内容。

你可以把它理解成:

文档内容是"书里的文字",元数据是"这本书的封面信息、标签、编号、来源说明"。


1. 举个最直观的例子

假设你有一篇产业报告:

文档正文内容:

2025 年中国新能源车产业链进入新一轮产能调整阶段......

这部分是真正的文本内容。

而它对应的原始文档元数据可能是:

复制代码
{
  "title": "2025中国新能源车产业链研究报告",
  "source": "某证券研究所",
  "source_type": "pdf",
  "author": "研究团队A",
  "published_at": "2025-11-01",
  "industry": "新能源车",
  "document_status": "active",
  "url": "https://xxx.com/report.pdf"
}

这些信息就叫原始文档元数据。


2. 为什么叫"原始"

因为它是文档这一层自带的基础属性,还没有切 chunk、还没做 embedding、还没做检索加工。

也就是:

  • 文档刚入库时就有的描述信息

  • 用来标识"这篇文档是谁、从哪来、属于什么类型"

所以叫"原始文档元数据"。


3. 在 RAG / Agent 里它有什么用

它非常有用,不是装饰品。

第一种用途:做过滤

比如用户问:

只看最近三个月的医药行业报告

你就可以根据元数据过滤:

  • industry = 医药

  • published_at >= 某个日期


第二种用途:做引用

回答时你可以告诉用户:

  • 来源:某证券研究所

  • 发布时间:2025-11-01

  • 文档标题:xxx

这比"我从某个神秘文本里看出来的"靠谱多了。


第三种用途:做排序

比如你可以让系统优先选择:

  • 更新时间更近的文档

  • 来源更权威的文档

  • 状态为 active 的文档


第四种用途:做权限或状态控制

例如:

  • document_status = active

  • document_status = archived

  • document_status = deleted

这样系统就知道哪些文档还能检索,哪些不能用了。


4. 它和 chunk metadata 有什么区别

这个区别很关键。

文档元数据

描述的是整篇文档

例如:

  • 标题

  • 作者

  • 来源

  • 发布时间

  • 行业

  • 文档状态

chunk metadata

描述的是某个切片

例如:

  • 第几个 chunk

  • 这一段在第几页

  • 这一段属于哪个章节

  • 字符范围/段落范围

比如:

复制代码
{
  "document_id": 12,
  "chunk_index": 5,
  "page": 8,
  "section_title": "市场空间分析"
}

所以:

  • 原始文档元数据 = 文档级信息

  • chunk metadata = 切片级信息


5. 在数据库里一般怎么存

通常在 documents 表里放原始文档元数据。

比如:

复制代码
CREATE TABLE documents (
    id BIGSERIAL PRIMARY KEY,
    title VARCHAR(255) NOT NULL,
    source VARCHAR(255),
    source_type VARCHAR(50),
    document_status VARCHAR(50),
    metadata JSONB,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

其中这个 metadata JSONB 就常用来存灵活的原始文档元数据,比如:

复制代码
{
  "author": "研究团队A",
  "published_at": "2025-11-01",
  "industry": "新能源车",
  "region": "中国"
}

6. 你做 Agent 项目时可以怎么理解

一句很务实的话:

正文是给模型看的,元数据是给系统管控和检索策略看的。

模型主要读正文内容。

系统主要利用元数据来:

  • 过滤

  • 排序

  • 追踪来源

  • 生成引用

  • 做权限控制

所以元数据像文档的"身份证 + 标签系统"。


7. 你可以先这样记

最简单的记忆法:

  • content:文档写了什么

  • metadata:文档是什么、从哪来、属于谁、能不能用

相关推荐
程序员大阳6 小时前
副队长JavaScript教程(49)-主动抛出异常与错误类型
javascript·异常处理·error·throw·错误类型
古法老登瞎折腾6 小时前
大数据智能运维实战(十一):运维 MCP 的工程化——权限、限流、审计与错误处理
java·大数据·运维·spring ai·mcp
hhhjhl6 小时前
Protobuf.js 跨端三方库仓颉适配全流程
javascript·网络·udp
康小汪6 小时前
AI 写 Vue 总写成同一个味道:给它装 Skills,装的不是知识是边界
前端·vue.js·人工智能·ai编程·最佳实践
智能运维指南7 小时前
研制过程“两张皮“怎么破:研制一体化支撑平台的定位、能力边界与落地前提
java·前端·人工智能·嘉为蓝鲸
yz_aiks8 小时前
Spring AI 2.1 ChatMemory 已过时用什么替代:迁移到 Session Memory 实战(JDBC 存储与会话压缩)
java·spring boot·大模型·ai agent·spring ai
金銀銅鐵8 小时前
[Java] 用 GUI 展示 EnumMap 增删键值对时的内部变化
java·后端·ai编程
学长毕设8 小时前
基于SpringBoot的上门洗车服务系统设计与实现
java·spring boot·后端
jason成都8 小时前
RTKLIB-Java 多基线联合RTK:FIX率从0%到91.5%的三层根因修复
java·gnss·rtklib·rtklib_java
鱼宵9 小时前
Stream 终端操作一次讲透:collect、count、reduce 怎么选
java·stream·终端操作