1645 字
约 5 分钟
17
LLM-Wiki知识库
无标签

LLM-Wiki 知识库:知识编译与持久化

系列:ToyAgent 智能体知识库 08/26

一句话核心:RAG 是"知识躺着,问一次查一次";LLM-Wiki 是把项目知识编译成结构化条目、持久保存、增量维护——编译一次,持续复用。

为什么需要

智能体需要的知识其实分两类,处理方式完全不同:

  • 检索型知识——文档、手册、网页,量大且杂,单次提问只用到其中一小角。这类知识适合 RAG:每次现场检索、用完即弃。
  • 项目知识——架构约定、代码规范、部署流程、业务规则。它总量小、被高频引用、要求"永远在场"。每次都去翻文档既浪费 token 又不可靠,正确做法是编译成条目,随启动直接加载。

这个提法源自 Karpathy 对 LLM-Wiki 的描述,而它的工程形态你早就见过:AGENTS.md、CLAUDE.md——仓库根目录那份随对话自动注入的约定文件,就是"编译好的项目知识"。

一句话区分两者:RAG 的知识是只读快照,每次检索;LLM-Wiki 的知识是活条目,能在对话中增量沉淀、重启不丢。

核心机制

骨架是三步:加载 Wiki → 命中条目 → 增强生成,外加一个"编译指令"入口。

// 基础 Wiki:启动时编译一次(生产中来自仓库里的 AGENTS.md / CLAUDE.md)
private static final Map<String, String> BASE_WIKI = Map.of(
    "架构约定", "本项目零依赖教学实现,模块间只经接口通信……",
    "代码规范", "Java 17 语法;注释使用简体中文 Javadoc……",
    "部署流程", "编译后启动,默认端口 8099……");

// 编译指令:把对话中的知识沉淀进 Wiki,并写入磁盘持久化
if (input.startsWith("编译:")) {
    String topic   = parseTopic(input);     // "编译:发布流程:……" → "发布流程"
    String content = parseContent(input);
    userWiki.put(topic, content);           // 增量条目
    persistUserWiki();                      // 写 wiki/user-wiki.md,重启可恢复
}

三个关键设计:

  1. 双层结构:基础 Wiki 只读(编译期固定),用户 Wiki 可写(对话中增量编译),查询时合并。
  2. 显式编译指令:用 编译: 前缀触发沉淀,把"什么值得记"的决策权先交给用户;生产里可以升级为模型自主判断。
  3. 持久化:条目落盘而不是留内存,否则进程一重启,积累的项目知识全部蒸发。

编译与查询两条链路的状态流转:

stateDiagram-v2
    [*] --> 基础Wiki: 启动加载
    基础Wiki --> 命中条目: 用户提问
    用户Wiki --> 命中条目: 用户提问
    命中条目 --> 增强生成: 注入条目内容
    增强生成 --> [*]: 带出处的回答
    对话中 --> 用户Wiki: 编译指令
    用户Wiki --> 磁盘落盘: persistUserWiki
    磁盘落盘 --> 用户Wiki: 重启恢复

图示:基础 Wiki 启动即加载、用户 Wiki 靠编译指令增量沉淀并落盘持久化,查询时双层合并命中后增强生成。

举例

模拟对话轨迹——演示"编译一次,立即可用":

用户:项目用什么代码规范?
Agent:(命中 BASE_WIKI["代码规范"])
      根据项目约定 [代码规范]:Java 17 语法,注释使用简体中文 Javadoc。

用户:编译:发布流程:每周三灰度,周五全量上线
Agent:(userWiki.put("发布流程", "每周三灰度,周五全量上线"))
      已编译条目「发布流程」并持久化到 user-wiki.md。

用户:发布流程是什么?
Agent:(命中 userWiki["发布流程"]——刚才编译的知识立刻可用)
      按已沉淀的约定 [发布流程]:每周三灰度,周五全量上线。

(用户点「重置」→ userWiki 清空;再问"发布流程"→ 查无此条目,如实拒答)

写文件落盘后的产物长这样:

wiki/user-wiki.md
---
发布流程: 每周三灰度,周五全量上线
数据库约定: 正文统一存 t_article_content 表,缓存键 article:*
---

生产视角的对照:这套机制在本仓库的形态就是 CLAUDE.md + memory 目录——架构约定、部署流程、踩坑记录全部编译成 markdown 条目,每次会话启动时注入,而不是靠 RAG 每次去代码库里捞。区别只在于:教学版用 编译: 前缀人工沉淀,生产版由 Agent 会话结束自动归纳沉淀("自我更新 Wiki")。

和 RAG 的对比

维度 RAG(07) LLM-Wiki
知识来源 静态文档集合,只读 内置条目 + 对话中增量编译
生命周期 每次提问重新检索 持久化落盘,启动即恢复
典型问题 "这份文档里说了什么" "这个项目的约定是什么"
检索方式 相似度打分取 Top-N 条目名/语义直接命中

面试考点

  • LLM-Wiki 和 RAG 怎么选? 看知识的访问模式:低频、海量、单次引用 → RAG;高频、小量、必须永远在场 → 编译成条目常驻。项目约定类知识用 RAG 反而危险——检索漏了,Agent 就按自己的默认习惯行事。
  • 为什么条目要持久化? 智能体的价值随使用积累。不落盘的"学习"是伪学习,进程重启即归零,用户每次都要重新教一遍。
  • AGENTS.md 是什么? LLM-Wiki 思想的工程落地:把团队给 AI 的约定(架构、规范、命令)编译成仓库内的固定文件,Agent 启动即加载,等同于"编译期知识"。

生产化路径

  1. 条目进仓库:编译产物直接提交为 AGENTS.md / CLAUDE.md,走 code review 管控质量,而不是存在 Agent 私有存储里。
  2. 编译自动化:会话结束时让模型提炼"本次学到了什么值得沉淀的",生成条目草稿,人工确认后合并进 Wiki(审校制,防止把错误经验固化)。
  3. 检索增强命中:条目多了以后,"命中条目"一步也可以上 Embedding——Wiki 条目本质是小型 RAG 语料,两者不冲突。
  4. 条目治理:加时间戳与来源标记,定期清理过时条目;约定类知识过期比没有更危险。
LLM-Wiki知识库
https://clxhxhhr.top/posts/4708/
作者
clxstart
发布于
2026-10-13
许可协议
CC BY-NC-SA 4.0
评论
0 条
还没有评论,先写一条吧。