简介:当个人与团队的知识积累达到数百篇文档规模,“让大模型真正读懂并答好问题”出现了两条路线:查询时检索的传统RAG,与写入时由模型离线编译的结构化Wiki。本文从架构组件、加工时机、检索机制、成本结构、规模边界、可维护性与安全等维度系统对比两类方案,给出场景化选型建议与迁移注意事项,帮你判断自己的知识库该怎么建。
近日,一位业界知名AI工程师公开分享了自己的个人知识管理工作流,并提到一个颇具信号意义的观察:“最近我大部分的token消耗,已经从写代码转向了处理知识。”换言之,对重度AI使用者而言,模型最宝贵的算力正在从“生成代码”迁移到“组织与理解信息”上。
更引发讨论的是他的技术选择:他没有沿用主流的RAG(检索增强生成)架构——没有向量数据库、没有embedding管道、没有复杂的检索与重排逻辑,而是让大模型把原始资料离线“编译”成一套结构化Wiki,查询时让模型直接阅读Wiki并顺着链接交叉引用。分享者提到,在个人研究Wiki约百篇文章、数十万字的规模下,这种“不上RAG”的方式效果已经很好。
这就引出本文要系统回答的问题:传统RAG与LLM编译式Wiki,本质区别在哪里?各自适合什么场景?若在两者之间迁移,需要注意什么?
RAG的思路是惰性求值。写入阶段把语料切分成chunk,调用向量化模型生成embedding,存入向量数据库;查询阶段把用户问题同样向量化,按相似度召回top-k个chunk,可选做重排,再把结果拼进上下文交给生成模型作答。它是当前企业知识问答、文档助手类应用的主流架构,也是多数云厂商知识检索类托管服务所采用的基础范式。
这套方案可以概括为一条极简流水线:raw/目录 → LLM编译 → wiki/目录 → 查询与维护。
目录结构示意:
knowledge_base/├── raw/ # 原始资料(唯一事实来源)│ ├── article-001.md│ └── assets/ # 本地化的图片等附件└── wiki/ # 编译产物(可再生成)├── index.md # 全局索引├── 概念-检索增强.md├── 概念-长上下文.md└── ...
RAG依赖向量化服务、向量数据库、检索与重排等多个组件,链路长、需要运维的中间件多;编译式Wiki几乎不依赖额外基础设施,文件系统加大模型调用即可跑通,部署门槛显著更低。但这也意味着前者的能力上限(并发、规模、延迟控制)有工程组件兜底,后者更依赖模型本身的能力与稳定性。
RAG在查询时才完成“理解”:写入只做轻量加工,每次查询都重新拼装上下文。编译式Wiki在写入时就让模型完成摘要、归并、去重、建链,查询时面对的是“已被消化过的知识”。代价与收益因此对调:RAG写入便宜、查询侧持续付费;Wiki写入昂贵(编译消耗大量token),查询侧因知识已结构化而效率更高。
RAG的检索单元是被切断的chunk,文档间关系与概念体系在切分时基本丢失;Wiki以概念为中心组织成互链文章,附带全局索引,模型可以“顺藤摸瓜”。结构化程度直接决定了跨文档综合推理类问题的作答质量差异。
RAG靠向量相似度top-k召回,确定性强、延迟可控,风险是召回不全或召回不准;Wiki方案里模型读索引、自己决定读哪几篇、再沿链接扩展,属于“智能体式检索”,灵活性与综合性更强,但行为不完全确定,查询耗时随浏览深度上升。
# RAG查询(示意)chunks = vector_db.search(embed(question), top_k=8)answer = llm.generate(question, context=chunks)# Wiki查询(示意)index = read("wiki/index.md")articles = llm.pick_articles(question, index) # 模型自主选文章context = read_articles(articles, follow_backlinks=True)answer = llm.synthesize(question, context)
RAG的引用可溯源到具体chunk,但整体知识质量难以一眼审计;Wiki每篇文章都是可读、可审计的产物,但编译环节一旦产生事实性错误或主观偏差,会被“固化”在知识库中,后续所有查询都会继承——单点污染风险反而更高。分享者强调“很少手工编辑wiki,那是LLM的地盘”,意味着质量兜底要靠编译流程的校验设计,而非人工逐篇修订。
RAG的更新是增删chunk,简单直接,但容易出现新旧并存、互相矛盾的片段;编译式Wiki天然支持增量演化:新资料进入raw/后触发受影响概念的局部重编译,模型自动更新摘要、双向链接与索引,知识库呈现“自进化”形态。代价是需要设计好触发与冲突策略,避免全量重编译导致成本失控。
# 增量编译(示意)for doc in new_raw_docs():for concept in llm.extract_concepts(doc):merge_into(f"wiki/{concept}.md", doc) # 去重、合并、更新链接llm.refresh("wiki/index.md")
RAG写入成本低(以向量化为主),主要成本在向量库托管与查询侧;Wiki写入成本高(编译是重token任务),查询侧读多篇长文同样不便宜。语料量小、更新频率低、查询频率高时,Wiki“一次编译、多次复用”更划算;语料量大、更新频繁时,反复重编译的开销会迅速放大。
RAG在百万级chunk规模上已被广泛验证;编译式Wiki目前更适合个人与小团队量级(数百篇、数十万字以内),再往上会遇到上下文窗口、单次编译成本、索引膨胀等约束,通常需要引入检索做初筛,走向混合架构。
企业场景下,RAG可做文档级权限过滤与元数据隔离;Wiki在编译时会把多份来源的信息合并进同一篇文章,若不同来源权限不同,合并产物存在越权泄露风险,需要在编译前完成权限归一或对wiki目录严格分级。个人场景下该问题影响较小。
原始资料阶段把图片本地化,多模态模型可直接读图,编译时还能为图片生成文字描述并入概念页;Wiki产物本身是人类可读的Markdown,天然具备“人机共用”属性,这是以chunk为中心的RAG所不具备的。
| 维度 | 传统RAG | LLM编译式Wiki |
|---|---|---|
| 核心组件 | 切分、向量化、向量库、检索与重排 | 文件目录 + LLM编译任务 |
| 加工时机 | 写入时轻加工,查询时检索 | 写入时重加工,查询时浏览 |
| 知识形态 | 碎片化chunk + 元数据 | 结构化互链文章 + 全局索引 |
| 检索方式 | 相似度top-k召回 | 模型读索引、顺链接自主导航 |
| 写入成本 | 低 | 高(编译token消耗大) |
| 查询成本 | 低到中 | 中到高(读多篇长文) |
| 规模上限 | 大(百万级chunk) | 中(受上下文与成本约束) |
| 可解释性 | 引用溯源到chunk,整体难审计 | 文章级可审计,编译错误会固化 |
| 更新方式 | 增删chunk,可能新旧冲突 | 局部重编译,自动维护链接(自进化) |
| 权限控制 | 文档级ACL、元数据过滤 | 文件权限,合并来源需防越权 |
| 产物可读性 | 面向机器 | 人类可读,人机共用 |
从RAG迁往编译式Wiki:
从Wiki迁往RAG: Wiki文章语义完整、结构良好,是优于原始chunk的切分单元,双向链接可作为图检索或元数据注入,迁移成本相对较低。
通用风险提示:编译错误单点固化、过期知识滞留、链接失效、权限合并越权、查询成本随规模非线性上升、对单一大模型能力的过度依赖。
传统RAG与LLM编译式Wiki的分野,本质上源于“知识加工时机”的不同:一个把理解推迟到每次查询,一个把理解前置到每次写入。这一个选择进而决定了两者的成本结构、知识形态、检索行为与规模边界全面分化。选型时应把“语料规模、更新频率、查询模式、团队运维能力”四个变量放在一起权衡:小规模、低更新、重综合分析的场景,编译式Wiki值得认真尝试;大规模、高并发、强权限的场景,检索增强及其托管服务仍是更稳健的路径;而两者结合的混合架构,很可能是知识库演进的下一站。