向量数据库没有死,但你的 RAG 该升级了:6 条可以直接抄的工程作业
2026/7/27 22:17:02 网站建设 项目流程

今年 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

推荐但不强制的有titledescriptionresourcetags。另外还有一组我认为最被低估的字段,专门管信任和溯源:generatedverifiedsourcesstatusstale_after——后面会专门讲这个。

设计原则也很清楚,官方列了三条:

  1. 主张要少:除了type,其他全部交给生产者决定
  2. 生产者与消费者解耦:格式就是契约,两端的工具可以各自独立替换
  3. 是格式,不是平台:一个知识格式的价值,取决于有多少方讲这门语言,而不是谁拥有它

它想解决的问题也说得很实在:企业里真正喂给大模型的,绝大多数是内部知识——一张表的 schema、一个指标在你们公司的具体含义、一次事故的处理手册、两个系统之间的 join 路径、某个老 API 的废弃通知。

而这些东西现在散落在:有私有 API 的元数据平台、维基、共享盘、代码注释、以及资深工程师的脑子里。

结果就是每个做 Agent 的人,都在从零解决同一个上下文拼装问题。

最关键的一条,藏在规范的边界声明里:OKF 明确不规定存储、服务和查询基础设施。

一个字都没提检索。

所以一句话总结:OKF 是知识的集装箱标准,不是港口,更不是船。


二、流传最广的两个误解

理清了规范原文,再回头看那些「取代向量数据库」的说法,问题就很明显了。

误解一:OKF 用[[双链]]构成了确定性知识图谱

这是流传最广、也最有说服力的一条。说法大意是:OKF 用[[概念路径]]这样的显式双向链接,把一个普通文件夹变成了绝对确定的知识图谱,AI Agent 可以沿着链接一步步逻辑推进,不用再靠余弦相似度去猜。

听起来非常美。但规范里根本没有[[ ]]这个语法。

OKF 用的是标准 Markdown 链接,两种形式:包内绝对路径(比如/tables/customers.md,规范推荐这种,因为稳定)和相对路径。

更要命的是下一句。规范原文的意思是:从概念 A 指向概念 B 的一条链接,断言了「存在某种关系」,但关系的类型不由语法承载,靠周围的散文表达。

这是什么意思?OKF 给你的是链接,不是带类型的边。

知识图谱里阀门X —控制→ 流量Y这条边,「控制」两个字是机器可读的、可以被遍历和推理的。而 OKF 里你只能写一个链接,然后在旁边用人话说明这俩是什么关系。

这中间差的不是一点半点,差的正是「知识图谱」这四个字本身。

顺带一提,那些文章里给出的 YAML 示例,常见的是idownerupdated_atcitations这几个字段——规范里一个都没有。

误解二:把「怎么存」和「怎么找」当成了一回事

这是整场争论的病根。

「知识如何被表示」和「知识如何被检索」,是两件事。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_OFREQUIRESDEPENDS_ONCAUSESMITIGATESMEASURED_BYAPPLIES_TO。这套骨架跨领域可复用。

其二,采样要横跨全文。为了让 LLM 提出领域特化的本体,应该从整份文档中均匀采样若干块(ROE 的取值是最多 9 块)——而不是只看开头。

原因很朴素:文档开头往往是引言和法律声明,那儿学不到这个领域真正的概念。

对应到抽取环节,同样的思路是用allowed_labelsallowed_relations约束 LLM 的抽取范围。本体就是图的蓝图,不给蓝图,抽出来的就是一团各说各话的标签。


六、泼几盆冷水

写到这儿如果收尾,就成了吹捧文。下面这些局限同样重要。

抽取质量会沿着图传播。LLM 抽出的实体不完整、关系不准确,这些错误会扩散到整张图里。所以成熟的实现都会配一个事实编辑器,让人能搜索、修改、删除原子事实。人工复核依然是高质量知识库的必要组成部分,这事没被自动化掉。

上游质量决定一切。扫描质量差的 PDF、OCR 错误、格式不一致的文档,会同时污染嵌入、本体生成和图构建。垃圾进,垃圾出,加了图也一样。

有些策略就是不成熟。前面提到的社区子图那条路,结果稳定性很差,多次运行差异很大。别看到 GraphRAG 就以为所有策略都是生产就绪的。

图不是真理来源。这句得说第三遍:知识图谱的用途是引导检索,不是成为主要的真理来源。原文负责验证,图负责推理。

最后,一件几乎没人提的事。

前面说过,OKF 规范里有一组信任字段:verifiedsourcesstatusstale_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时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询