从 RAG 到 Agent-native Knowledge Context Layer
一 知识库的根本困境从一个知识库检索超级微服务高级skill开始的思考。1.1 RAG 的天花板RAGRetrieval-Augmented Generation是当前最流行的知识库方案把文档切成 chunk → embedding → 用户 query 时向量检索 Top-K → 喂给 LLM 生成答案。这个方案在简单问答场景下表现尚可但在工程知识库场景中有三个结构性缺陷缺陷一每次从零推导。正如 Karpathy 在 LLM Wiki 设计文档中指出的——the LLM is rediscovering knowledge from scratch on every question. Theres no accumulation.LLM 在每个问题上都从头重新发现知识没有任何积累。问一个需要综合 5 篇文档的问题LLM 必须每次都找到并拼接这 5 个片段没有任何中间成果被保留。缺陷二无法连点成线。Microsoft GraphRAG 的研究明确指出 baseline RAG 的两个失败模式一是struggles to connect the dots——当答案需要通过共享属性连接分散信息时平坦的向量检索无能为力二是performs poorly when being asked to holistically understand summarized semantic concepts over large data collections——无法对大规模语料做全局性的语义理解。缺陷三粒度混乱。一个 chunk 可能是系统设计原则也可能是某个函数的第 42-143 行实现。向量空间不区分抽象层次——设计原则和代码实现在语义上可能很近都包含单一职责关键词但它们服务于完全不同的认知需求。1.2 四个常见症状无论团队规模大小知识库都会出现这些症状搜什么都是那几篇 —— 高词频长文档垄断 Top-K 结果找到了但不是我要的层次—— 想知道是什么返回了怎么实现改了一个地方不知道影响什么 —— 文档之间没有关联关系新人不知道从哪看起 —— 没有阅读路径和导航结构这些症状的共同根源知识库缺少结构。向量检索把知识当成一袋词而工程知识是一棵树和一张图。二 知识库方法论全景从平铺到结构化当前主流的知识库构建方法论可以分为 4 个范式每个范式代表了对知识应该如何组织的不同回答。2.1 范式一Naive RAG — 平铺向量检索核心思想文档 → chunk → embedding → 向量数据库 → 相似度检索。源文档 → 分块(chunking) → 向量化(embedding) → 存入向量DB查询 → 向量化 → Top-K 相似度匹配 → 拼接 prompt → LLM 生成优势实现简单无需预处理直接可用。局限默认配置下无积累、无关联、无层次、无角色区分。每次查询都是一次性的知识不会随使用变得更好。注现代 RAG 可通过 metadata filter、rerank、hybrid search、ACL、query routing 等手段弥补部分缺陷但需要额外工程投入。代表产品大多数企业知识库、ChatGPT 文件上传、NotebookLM 的基础模式。2.2 范式二LLM Wiki — 持续编译的知识工件核心思想LLM 不只是检索者而是知识的维护者。知识被编译一次并持续维护而非每次查询时重新推导。这是 Andrej Karpathy 提出的知识库模式LLM Wiki Pattern[1]核心洞察是wiki 是一个持续积累的工件persistent, compounding artifact。交叉引用已经建好矛盾已经被标记综合分析已经反映了所有已读内容。三层架构层职责谁维护Raw Sources不可变的源文档集合论文、文章、数据文件人类策展WikiLLM 生成的结构化 markdown 页面实体页、概念页、综合页LLM 完全拥有Schema定义 wiki 结构、约定和工作流的配置文件人类 LLM 共同演进三个核心操作Ingest新源文档进入 → LLM 通读 → 写摘要页 → 更新索引 → 修订所有相关的实体和概念页面。一次 ingest 可能触及 10-15 个 wiki 页面。Query通过 index.md 定位相关页面 → 读取 → 综合带引用的回答。关键机制好的回答可以反哺为新的 wiki 页面让探索也成为知识积累。Lint定期健康检查——矛盾、过期声明、孤立页面、缺失概念、断裂的交叉引用。为什么 wiki 维护不会崩塌Karpathy 指出了人类维护 wiki 失败的根因Humans abandon wikis because the maintenance burden grows faster than the value.人类放弃 wiki 是因为维护负担增长快于价值。LLM 显著降低了这个瓶颈——它做摘要、交叉引用、归档、记账维护成本远低于人工。但 LLM 维护仍有局限可能产生过期引用、内容冲突、错误归档和幻觉风险需要人类定期审核。人类的角色转变为策展、方向指引、深度思考和质量把关。局限wiki 页面之间的关联是通过 wikilink 手动维护的没有自动的关系推断和社区检测。适合中等规模~100 源文档的知识库。2.3 范式三Graphify — 代码即图谱核心思想把代码库、文档、配置文件、设计稿等异构资源统一映射为一张可查询的知识图谱。Graphify[2] 采用双管道提取AST 管道离线通过 tree-sitter 对多种编程语言做本地解析提取函数、类、模块、导入等代码实体。不调用任何外部 API。语义管道LLM对文档、PDF、图片、视频等非代码内容做 LLM 语义提取生成概念节点和关系边。三个产出物产出用途graph.html浏览器内可视化——点击节点、过滤、搜索GRAPH_REPORT.md洞察报告——God Nodes / Surprising Connections / Knowledge Gapsgraph.json完整图谱数据——随时查询无需重新解析独有能力God Nodes系统中连接度最高的概念枢纽Surprising Connections意料之外的跨模块关联按意外程度排序Knowledge Gaps图谱自动发现的知识缺口置信度三档每条关系标记EXTRACTED直接观察/ INFERRED逻辑推导/ AMBIGUOUS不确定保证可追溯性与传统文档的本质区别传统文档是线性的、静态的、按文件隔离的Graphify 把代码数据库配置设计文档媒体统一到一张图里——一个 SQL schema 节点可以直接连接到查询它的应用代码和解释它设计理由的 PDF。局限图谱擅长关联分析A 和 B 有什么关系但不擅长直接问答这个接口的参数是什么。图谱是知识的骨架不是知识本身。2.4 范式四GraphRAG — 图谱增强的检索核心思想先构建知识图谱 → 社区聚类 → 生成分层摘要 → 查询时结合图结构和社区摘要回答。Microsoft GraphRAG[3] 是对 Naive RAG 的结构化升级源文档 → 实体/关系提取 → 构建知识图谱→ Leiden 算法社区聚类 → 分层社区摘要→ 查询时: Global Search(社区摘要) / Local Search(实体邻域)两种查询模式Global Search利用社区摘要做全局推理——整个代码库的设计模式有哪些Local Search从特定实体出发沿图谱边扩展到邻域——UserService 关联了哪些组件解决了 Naive RAG 的两个痛点通过图结构连点成线通过社区摘要实现全局理解。局限构建成本高需要大量 LLM 调用做实体提取增量更新困难对源文档质量敏感。.2.5 四种范式的理论对比维度Naive RAGLLM WikiGraphifyGraphRAG知识表示向量空间中的 chunk结构化 wiki 页面有向图节点边知识图谱社区摘要知识积累❌ 无每次从零推导✅ 持续积累✅ 增量更新部分需重建知识关联默认无可加 metadata filter手动 wikilink✅ 自动推断✅ 自动推断层次感知默认无可加 rerank按主题分页按社区分组分层社区角色适配默认无可加 ACL/query routing❌ 无❌ 无❌ 无适合规模大1000篇中~100篇大整个代码库大但构建贵维护成本低自动索引中LLM维护低git hook自动高需重建核心能力语义相似度检索综合编译导航关联分析缺口发现全局理解局部精确三 金字塔一种新的知识工程范式3.1 金字塔解决了什么观察上述 4 种范式每种都有明确的强项但都缺少一个关键能力层次感知 角色适配。Naive RAG 没有层次LLM Wiki 有主题分页但无抽象层级Graphify 有社区但无稳定性/粒度区分GraphRAG 有分层社区但无角色映射金字塔知识库补上了这一环把知识按稳定性和抽象度分为 5 层每层服务不同的认知需求和角色。3.2 五层分层设计为什么是 5 层5 层对应了软件工程中常见的抽象层次划分——从不变的原则到易变的经验金字塔层软件工程对应稳定性类比L1 原则SOLID / KISS / YAGNI最高年宪法L2 架构架构决策记录ADR高季度法律L3 规范编码标准ESLint 规则中月规章L4 实现代码模板、SDK 文档低周手册L5 经验故障复盘、运维日志最低天判例分层的核心价值检索时先确定用户在问哪个层次的问题再在该层内精确定位。这显著降低了粒度混乱——减少在回答为什么的时候返回怎么实现的情况。分类错误、跨层问题和混合查询仍可能发生但影响范围被控制在单层内。3.3 知识图谱跨层关联金字塔不只是 5 个独立的文件夹。每篇文档是一个节点文档之间通过 7 种有向边关联边类型方向含义governsL1→L2原则约束架构决策definesL1→L2/L3概念定义域边界constrainsL2→L3架构约束编码规范implementsL2/L3→L4架构/规范的具体实现validatesL4→L5实现产生运维经验feedbackL5→L3/L4经验反馈改进规范和实现cross_ref任意同层或跨层的横向引用这形成了一个有向图支持上溯从实现追溯到它遵循的原则和架构下探从原则推导出应该怎么实现反馈环运维经验反哺改进规范和实现场景路径预定义的跨层阅读路径如新人 OnboardingL1→L2→L3→L53.4 角色感知不同人看不同层金字塔的另一个独有设计是角色-层级访问矩阵同一个知识库架构师看到的是 L1L2原则和架构开发者看到的是 L2L3L4架构、规范和实现。每个角色有独立的context_budget和priority_order系统按优先层顺序逐层填充内容直到预算用完确保有限的 context window 里优先塞入该角色最需要的知识。3.5 检索机制结构化路由 vs 向量相似度金字塔的检索方式与传统向量检索有本质区别。向量检索是**从所有文档中找最像的金字塔是先确定去哪层找再精确定位**。当前实现分层关键词打分 图谱扩展关键设计所有检索在本地完成无需网络调用。分层结构将搜索空间从全量文档缩小到角色可访问的层级子集图谱扩展自动补充上下游关联。Roadmap未来计划引入 layer-registry 索引机制服务名/概念关键词 → 文档 ID 的速查表实现摘要直答和更精确的结构化路由进一步减少对全文扫描的依赖。与向量检索的机制对比维度向量检索金字塔分层检索定位方式语义相似度embedding 距离分层关键词打分 图谱扩展搜索空间全量文档角色可访问层的子集粒度控制默认无原则和代码混在一起返回先按层过滤再定位关联能力默认单文档匹配图谱边自动关联上下游API 调用每次 1 次 embedding 调用0 次纯本地Token 消耗较高返回 raw chunk较低budget 截断 摘要级内容冷启动无需预处理需要先 ingest 构建金字塔代码级深度★★★★★函数签名/行号★★★架构级需穿透补深度核心优势金字塔通过分层 角色过滤将搜索空间大幅缩小再通过图谱扩展补充关联上下文全程无网络调用。代价是需要预先构建金字塔结构。最优组合金字塔做分层定位0 API 调用→ 向量检索补代码级深度1 API 调用 结构化导航 精确细节的互补。3.6 金字塔与其他范式的关系金字塔不是替代其他范式而是在顶层增加了一个结构化的路由和导航层四 同步机制知识 库不是一次性的4.1 知识库的腐烂问题知识库最大的敌人不是没有内容而是内容过期。过期的文档比没有文档更危险——因为它给你错误的信心。腐烂的三种形式类型表现危害程度静默过期文档描述的接口签名已变但文档没更新★★★★★层级漂移当初的架构决策L2已降级为历史背景L5但还放在 L2★★★覆盖盲区新服务上线了 3 个月L4 实现参考里完全没有它★★★★一个判断标准如果团队新人按知识库操作后会踩坑这篇文档就已经腐烂了。4.2 知识保鲜的方法论解决腐烂的关键不是定期检查所有文档做不到而是让知识的新鲜度可度量。原则一每层有不同的保鲜周期不是所有知识都需要同频维护。越接近塔顶越稳定越接近塔底越需要更新层合理的审查周期过期信号L1 原则年度团队内部对某条原则产生分歧L2 架构季度系统拓扑图与文档不一致L3 规范月度Lint 规则和文档描述的规则不同L4 实现周/天级代码模板跑不通或依赖版本过期L5 经验天级故障排查 SOP 中提到的命令/路径不存在原则二用审计发现问题而非人工巡检人工巡检不可持续。正确做法是建立可自动化的审计指标审计维度检查什么健康标准覆盖率每层是否有条目、核心服务是否被覆盖无空层已知服务 100% 覆盖新鲜度条目最后更新时间无超过 90 天未更新的 L4/L5 条目图谱连通是否存在孤立节点所有条目至少有 1 条边层级平衡每层条目数是否合理L1 ≤ 10无单层占比超过 50%原则三变更驱动更新而非日历驱动最有效的触发机制不是每月检查一次而是绑定到已有的工作流触发事件应更新的层为什么架构评审通过L2新的架构决策产生了Lint 规则变更L3编码规范变了依赖大版本升级L4实现参考可能失效故障复盘完成L5新的经验知识产生新服务上线L2 L4需要补架构描述和实现参考新人入职提问L3 / L5新人问到的问题说明文档有缺口4.3 增量同步机制金字塔通过以下方法解决同步机制Phase 1 审计 → 扫描覆盖率 / 检测过期文档 / 输出 gapsPhase 2 摄入 → 加载源文档 / 分块 / 分类 / 去重(skip/update/move/write)Phase 3 后审计 → 对比 Before/After 覆盖率改进去重四策略checksum entry ID 双重校验场景动作内容不变、同层skip内容变了、同层update保留 createdAt层级变了move删旧写新全新内容write五 测评结果5.1 实验条件知识库规模831 篇源文档覆盖 14 个代码服务、5 个业务域源自内部一个中等规模工程团队的技术文档评测数据集200 条 QA pair覆盖服务定位、架构概念、代码细节、运维排障、跨服务关联、导航 6 个维度由 LLM 生成后人工审核每条标注 ground truth 文档 ID评测指标采用 RAGASRetrieval-Augmented Generation Assessment标准框架包含 HitK、MRR、Context Precision、Context Recall 四项检索指标以及估算的 Faithfulness 和 Answer Relevancy 两项生成指标检索模拟C/D/E/F 模式使用关键词匹配模拟各系统的检索逻辑非实际部署的检索引擎A 模式基于 8 条 searchDocChunk API 实测样本估算5.2 局限性声明单评估者项目作者、非盲评、评测集由 LLM 生成可能存在分布偏差仅在单一团队知识库上测试结论是否跨团队通用需验证测试模式代号模式检索机制类型ANaive RAG纯向量语义召回Vector StoreBPipeline Skill7 阶段 pipeline 6 层路由Agentic PipelineCPyramid KB分层关键词 同义词扩展 图谱增强Hierarchical KBDPyramid RAGHybrid金字塔路由 → 向量检索穿透Hybrid RetrievalELLM Wiki23 篇编译 wiki wikilink 导航Linked KBFKnowledge Graph86 节点 / 214 边图谱遍历 社区聚类KG QueryQuery 类型分布类型数量占比说明代码细节8040%具体实现方式、函数用法、配置方法、设计模式应用运维排障4020%线上故障排查、告警处理、发布回滚、容量规划架构概念3015%系统设计原理、技术选型依据、模块间通信方式跨服务关联2512.5%服务间依赖关系、数据流转路径、故障影响面分析导航157.5%文档阅读路径、学习顺序、知识覆盖度查询服务定位105%服务职责、技术栈、规模等基础信息非入门级问题检索指标结果模式Hit1Hit3Hit5MRRCtx PrecCtx RecallD: PyramidRAG32.5%89.0%89.5%53.7%0.4050.636A: Naive RAG55.0%75.0%75.0%61.6%0.2180.320F: Knowledge Graph64.5%71.0%71.0%67.5%0.5740.317C: Pyramid KB32.5%58.5%64.5%44.8%0.2720.480B: Pipeline Skill44.5%54.5%54.5%49.3%0.4190.457E: LLM Wiki31.0%40.0%40.0%35.4%0.2420.400分维度表现查询类型nD:PyrRAGC:PyramidB:PipelineF:GraphifyE:WikiA:RAG代码细节8098.8%87.5%61.3%75.0%66.3%~100%*运维排障4082.5%47.5%17.5%67.5%22.5%~100%*架构概念3086.7%36.7%43.3%70.0%23.3%~100%*跨服务关联2568.0%36.0%96.0%92.0%4.0%0.0%导航1593.3%40.0%46.7%33.3%33.3%0.0%服务定位1090.0%20.0%90.0%60.0%50.0%0.0%六 总结以上结果初步体现了分层结构 向量检索混合方案在检索精度上的优势PyramidRAG Hit389% vs Naive RAG ~75%**但这仍是 200 条样本、单一团队知识库上的观察且 Mode A 的数据为估算值。更大规模数据集、真实 API 全量调用、多评估者交叉验证、跨团队复现是后续工作方向。金字塔思路的核心价值不在于替代任何一种知识库而是给知识加上结构——让 不同角色AI 知道该去哪里找、按什么顺序读、给谁看哪些。最终的目标很简单程序员问一个问题AI 能在 3 秒内返回正确层次、正确角色、正确关联的答案——而不是 5 段不相关的文本。

相关新闻