第 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 天 | 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.mdcorpus-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、仓库群通知、外包人员不可见的内部备注、一份上季度旧流程,以及一份没有所有者的个人表格说明。
你的任务:
- 为五份材料填写来源、所有者、版本、有效期、分类和角色;
- 决定每份材料进入
accepted、accepted_restricted、expired、conflict_review或quarantined; - 写出普通计划员与外包计划员的候选差异;
- 选择一个混合权限段落并决定最严格权限或重新切分;
- 写出一条会让你停止 RAG、先做内容治理的证据。
查看答案检查点
- 群通知证明消息存在,不自动成为正式 SOP。
- 内部备注即使相关,也不能进入外包角色候选。
- 上季度流程需要明确失效或被替代关系,不能只看文件名。
- 没有所有者的个人表格说明应隔离,不按公开材料处理。
- 如果两个当前正式来源持续冲突且没有责任人,先治理内容比调检索更合理。
用同一证据向三类人解释
标题“用同一证据向三类人解释”- 老板版: 当前证明了哪些知识可以被受限实验使用,以及内容治理、维护责任和停止条件;没有证明 RAG 质量或业务收益。
- 一线版: 答案以后必须显示来源与有效时间;遇到过期、冲突、无权限或无答案时仍可拒绝和升级。
- 工程版: source、owner、version、effective/expiry、classification、ACL、chunk 和 snapshot 怎样形成可重复、默认拒绝的数据边界。
相邻周
标题“相邻周”- 上一步: 第 8 周:重复部署与回滚提供本周要冻结的确定性基线。
- 下一步: 第 10 周:先定义评测合同只使用本周冻结的 corpus manifest 与权限元数据。
来源与事实边界
标题“来源与事实边界”- 企业 RAG + MCP 助手项目合同:公开的数据与 RAG 合同、文档元数据、ACL、摄取门槛和可重建索引要求。
- Google PAIR — Identify user needs and AI strengths:从用户任务和现有流程判断 AI 是否适用,而不是从工具开始。
- 资料来源与事实边界:本课程对 AI 资料、版本变化和模拟材料的引用原则。
北辰协作、文档 ID、来源 URI、日期、角色、hash、分块数量和状态全部是合成教学材料。状态名、字段组合和五类路由是本教程的教学设计,不是行业统一标准。真实组织必须由其业务、数据和安全责任人确定权限、保留、删除和合法用途。