本实践的产出 ⭐ 最小产出:构造一次错误召回实验,观察错误上下文如何诱发错误答案 完整产出:检索通道对照 + 错误注入实验 + 可核验回答格式 + 本仓知识系统职责边界图
预计投入:5~7 小时。语料直接用本仓真实文档,不要用玩具数据——玩具数据看不出真实的失败模式。
语料:从 产品文档/、代码逻辑/、wiki/concepts/ 各取 30~50 段,混成一个语料库。必须包含:
查询集:15~20 条,覆盖四类:
| 类型 | 例子 | 预期谁赢 |
|---|---|---|
| 同义改写 | "退票要交多少钱" vs 原文"退改手续费" | 向量 |
| 专有编号 | "MU5101 的行李规则" | 关键词 |
| 方向敏感 | "东京到上海" vs "上海到东京" | 都可能失手 |
| 否定/限定 | "不可退改的舱位有哪些" | 都可能失手 |
记录表:
| 查询 | 类型 | 关键词 Top-3 | 向量 Top-3 | 混合+重排 Top-3 | 正确答案在第几位 |
|---|
要看到的现象:
验收:能列出"三类必须靠检索之外手段解决的查询形态",并给出各自的解法。
这是本阶段最重要的一个实验,因为它演示的是 Agent 里最难被发现的一类故障。
做法:
记录表:
| 上下文 | 回答是否正确 | 模型有没有表达不确定 | 有没有指出上下文有冲突 |
|---|---|---|---|
| A 正确 | |||
| B 错误 | |||
| C 冲突 |
要看到的现象(这三条现象是本实验的全部价值):
第二轮改进实验:给每段上下文加上 来源 与 生效时间 元数据,并在系统提示词里写"当上下文冲突时,以生效时间更晚的为准,并显式说明存在冲突"。重跑 C,看改善幅度。
验收:
设计一套知识问答的输出格式,并用实践 2 的三种上下文验证它。
格式要求(结构化输出,不是提示词约定):
验收:
置信度字段的常见陷阱 直接让模型自评"你有多确定",结果通常没什么区分度。更有效的做法是把它拆成可判定的子问题:引用条数是否 ≥1?引用是否直接包含答案?是否存在冲突?文档时间是否在有效期内?——由这几个布尔量推出置信度,而不是让模型凭感觉打分。
任务:画一张图 + 一张决策表,回答"一个问题该问谁"。
涉及的系统(CLAUDE.md 里已定义,这里是把它内化):
| 系统 | 内容 | 权威性 | 何时用 |
|---|---|---|---|
| Vault 原始文档 | 手写 PRD / 分析 / 会议记录 | 一手 | |
| wiki/concepts/ | LLM 编译的概念文章 | 派生 | |
| GBrain | 跨源语义检索(Outline / vault / sessions / 研究摘要 / 需求实现日志) | 派生 | |
| vfticket codescope | 各代码仓最新分支实时问答 | 一手(代码) | |
| 本地代码镜像 | 冻结快照 | 过时 |
必须在图上表达的三件事:
决策表:
| 问题类型 | 先问谁 | 落地前必须核对 |
|---|---|---|
| 业务概念是什么 | ||
| 某个流程历史上为什么这么设计 | ||
| 线上代码现在怎么实现的 | ||
| 某个字段的取值范围 | ||
| 上次那个需求最后怎么改的 |
验收:
这一实践的元价值 你正在用的这套知识库,本身就是一个完整的 RAG 系统 + 记忆系统。分析它比分析任何教科书案例都有效,因为你知道它每一层是怎么建起来的、在哪出过错。
| 维度 | 阶段 3 的问法 |
|---|---|
| 解释 | 给同事讲清"为什么我们不能直接信 wiki 文章" |
| 画图 | 八环节 RAG 链路图 + 本仓知识系统关系图 |
| 比较 | 关键词/向量/混合三种检索,各给一个必须用它的业务查询 |
| 实践 | 错误注入实验有数据,且看到了"自信地答错" |
| 评测 | 能分别定义"检索指标"和"回答指标",说明为什么要分开 |
| 产品化 | 可核验回答格式能落到一个真实问答产品上 |
| 迁移 | 把语料换成支付/运价领域,四类查询的失败模式是否仍然成立? |