今年 6 月,Google Cloud 开源了一个叫OKF(Open Knowledge Format,开放知识格式)的规范。
紧接着,技术圈炸了。「RAG 已死」「向量数据库要完」「以后不需要 embedding 了」——这类标题密集刷屏了大半个月。
我一开始也被唬住了。但看多了之后发现一个奇怪的现象:几乎所有鼓吹「OKF 取代向量数据库」的文章,都在用同一套论据,而且这套论据里有几个非常具体的技术细节。
于是我去翻了原始规范。
结果是:传播最广的那套论据,核心部分是错的。
这篇文章分两部分。前半部分把 OKF 这件事说清楚——它到底是什么,那两个流传最广的误解错在哪。后半部分是干货:既然它不是银弹,那真正在解决「LLM 读不懂企业知识」这个问题的人,到底在做什么,有哪 6 条可以直接抄到你现有系统上。
一、先把事实钉死:OKF 到底是个什么东西
OKF 的仓库在GoogleCloudPlatform/knowledge-catalog,Apache 2.0 协议,v0.1 版本,由 Google Cloud 的 Sam McVeety 和 Amir Hormati 牵头发布,附带三个样例知识包和两个参考实现。
它的自我介绍就三个词,翻译过来是「三个只是」:
- 只是 Markdown——任何编辑器能读,GitHub 上能直接渲染,任何搜索工具能索引
- 只是文件——打成 tar 包能发,扔进 git 仓库能托管,挂到任何文件系统上能用
- 只是 YAML 头部——只为那一小撮真正需要被结构化查询的字段服务
一个 OKF 知识包(Knowledge Bundle),本质上就是一个目录树,里面全是 Markdown 文件。index.md是目录索引,log.md是变更日志,其他所有.md都是一个个独立的「概念」——一张表的结构、一个业务指标的定义、一份事故 runbook、一个 API 契约。
每个概念文件顶部有一段 YAML 头部。整个规范里,必填字段只有一个:type。
推荐但不强制的有title、description、resource、tags。另外还有一组我认为最被低估的字段,专门管信任和溯源:generated、verified、sources、status、stale_after——后面会专门讲这个。
设计原则也很清楚,官方列了三条:
- 主张要少:除了
type,其他全部交给生产者决定 - 生产者与消费者解耦:格式就是契约,两端的工具可以各自独立替换
- 是格式,不是平台:一个知识格式的价值,取决于有多少方讲这门语言,而不是谁拥有它
它想解决的问题也说得很实在:企业里真正喂给大模型的,绝大多数是内部知识——一张表的 schema、一个指标在你们公司的具体含义、一次事故的处理手册、两个系统之间的 join 路径、某个老 API 的废弃通知。
而这些东西现在散落在:有私有 API 的元数据平台、维基、共享盘、代码注释、以及资深工程师的脑子里。
结果就是每个做 Agent 的人,都在从零解决同一个上下文拼装问题。
最关键的一条,藏在规范的边界声明里:OKF 明确不规定存储、服务和查询基础设施。
一个字都没提检索。
所以一句话总结:OKF 是知识的集装箱标准,不是港口,更不是船。
二、流传最广的两个误解
理清了规范原文,再回头看那些「取代向量数据库」的说法,问题就很明显了。
误解一:OKF 用[[双链]]构成了确定性知识图谱
这是流传最广、也最有说服力的一条。说法大意是:OKF 用[[概念路径]]这样的显式双向链接,把一个普通文件夹变成了绝对确定的知识图谱,AI Agent 可以沿着链接一步步逻辑推进,不用再靠余弦相似度去猜。
听起来非常美。但规范里根本没有[[ ]]这个语法。
OKF 用的是标准 Markdown 链接,两种形式:包内绝对路径(比如/tables/customers.md,规范推荐这种,因为稳定)和相对路径。
更要命的是下一句。规范原文的意思是:从概念 A 指向概念 B 的一条链接,断言了「存在某种关系」,但关系的类型不由语法承载,靠周围的散文表达。
这是什么意思?OKF 给你的是链接,不是带类型的边。
知识图谱里阀门X —控制→ 流量Y这条边,「控制」两个字是机器可读的、可以被遍历和推理的。而 OKF 里你只能写一个链接,然后在旁边用人话说明这俩是什么关系。
这中间差的不是一点半点,差的正是「知识图谱」这四个字本身。
顺带一提,那些文章里给出的 YAML 示例,常见的是id、owner、updated_at、citations这几个字段——规范里一个都没有。
误解二:把「怎么存」和「怎么找」当成了一回事
这是整场争论的病根。
「知识如何被表示」和「知识如何被检索」,是两件事。OKF 只回答了前一个,而且明确声明不碰后一个。
拿一个静态的打包格式,去宣布一个运行时检索引擎的死亡——这就像宣布集装箱标准的诞生意味着货轮的终结。
准确的说法应该是:OKF 没有杀死 RAG,它修好了 RAG 最痛的一个毛病——处理高度结构化、互相引用的技术文档。
三、但向量 RAG 的痛,是真的
澄清归澄清,不能因为鼓吹方论据错了,就假装向量 RAG 没问题。它真的有问题,而且问题很硬。
五条,按我认为的严重程度排:
1. 只能看见文档内部。这条最锋利,也最少被提。向量相似度依赖的是文本里的显式提及,所以模型对跨文档的引用、对隐含的和上下文的指代,是盲的。它没法在「文档之间」这个层面推理。
而企业内部的文档,恰恰全是互相交叉引用和隐含指代。
2. 关系表达不了。一份维修手册里,某个操作步骤依赖于几十页之前提到的一条安全规则;某个风险同时关联着一个告警、一个运行事件和一处缓解措施,散落在不同章节。依赖、因果、时序、约束、缓解——这些关系,靠向量相似度是捞不回来的。
3. 精度惩罚。用户搜一个精确的产品编号、序列号或错误码,比如SKU-48291-B,嵌入模型会把邻近的字符串当成几乎相同的邻居。向量擅长「意思差不多」,恰恰不擅长「一模一样」。
4. 结构破坏。把一份 200 页文档按 512 token 硬切,表格被撕碎,脚注和它的编号失散,文档内部的交叉引用全断。
5. 运维是个无底洞。嵌入漂移、重新索引、和快速变动的源数据保持同步。
还有一句话我觉得说得最狠:这类 RAG 应用最终会撞上一条性能渐近线——剩下能调的,只有几个 LLM 参数。
四、真正在解题的人,在做三件事
路线 A:给知识加「格式」
就是 OKF 这条路。低成本、git 原生、人和机器都能读。
适合什么?公司里那些「唯一真理」:指标口径、表结构、事故 runbook、合规定义。
这类知识的特点是:错一次代价极大,而且必须能审计「谁在什么时候改的」。让一个概率系统去猜「我们公司对『收入』的定义」,本身就是糟糕的设计。
路线 B:给知识加「图」
典型技术栈是 Neo4j(同时当图数据库和向量库)+ LangChain + Ollama/Groq,前端 Streamlit,Docker 打包。
入库流程:加载 → 切块 →用 LLM 抽取概念图(关键在于用with_structured_output配 Pydantic schema 强制结构化输出,不要自由文本)→ 嵌入 → 落库。
落库时的图结构设计值得抄:每个文件建Document节点,每个块建Chunk节点,块与文档之间PART_OF,块与块之间NEXT(保留顺序!),块与抽出的实体之间MENTIONS。
最后一步很妙:对图做层次聚类(Leiden 或 Louvain 算法)检测社区,再让 LLM 给每个社区写摘要,得到社区报告(Community Reports),单独存一个向量索引。
有了图之后,查询策略一下就多了,各有取舍:
- 增强 RAG——相似度检索之后,顺着
NEXT把邻居块也捞进来,答案细节更足 - 社区报告——同时查块索引和社区索引,这是唯一能回答「跨文档总览型」问题的策略
- Cypher 查询——把图 schema 喂给 LLM,让它写查询语句去遍历
- 社区子图——最不成熟,多次运行结果差异很大,LLM 容易被信息淹没
- Cypher + RAG——目前最完整,而且带 fallback:查询生成失败就退回增强 RAG,至少保证有答案
选型三角很实在:别只看准确率,要同时称量 token 消耗、延迟、可扩展性。
路线 C:给知识加「本体 + 证据」
代表是ROE(RAGraph Ontological Engine)这类引擎,工程化程度最高,整套架构以本地自持为目标:Ollama 跑 bge-m3 做嵌入、gpt-oss:120b-cloud做推理,Qdrant 存向量,MongoDB 存文档、本体、事实和审计记录。
嵌入在本地生成,向量库、文档库、知识图谱全部留在本地——这对本地化部署、工业现场、涉密文档和有数据合规要求的组织特别有吸引力。
它的核心设计是三层分离:
- 索引文档层——保留原文,永远是引用和验证的权威来源
- 领域本体层——定义这个领域有哪些概念、类别和关系
- 知识图谱层——实体成节点,关系成边,抽出的陈述成为可验证的原子事实
三层分离这个决定,我认为是全篇最值钱的一句:原文永远是真理来源,本体提供语义,图只提供导航结构。
横切:给知识加「眼睛」
前三条路线共同缺一块:图建完了,你怎么知道它建对了?
这块归网络分析。PageRank、HITS、度中心性、接近中心性、介数中心性、Louvain 社区检测——这些统计量能告诉你哪些节点是真枢纽。用 D3Blocks / d3graph 这类库,几行 Python 就能生成一个独立 HTML 的交互式力导向图,边权滑块还能实时拆解网络看社区怎么分裂合并。
但真正让我眼前一亮的是显著性检验,这在 GraphRAG 圈子里几乎没人提:
一个节点连接数多、一个簇看起来很密,这有可能纯粹是碰巧。想知道它是不是真的有意义,做法是——保度随机化:反复重连边,但保持每个节点的度不变,跑上几百上千次,为每个节点生成一个零分布,然后拿真实网络的统计量去比,算经验 p 值或 z 分数。
能通过这一关的结构,才是真结构,而不是连接度本身带来的假象。
如果你的 GraphRAG 正在用「中心节点」做检索加权,这一步不做,你可能一直在给噪声加权。
五、六条可以直接抄的工程作业
上面是格局,下面是干货。这六条可以直接落到你现有系统上。
1. 双引擎 + 路由,而不是二选一
架构长这样:用户查询先进一个Router,判断意图——要精确结构(表结构、runbook、指标定义)就走结构化解析,要模糊语义就走向量检索。两条路并行执行,最后合成上下文再喂给 LLM。
这个设计的收益是实打实的:把成千上万页静态文档、API schema、文档层级从向量库里挪到纯文本包,你的向量库索引成本会直线下降。
2. 少即是多,而且要设硬预算
ROE 的做法非常反直觉,但我认为是最有价值的工程决策:
- 首轮检索最多只取 4 个块(约 4000 字符)
- 如果最高相似度分数低于 0.45,不是盲目扩大检索量,而是先用本地模型改写查询,再做第二轮,这次上限放宽到 8 个块
- 图扩展也有硬预算:最多 10 条原子事实、24 个节点、18 条关系、12 条遍历路径、12 个关键概念
绝不把整张图塞给 LLM。
对比一下:不够自信的 RAG 系统,往往靠塞 10 个、15 个甚至 20 个块来对冲检索的不确定性。反过来做才对——不增加上下文的数量,增加上下文的质量。
3. 把成本挪到入库期
关于 GraphRAG 省 token,有个普遍误解,以为是靠激进压缩。不是。
它省 token,是因为把计算量从「查询时」挪到了「入库时」。实体、本体、关系、原子事实、图结构,在文档进来的时候就已经抽好了,用户每次提问不用重算。
一句话概括:图是一个语义压缩层,它压缩的不是信息,是冗余。
目标从来不是给 LLM 更少的知识,而是给它组织得更好的知识。
这笔账要算清楚:本体生成、图抽取、事实抽取,依然需要真金白银的 LLM 推理。区别只是——这个成本每篇文档付一次,而不是每次查询都付。
4. 原子事实必须能溯源
抽出的每一条事实都是一个三元组:主语 → 谓语 → 宾语。
比如告警A → 指示 → 状态B、阀门X → 控制 → 流量Y。
关键在于:每一条事实都保留一个直接指回原始文档块的引用。
这条铁律的意义是——生成答案时,模型依赖的不是它参数里存的东西,而是能一路追回到那份原始手册的证据。图补充文档,永不取代文档。
5. 答案自检:而且要「改检索」,不要「改生成」
这是我认为最该抄的一条。
生成答案不是最后一步。
答案产出后,把它拆成一条条独立的原子断言,每条单独拿去和检索到的证据比对,判定为三种之一:已验证 / 被矛盾 / 无支撑。
然后算两个指标:证据覆盖率(答案里有多少是真有文档支撑的)和推理分数(推理链的内部一致性,对无支撑的结论扣分)。
最狠的在后面——如果证据覆盖率低于 40%,引擎自动重来:改写查询 → 扩大检索 → 刷新本体上下文 → 重新生成。
传统 RAG 管道不管检索质量如何,都会硬憋出一个答案。而这里问的是另一个问题:我手上的证据,真的够回答这个问题吗?
如果不够,先改进检索,而不是改进生成。
这个区别听起来微妙,但它是「看起来合理的答案」和「可验证的答案」之间的分水岭。对技术文档来说,可追溯性往往比答案本身更值钱。
6. 本体先行,而且别只读开头几页
两个细节:
其一,先建本体,再抽实体。不要直接从原文抽实体,而是先搭一个通用本体骨架:实体、组件、流程、需求、规则、测量、风险、事件、参与者;关系则用PART_OF、REQUIRES、DEPENDS_ON、CAUSES、MITIGATES、MEASURED_BY、APPLIES_TO。这套骨架跨领域可复用。
其二,采样要横跨全文。为了让 LLM 提出领域特化的本体,应该从整份文档中均匀采样若干块(ROE 的取值是最多 9 块)——而不是只看开头。
原因很朴素:文档开头往往是引言和法律声明,那儿学不到这个领域真正的概念。
对应到抽取环节,同样的思路是用allowed_labels和allowed_relations约束 LLM 的抽取范围。本体就是图的蓝图,不给蓝图,抽出来的就是一团各说各话的标签。
六、泼几盆冷水
写到这儿如果收尾,就成了吹捧文。下面这些局限同样重要。
抽取质量会沿着图传播。LLM 抽出的实体不完整、关系不准确,这些错误会扩散到整张图里。所以成熟的实现都会配一个事实编辑器,让人能搜索、修改、删除原子事实。人工复核依然是高质量知识库的必要组成部分,这事没被自动化掉。
上游质量决定一切。扫描质量差的 PDF、OCR 错误、格式不一致的文档,会同时污染嵌入、本体生成和图构建。垃圾进,垃圾出,加了图也一样。
有些策略就是不成熟。前面提到的社区子图那条路,结果稳定性很差,多次运行差异很大。别看到 GraphRAG 就以为所有策略都是生产就绪的。
图不是真理来源。这句得说第三遍:知识图谱的用途是引导检索,不是成为主要的真理来源。原文负责验证,图负责推理。
最后,一件几乎没人提的事。
前面说过,OKF 规范里有一组信任字段:verified、sources、status、stale_after。
关于 OKF 的讨论几乎全在争「它能不能取代向量数据库」,但我认为,这组字段才是它最有价值的部分。
因为「文档会腐烂」才是企业知识管理的真问题。常见的解法提案是「让 AI Agent 当维基管理员」——代码变了,后台 Agent 自动改对应的 Markdown、修链接、写日志。想法不错,但那是应用层的事,规范管不着。
而stale_after(多久之后这条知识就该被视为过期)和verified(谁在什么时候验证过)是写进格式里的。它不解决知识腐烂,但它让腐烂变得可见。
对一个 v0.1 的规范来说,我觉得这比双链有意思多了。
七、所以,你该怎么选
不卖关子,一张决策表:
场景一:高风险、唯一真理、变更需要审计
指标口径、表结构、事故 runbook、合规定义、API 契约。
→走结构化文件(OKF 这类)+ 确定性导航。用 git 管版本,用 PR 做审计。别让概率系统去猜这些。
场景二:海量、探索性、语义模糊
历史工单、客服对话、归档 PDF、会议纪要。
→向量 RAG 依然是最优解。别拆你的向量库。
场景三:关系语义很强
工业手册、维修流程、依赖链、因果链、法规条款。
→本体 + 知识图谱 + 证据校验。参考三层分离那套架构。
场景四:需要跨文档总览
「我们公司在 X 方向上整体是什么策略」这类问题。
→社区检测 + 社区报告,单独建向量索引。这是唯一能干这活的。
而以上四条的前面,都应该站着一个 Router。
写在最后
2026 年 RAG 的主线,从来不是「被谁杀死」,而是从「概率检索」走向「结构化知识」。
OKF 没有杀死 RAG。它只是把「知识怎么表示」这件事,从各家私有的目录、维基、代码注释里解放了出来,变成了一个谁都能读能写的格式。
至于「知识怎么被找到」——那是知识图谱、本体、混合检索、证据校验这些人的活儿,才刚刚开始。
未来可能不在于检索到更多的文本,而在于检索到更好的知识。
更少的冗余,更多的结构;更少的猜测,更多的证据。
学AI大模型的正确顺序,千万不要搞错了
🤔2026年AI风口已来!各行各业的AI渗透肉眼可见,超多公司要么转型做AI相关产品,要么高薪挖AI技术人才,机遇直接摆在眼前!
有往AI方向发展,或者本身有后端编程基础的朋友,直接冲AI大模型应用开发转岗超合适!
就算暂时不打算转岗,了解大模型、RAG、Prompt、Agent这些热门概念,能上手做简单项目,也绝对是求职加分王🔋
📝给大家整理了超全最新的AI大模型应用开发学习清单和资料,手把手帮你快速入门!👇👇
学习路线:
✅大模型基础认知—大模型核心原理、发展历程、主流模型(GPT、文心一言等)特点解析
✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑
✅开发基础能力—Python进阶、API接口调用、大模型开发框架(LangChain等)实操
✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用
✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代
✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经
以上6大模块,看似清晰好上手,实则每个部分都有扎实的核心内容需要吃透!
我把大模型的学习全流程已经整理📚好了!抓住AI时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~