SKILL.md 5.3 KB


name: kb-query tags: [knowledge-base, retrieval, routing, rag] creator: 传鹏 description: |- 知识库检索路由。按"索引 → 摘要 → 全文 → 原文"四级递进定位,用最少的读取回答用户问题,并给出出处与缺口。

触发词:库里有没有、查一下、找资料、关于XX的资料、知识库里怎么说、之前整理的、有没有写过

知识库检索

铁律

禁止一上来 grep 全库,更禁止把整个库读一遍。 库的规模会长到几百页,暴力检索既慢又容易把不相干的内容混进答案。

按成本从低到高,命中即停:


Level 0 · 业务地图(成本≈0)

读 10-知识库/index.md 的「业务地图」段。

用户的问题如果能映射到某个业务分区(市场/客户/内容/交付),直接跳去看那个分区的页面。

命中就停在 Level 1。


Level 1 · 目录索引(成本≈读 200 行)

读对应目录的 _index.md:

10-知识库/topics/_index.md      主题结论
10-知识库/sources/_index.md     原始资料摘要
10-知识库/entities/_index.md    实体
10-知识库/modules/_index.md     课程模块

表格里每行有「一句话」和「标签」,扫一遍就知道该读哪几页。


Level 2 · 摘要与标签(成本≈读 frontmatter)

如果 Level 1 没命中,按关键词在 frontmatter 里找:

grep -rn "关键词" 10-知识库/*/  --include="*.md" | grep -E "title|summary|tags|aliases"

aliases 字段是同义词的藏身处 —— 用户说"内训",页面可能叫"企业培训"。


Level 3 · 全文(成本≈读匹配行)

grep -rn "关键词" 10-知识库/ --include="*.md"

只读匹配行 + 前后 3 行,不要整篇读。


Level 4 · 逐页精读(成本最高)

只读 Level 1–3 挑出来的 1–5 页。读的时候注意:

  • stale: true 的页 → 先看 stale_reason,答案里必须提示"这条依据可能已过期"
  • status: draft 的页 → 标明"草稿,未经确认"
  • frontmatter 的 sources → 这是引用出处

Level 5 · 回原材料(兜底)

知识库是原材料的加工品,可能丢细节。如果用户要的是原文措辞、完整数据表、合同条款:

  1. 从页面 frontmatter 的 sources: 拿到原材料路径
  2. 去 00-原材料/ 读原文件
  3. 答案里注明"引自原始文件,知识库摘要未覆盖这一层细节"

库改了怎么办

用户问的东西如果库里没有,先别急着说"没有":

python 90-工具/kb.py status

如果 待处理新增 > 0,说明料在库里但还没整理 —— 这时候应该说:

"库里还没整理这块,但 00-原材料/02-客户与需求/ 里有 3 个未入库文件看着相关,我现在同步一下再答?"

而不是"没有相关资料"。


回答格式

**结论**
(先给答案,2–3 句,不要绕)

**依据**
- 2026 年市场规模 380 亿,增速 42% —— `topics/AI培训市场.md`(源:《2026 AI 培训白皮书》)
- 客户普遍接受 3 天 2 晚 —— `sources/某银行内训需求.md`

**置信度**
高 / 中 / 低 + 一句话理由

**缺口**(有才写)
- 缺 2025 年的对比数据,建议补一份行业年报

没有出处的内容一律不写进「依据」。 模型自己的常识如果非要用,单独放一段叫「补充(非库内资料)」。


第 6 步 · 沉淀(把所有好答案变成库存)

这一步不做,这个库永远只是原材料的复印件。

RAG 和 wiki 的根本区别在这里:RAG 每次问都从零拼一遍,答完就没了;wiki 把答过的东西留下来,下次直接引用。

什么值得写回

值得 判断标准
综合了 ≥3 个来源的分析 下次再问还要再翻 3 个源,不写就是浪费
一次对比、选型、取舍 「A 方案还是 B 方案」这类结论最值得留
发现了原本没记的关联 「原来这个客户和那门课是一回事」
会被反复问的问题 销售、讲师、新人都会问的那种

不值得:一次性事实查询(「那个文件在哪」)、库外常识、还没结论的探索。

怎么写回

新建或并入 10-知识库/topics/<主题>.md,frontmatter 加一个字段:

derived_from: "query"      # 标记这页源自一次检索,不是从原文件直接整理
evidence: "C"              # 取所引来源的最低级 —— 检索不会提高证据强度

正文开头注明来路:

> 本页由 2026-11-04 的一次检索整理而成,依据 `sources/白皮书.md`、`sources/客户访谈.md`。
> 不是原始结论,是综合判断,引用时请回溯来源。

然后 kb.py mark 不用跑(没有新源),但必须 kb.py graph,否则索引不知道多了这页。

沉淀的复利

一个做了半年课的库,应该是:源文件 200 份,知识页 500+,其中至少三分之一是历次问答沉淀下来的。

只有源、没有沉淀的库,用一年也还是那 200 份文件的目录。


常见错误

错误 后果
把 _index.md 的摘要当正文答 丢细节,且可能引用过期摘要
忽略 stale 标记 拿作废数据做决策
库里没有就编一个 做出来的课站不住
引用页面但不给出处 用户无法复核,失去信任