Open Knowledge Format 如何改善数据共享

Sam McVeety —— Tech Lead, Data Analytics, Engineering, Data Cloud, Google Cloud

Amir Hormati —— Tech Lead, BigQuery, Engineering, Data Cloud, Google Cloud

随着基础模型不断进步,缺乏相关上下文往往成为它们能力的瓶颈,在被用来构建智能体(agentic)系统时尤其如此。这些模型虽然可以帮你写代码、总结文档或分析数据集,但它们仍然需要正确的信息,才能产出准确、可落地的结果。

正因如此,我们今天推出 Open Knowledge Format(OKF)——一份开放规范,把 LLM-wiki 模式正式固化为一种可移植、可互操作的格式。它是一套厂商中立、对智能体与人类都友好的标准,用于表达现代 AI 系统所需的元数据、上下文与经过整理的知识。

按照发布版本,OKF v0.1 把知识表示为一个由带 YAML frontmatter 的 markdown 文件组成的目录,并辅以一小套约定俗成的规范——让不同生产者编写的 wiki 无需翻译即可被不同的智能体消费。

就这么简单。没有复杂的压缩方案,没有新的运行时,也不需要任何 SDK。一组 OKF 文档具备以下特性:

  • 只是 markdown —— 可在任何编辑器中阅读,可在 GitHub 上渲染,可被任何搜索工具索引

  • 只是文件 —— 可作为 tarball 分发,可托管在任何 git 仓库中,可挂载到任何文件系统上

  • 只是 YAML frontmatter —— 仅用于那一小部分需要可查询的结构化字段:type、title、description、resource、tags 与 timestamp

如果你用过 Obsidian、Notion、Hugo,或者过去一年里涌现出的任何一种 LLM wiki 模式,这种形态会让你倍感熟悉。OKF 所做的,是把让这些模式之间得以互操作所需的那一小套约定正式确立下来。

下面我们来看看 OKF 能为你的组织解决什么问题、它如何运作、如何上手,以及接下来会怎样。

支离破碎的上下文格局

在大多数组织里,基础模型所使用的信息,绝大部分都是内部知识:一张表的 schema、某个指标在你业务语境中的含义、一次事故的处理手册(runbook)、两个系统之间的连接路径(join path)、某个旧 API 的弃用通知,等等。

如今,这些知识的”原子”散落在各种高度割裂的系统中:

  • 各有其 API 的元数据目录(catalog)

  • wiki、第三方系统,或共享盘

  • 代码注释、docstring,或 notebook 单元格

  • 少数几位资深工程师的脑子里

当一个 AI 智能体需要回答”如何从我们的事件流中计算周活跃用户?“时,它必须从这些分散、彼此互不兼容的载体中拼凑出答案。每家厂商都提供自己的目录、自己的 SDK、自己的知识图谱 schema,而这些知识没有一份能轻松地在不同产品或组织之间移植。

结果就是:每一个智能体构建者都在从零重复解决同一个上下文拼装问题,每一个目录厂商都在重新发明同一套数据模型,而知识本身则被锁死在最初创建它的那个载体背后。

把知识当作一座活的 wiki

开发团队正在改变构建 AI 智能体的方式。与其反复用模型在相同的文档里搜寻相同的事实,不如给你的智能体一座共享的 markdown 知识库,让它随时间推移越用越有价值。这样一来,智能体可以接手阅读和更新自己文件这类繁琐活儿,而你的团队负责整理内容、像管理代码一样管理它。

著名 AI 研究者与教育者 Andrej Karpathy 在他的 LLM Wiki gist 中,把这个想法表达得最为精炼。“LLM 不会觉得无聊,不会忘记更新某条交叉引用,还能在一次处理中改动 15 个文件,“他写道。那些让人类放弃个人 wiki 的记账式杂活,恰恰是 LLM 所擅长的。

类似的”知识即 wiki”模式正以不同的名字反复出现:接入编码智能体的 Obsidian vault、AGENTS.md / CLAUDE.md 这一类约定文件、塞满了 index.md 与 log.md 工件(智能体在真正动手前会先查阅)的仓库,以及数据团队内部”元数据即代码(metadata as code)“的仓库。

这种模式既引人入胜又强大,但每一个实例都是定制的。Karpathy 的 wiki、你团队的 wiki、某厂商导出的目录,看起来可能都长得差不多(markdown、frontmatter、交叉链接),但它们没有一个是被刻意设计成能彼此协作的。对于”每份文档应该携带哪些字段”或”什么文件名代表什么含义”,并不存在一个约定俗成的答案。结果,编码进各类 wiki 的知识仍被困在最初的团队内部,每当要构建一个新智能体时,都会带来重复的劳动。

缺的是一种格式,而不是又一项服务

这个问题的答案不是再来一项知识服务。你需要的是一种格式,一种这样表示知识的方式:

  • 任何人都能生产,不需要 SDK

  • 任何人都能消费,不需要做集成

  • 能在系统、组织与工具之间迁移而不失真

  • 与它所描述的代码一起存活在版本控制中

  • 既能被人类阅读,又能被智能体解析:同一份文件,没有翻译层

OKF 在设计上正是这样一种格式。

OKF 如何运作:一屏看懂的设计

一个 OKF bundle 是一个由 markdown 文件组成的目录,这些文件表示概念(concept):任何你想要捕捉的东西,包括表、数据集、指标、playbook、runbook 和 API。每个概念对应一个文件。文件路径就是该概念的身份标识:

sales/
├── index.md
├── datasets/
│   ├── index.md
│   └── orders_db.md
├── tables/
│   ├── index.md
│   ├── orders.md
│   └── customers.md
└── metrics/
    ├── index.md
    └── weekly_active_users.md

每个概念文档都有一小块用于结构化字段的 YAML frontmatter,以及一段用于承载其余一切的 markdown 正文:

---
type: BigQuery Table
title: Orders
description: One row per completed customer order.
resource: https://console.cloud.google.com/bigquery?p=acme&d=sales&t=orders
tags: [sales, revenue]
timestamp: 2026-05-28T14:30:00Z
---
# Schema
| Column        | Type      | Description                              |
|---------------|-----------|------------------------------------------|
| `order_id`    | STRING    | Globally unique order identifier.        |
| `customer_id` | STRING    | FK to [customers](/tables/customers.md). |
# Joins
Joined with [customers](/tables/customers.md) on `customer_id`.

概念之间用普通的 markdown 链接相互连接,从而把整个目录变成一张关系图(graph)——它比文件系统所隐含的父/子链接要丰富得多。bundle 还可以选择性地包含 index.md 文件(用于在智能体浏览层级结构时做渐进式披露)和 log.md 文件(用于记录变更的时间顺序历史)。

完整的 v0.1 规范(包括一致性判定标准、交叉链接规则,以及为数不多的保留文件名)一页纸就能写完。

设计背后的三条原则

1. 极简的主张。 OKF 对每个概念只强制要求一件事:一个 type 字段。其余一切(例如有哪些 type、还要包含哪些字段、正文里有哪些章节)都交给生产者决定。规范定义的是互操作的接口面,而不是内容模型。

2. 生产者/消费者相互独立。 OKF 把”谁来写知识”和”谁来消费知识”干净地分开。一个由人手工撰写的 bundle 可以被 AI 智能体消费;一个由元数据导出流水线生成的 bundle 可以在可视化工具里浏览;一个由某个 LLM 合成的 bundle 可以被另一个 LLM 查询。格式即契约;两端的工具链则可以各自独立替换。

3. 是格式,不是平台。 OKF 不与任何特定的云、数据库、模型提供商或智能体框架绑定。它永远不会要求一个专有账号或 SDK 才能读、写或提供服务。我们把它作为开放标准发布,是因为一种知识格式的价值来自于有多少方在”说”它,而不是来自于谁拥有它。

我们随规范一并交付的东西

为了让这种格式变得具体,我们在生产端和消费端都发布了参考实现(reference implementation)

  • 一个富化智能体(enrichment agent),它会遍历一个 BigQuery 数据集,为每张表和视图起草一份 OKF 概念文档,然后再跑第二轮 LLM——爬取权威文档,并用引用、schema 与连接路径来富化每个概念。

  • 一个静态 HTML 可视化工具,能把任意 OKF bundle 变成一个交互式图视图,全部装进单个自包含文件里;没有后端,浏览端无需安装,也没有任何数据离开页面。

  • 三套可直接浏览的示例 bundleGA4 电商Stack OverflowBitcoin 公共数据集,由参考智能体生成并提交到仓库中,作为符合 OKF 规范的活样例。

这些都是刻意做成的概念验证(proof of concept)。该智能体演示的只是生产 OKF 的一种方式;格式本身并不要求任何特定的智能体框架或 LLM。该可视化工具演示的只是消费 OKF 的一种方式;格式本身并不要求 HTML 或图视图。我们预期(也希望!)生产者与消费者的生态会远远超出我们已交付的范围。

接下来我们走向何方

OKF v0.1 是一个起点,而非一份已完成的标准。随着更多生产者和消费者的出现,以及我们集体逐渐弄清智能体在实践中究竟需要什么样的知识表示,这种格式会不断演进。

我们从第一天起就公开发布,因为唯有如此,一种知识格式才配得上它的名字——无论你是在构建一个知识目录、一条富化流水线、一座面向 AI 智能体定制的 wiki,还是 AI 知识领域里的任何东西。

从这里出发,我们鼓励你:

  • 读一读规范(它很短!)

  • 写一个生产者,对接你的源系统、你的数据库、你的文档站点

  • 写一个消费者:一个查看器、一个搜索索引,或一个能在 bundle 之上进行推理的智能体

  • 拿你自己的数据试一试参考实现

  • 提 issue、发 PR,或提出扩展提案:规范带版本管理,并且明确为向后兼容的演进而设计

仓库、规范与示例 bundle 都已发布在 GitHub 上。我们也已更新 Google Cloud 的 Knowledge Catalog,使其能够摄取 Open Knowledge Format 并将其提供给我们的智能体。相关代码与示例可在 这里 找到。

真正的贡献是格式本身。我们交付的工具,存在的意义是让它落地为现实,并降低试用它的成本。无论你今天的知识呈现为何种形态,OKF 的设计目标都是成为那门”通用语(lingua franca)“——让知识在明天得以被交换。


本文由 Google Cloud Data Cloud 团队发布。Open Knowledge Format 是一份开放规范;我们明确欢迎各类贡献、替代实现,以及在 Google 产品之外的采用。

除作者之外,这项工作还凝结了 Google 内部许多其他人的关键想法,我们感谢他们的贡献。