跳转到内容

第 9 周:建立有来源、有版本、有权限的 RAG 语料

直接答案: RAG(Retrieval-Augmented Generation,检索增强生成)的第一步不是选向量库,而是决定系统允许依据什么、对谁可见、何时失效、冲突由谁处理。第 9 周要把这些条件写进每份文档和每个分块的元数据,生成一个可重复的语料快照;缺少所有者、权限或有效期的材料必须隔离,受限内容必须在进入模型之前排除。

先确认:为什么这个任务允许进入 RAG 实验

标题“先确认:为什么这个任务允许进入 RAG 实验”

第 7 周的一线走查和第 8 周的确定性基线,至少要留下以下决定之一:

  • [D] 允许在指定客服任务、指定角色和合成/授权资料上做只读检索实验;
  • [D] 当前不需要 RAG,应继续使用普通搜索、规则或内容治理;
  • [U] 证据不足,需要补查知识所有者、权限或更新流程。

只有第一项可以让你自己的案例进入本周。第二、三项同样是合格的 FDE 决定;保留原结论,再使用本页的北辰合成材料练习语料治理。

业务决定:是否值得做一个受限只读实验
→ 一线任务:客服要找当前、适用、自己有权查看的政策
→ 数据约束:来源、所有者、版本、有效期、冲突、ACL
→ 本周工程证据:可重复语料快照与隔离结果
→ 第 10 周:在冻结语料上定义评测合同

北辰协作案例:五类文档不能混成一个文本堆

标题“北辰协作案例:五类文档不能混成一个文本堆”

以下公司、文档、人物和结果全部是教学模拟材料

北辰知识负责人交来八份政策材料:

文档 ID 说明 关键条件 本周应进入什么状态
billing-general-v3 普通计费政策 有所有者、当前有效、普通客服可见 accepted
refund-supervisor-v2 主管例外政策 当前有效,仅主管可见 accepted_restricted
billing-general-v1 去年政策 已被 v3 取代 expired
price-difference-east-v5 华东套餐变更价差结算 有所有者、当前有效、普通客服可见 accepted
upgrade-east-v2 华东升级政策 当前有效 conflict_review
upgrade-notice-v4 同一事项的通知 当前有效,但与 v2 条件冲突 conflict_review
quick-note.txt 个人笔记 没有正式所有者和有效期 quarantined
special-refund-copy.md 复制的主管条款 正文存在,但 ACL 丢失 quarantined

初学者常把它们全部解析成纯文本,再让模型“注意权限和日期”。这样已经太晚:模型上下文中出现了不该出现的内容,提示词不能把一次越权读取变成安全读取。

最小心智模型:语料快照不是文档文件夹

标题“最小心智模型:语料快照不是文档文件夹”

一个可用于 RAG 实验的语料快照包含三层:

事实来源与所有者
→ 文档级合同:版本、有效期、分类、ACL、状态
→ 分块级继承:chunk 不能丢失文档的身份和限制

首次出现的几个词:

  • Corpus(语料):本次实验允许检索的知识集合,不等于组织所有文档。
  • Snapshot(快照):某一时刻、某一配置下不可混写的语料版本。
  • ACL(Access Control List,访问控制列表):哪些角色或属性允许读取该材料。它必须由可信身份和查询层执行。
  • Quarantine(隔离):材料被保留供修复,但不能作为可靠回答依据。
  • Chunk(分块):检索使用的较小文本单元。分块后仍必须知道自己来自哪份文档、什么版本、对谁可见。

默认规则: 缺少所有者、ACL、版本或有效期时,不按公开和有效处理;进入隔离,直到有权角色修复。

先看完成品:填写完整的语料记录

标题“先看完成品:填写完整的语料记录”

下面是 billing-general-v3 的完整教学记录:

{
"document_id": "billing-general-v3",
"source_uri": "teaching://northstar/policies/billing-general-v3",
"source_owner": "billing-policy-owner",
"content_hash": "teaching-hash-billing-general-v3",
"version": "3",
"effective_at": "2026-08-01T00:00:00+08:00",
"expires_at": null,
"supersedes": "billing-general-v1",
"classification": "internal-general",
"allowed_roles": ["support-agent", "support-supervisor"],
"status": "accepted",
"ingested_at": "2026-08-25T10:00:00+08:00",
"parser_version": "teaching-parser-v1",
"chunker_version": "fixed-heading-chunker-v1",
"synthetic": true
}

示例 URI、hash、日期和版本是为了展示一个已填写完成品,不对应真实系统。你的记录要替换成实际可核对的值,并遵守数据保留和分享范围。

一个分块必须原子继承限制:

{
"chunk_id": "billing-general-v3#section-04",
"document_id": "billing-general-v3",
"text": "套餐升级后的差价处理以购买地区和生效日期为准……",
"version": "3",
"effective_at": "2026-08-01T00:00:00+08:00",
"classification": "internal-general",
"allowed_roles": ["support-agent", "support-supervisor"],
"corpus_snapshot": "northstar-corpus-teaching-v1",
"synthetic": true
}

如果一个 chunk 混合了普通条款和主管条款,不能只给它普通权限。选择最严格权限,或回到来源边界重新切分。

完整示例:从接收到候选检查

标题“完整示例:从接收到候选检查”

第一步:写来源与责任矩阵

标题“第一步:写来源与责任矩阵”
文档 谁能确认正文 谁能确认权限 谁能确认有效期 信息不足时的动作
普通计费政策 计费知识所有者 IT / 安全角色 计费知识所有者 隔离
主管例外政策 主管流程所有者 IT / 安全角色 主管流程所有者 隔离
群通知 发布者只能证明发过消息 不能自行确认 正式知识所有者 标记冲突或隔离
个人笔记 笔记作者只能解释用途 不能授予组织权限 不能确认 隔离

这张表防止“文件在共享盘里,所以应该能用”的推断。

第二步:把每份文档路由到明确状态

标题“第二步:把每份文档路由到明确状态”
来源在允许范围?
否 → quarantined
是 → 有所有者、ACL、版本、有效期?
否 → quarantined
是 → 已过期或被替代?
是 → expired
否 → 与其他当前来源冲突?
是 → conflict_review
否 → accepted / accepted_restricted

冲突材料可以保留在快照中,用于以后测试系统能否识别冲突;但它不能被标成“可靠且唯一的当前答案”。

第三步:固定一次确定性分块

标题“第三步:固定一次确定性分块”

本周不比较分块策略。选择一种与你文档结构相符、可以重复执行的规则,例如按固定标题边界切分;记录规则版本。相同来源、相同规则和相同配置应产生相同 chunk ID 集合。

检查两次构建:

第一次:northstar-corpus-teaching-v1 → 18 个 chunks
第二次:northstar-corpus-teaching-v1 → 18 个相同 chunk IDs

数量相同还不够;要比较文档 ID、chunk ID、内容摘要和权限元数据。

第四步:在任何模型调用前检查角色候选

标题“第四步:在任何模型调用前检查角色候选”

使用你现有系统可以检查原始候选的方式,不要求特定数据库或检索产品。对于固定北辰快照,预期是:

身份 可以出现 不能出现
普通客服 billing-general-v3、其允许的当前普通来源 refund-supervisor-v2、隔离文档、过期文档
客服主管 普通来源、允许的主管来源 隔离文档、无权业务单元材料
未知角色 无可靠候选 所有受限正文和敏感元数据

若普通客服候选中出现主管 chunk,本周直接失败。不要继续做 embedding,也不要尝试用提示词遮盖。

第五步:让知识所有者或可信模拟角色回读

标题“第五步:让知识所有者或可信模拟角色回读”

回读问题不是“这个语料库够智能吗”,而是:

  1. 哪一份材料是正式来源?
  2. 哪个字段决定当前有效?
  3. 谁能修改、下线或解决冲突?
  4. 一线遇到冲突时当前怎样升级?
  5. 哪些内容即使相关,也不允许进入普通客服上下文?

真实参与者必须知道用途、记录方式和可见范围,并可以纠正、停止和撤回。没有真实权限时,只使用本页合成材料,并标为模拟走查。

轮到你:五天最小路径

标题“轮到你:五天最小路径”

本页没有提供可下载的文档包或摄取脚本,也不规定解析器、数据库或向量库。你可以用自己的获准资料;没有资料权限时,直接复制本页的八条合成文档元数据,在你自己的最小格式中完成治理练习,不要伪造真实文件内容。

学习日 建议时间 动作 离开前必须有的证据
第 1 天 1–2 小时 复核 RAG 是否获准,并比较普通搜索、内容治理、RAG 或停止 一页 option note 与有权决定/模拟标签
第 2 天 2 小时 建来源、所有者、版本、生效期、分类和角色矩阵 corpus contract v1
第 3 天 2 小时 复用已有数据入口,产生确定性文档与 chunk manifest corpus manifest 与快照摘要
第 4 天 2 小时 重复构建并检查普通、主管、未知角色的原始候选 ingestion/isolation report
第 5 天 1–2 小时 做知识所有者回读或模拟,记录确认、冲突、未知与限制 corpus card v1 与回读记录
week-09/
option-note-v1.md
knowledge-owner-acl-matrix-v1.md
corpus-card-v1.md
corpus-manifest-v1.json
ingestion-isolation-report-v1.md
role-candidate-check-v1.md
source-review-note-v1.md

corpus-card-v1.md 至少回答:语料服务哪个任务、来源从哪里来、谁负责、快照日期是什么、怎样更新和下线、有哪些角色、哪些状态不允许回答,以及当前材料不能代表哪些真实分布。

  • 本周使用的业务决定、Brief、流程和权限版本已记录;
  • 每份文档和每个 chunk 可追溯到来源、所有者和版本;
  • 缺少所有者、ACL、版本或有效期的材料默认隔离;
  • 过期、被替代、冲突和未知状态没有被更新时间或文件名掩盖;
  • 同一输入与配置可以生成相同文档与 chunk 清单;
  • 普通角色的原始候选在模型调用前已经排除受限内容;
  • 混合权限 chunk 使用最严格权限或重新切分;
  • 真实材料有合法访问与使用范围,普通仓库不含客户正文或密钥;
  • 回读记录说明参与者保护、模拟边界以及会更新或停止 RAG 的新证据;
  • 结论没有把“语料可构建”写成“RAG 会改善任务”。
失败 诊断信号 恢复动作
文档能打开就当正式来源 没有所有者、版本或下线规则 隔离,找有权角色确认来源合同
分块后只剩正文 chunk 找不到 document ID 或 ACL 停止构建,让限制随 chunk 原子继承
“最新修改”被当成“当前生效” 更新时间晚,但没有正式生效关系 使用 effective、expires 和 supersedes 关系
删除过期材料掩盖风险 无法测试旧内容或索引延迟 保留状态和来源记录,但不作为可靠答案
先全库召回再过滤 普通角色的原始候选出现主管内容 将 ACL 下推到存储或查询层
混合权限 chunk 按宽权限处理 普通正文里夹带主管条款 采用最严格权限或回到来源重新切分
语料有冲突仍继续调模型 团队希望模型自行选一个答案 先指定所有者和升级路径,保留冲突状态

独立迁移:供应链 ETA SOP

标题“独立迁移:供应链 ETA SOP”

一家供应链团队提供:正式承运商 SOP、仓库群通知、外包人员不可见的内部备注、一份上季度旧流程,以及一份没有所有者的个人表格说明。

你的任务:

  1. 为五份材料填写来源、所有者、版本、有效期、分类和角色;
  2. 决定每份材料进入 acceptedaccepted_restrictedexpiredconflict_reviewquarantined
  3. 写出普通计划员与外包计划员的候选差异;
  4. 选择一个混合权限段落并决定最严格权限或重新切分;
  5. 写出一条会让你停止 RAG、先做内容治理的证据。
查看答案检查点
  • 群通知证明消息存在,不自动成为正式 SOP。
  • 内部备注即使相关,也不能进入外包角色候选。
  • 上季度流程需要明确失效或被替代关系,不能只看文件名。
  • 没有所有者的个人表格说明应隔离,不按公开材料处理。
  • 如果两个当前正式来源持续冲突且没有责任人,先治理内容比调检索更合理。

用同一证据向三类人解释

标题“用同一证据向三类人解释”
  • 老板版: 当前证明了哪些知识可以被受限实验使用,以及内容治理、维护责任和停止条件;没有证明 RAG 质量或业务收益。
  • 一线版: 答案以后必须显示来源与有效时间;遇到过期、冲突、无权限或无答案时仍可拒绝和升级。
  • 工程版: source、owner、version、effective/expiry、classification、ACL、chunk 和 snapshot 怎样形成可重复、默认拒绝的数据边界。

北辰协作、文档 ID、来源 URI、日期、角色、hash、分块数量和状态全部是合成教学材料。状态名、字段组合和五类路由是本教程的教学设计,不是行业统一标准。真实组织必须由其业务、数据和安全责任人确定权限、保留、删除和合法用途。