知识库先编译再查,而不是查询时拼原文
一、三层结构
Raw sources:原始资料,不可变,是事实源。Wiki:LLM 生成并维护的页面(实体页 / 概念页 / 来源页 / 综合页 / 对比页)。Schema:类似AGENTS.md,规定怎么建页、命名、更新、查询。
隐喻:Obsidian 是 IDE,LLM 是程序员,wiki 是 codebase。
二、「不用 RAG」不等于「不检索」
知识库小的时候,靠 index.md 就能定位;变大后 index.md 太长,必须补定位机制。Karpathy 也说中等规模 index.md 可用、变大再加本地搜索。
两种定位机制角色不同:
| Embedding | Rerank | |
|---|---|---|
| 作用 | 召回候选(粗找) | 精排候选(判断哪些最该读) |
| 输入 | query + 全库向量 | query + 少量候选文本 |
| 速度 / 成本 | 快、低 | 慢、较高 |
| 缺点 | 容易泛相关 | 不适合扫全库 |
流程:query → embedding/BM25 召回约 50 条 → rerank 挑前 5 → LLM 读。
三、可迁移的判断
- 反对的是**「每次都从 raw docs 临时拼答案」**,不是反对 agent 去查页面。
- 选型先问:知识在什么时刻被整理成结构 —— 查询时(RAG)还是入库时(编译)。
- 编译层能持续维护(去重、检测矛盾、补链、健康检查),这是纯检索层拿不到的。
来源:Karpathy 的 LLM Wiki gist(raw sources / wiki / schema 三层);claude-obsidian 把该思路产品化(丢入网页/PDF/聊天记录 → 自动抽实体与概念、建双链、检测矛盾、会话结束更新 hot.md、健康检查孤儿页与死链)。
相关
- 知识入库的筛选标准
- 入库前先分层清洗
- 数据权威模型要先于同步与迁移确定
- Agent读语义文件App读结构化存储
- 检索是一条分层链 —— 本条是那条链的供给层
- 代码库知识工具的选型