- **OKF(Open Knowledge Format)**๋ LLM-wiki ํจํด์ ์ด์ ๊ฐ๋ฅํ(portable) ํ์์ผ๋ก ํ์คํํ ๊ฐ๋ฐฉํ ๋ช ์ธ(open specification)
- ๋ฉํ๋ฐ์ดํฐยท์ปจํ ์คํธยท์ ์ ๋ ์ง์์ ํํํ๋ ๋ฒค๋ ์ค๋ฆฝ(vendor-neutral)ยท์์ด์ ํธ/์ฌ๋ ์นํ์ ํ์ค
- YAML frontmatter๋ฅผ ๊ฐ์ง markdown ํ์ผ๋ค์ ๋๋ ํฐ๋ฆฌ ๊ตฌ์กฐ
- ๋๊ฐ ์ฐ๋์ง(producer)์ ๋๊ฐ ์ฝ๋์ง(consumer)๋ฅผ ๋ถ๋ฆฌํ ๊ตํ ํฌ๋งท(lingua franca)
์ฝ๊ฒ ์ดํดํ๊ธฐ
๋์๋ฆฌ ์ด์ ์ ๋ณด๋ฅผ ๋ ์ฌ๋ ค ๋ณด์. ์ ๋ฐฐ๋ค์ด ๊ฐ์ ์นดํกยท๊ตฌ๊ธ๋ฅ์คยท๋จธ๋ฆฟ์์ ์ ๋ณด๋ฅผ ํฉ์ด ๋์ผ๋ฉด, ์๋ก ๋ค์ด์จ ํ๋ฐฐ(๋๋ ์ AI ๋น์)๋ ๋งค๋ฒ โ๊ทธ๊ฑด ๋๊ตฌํํ ๋ฌผ์ด๋ด์ผ ํด?โ๋ฅผ ๋ฐ๋ณตํ๊ฒ ๋๋ค.
OKF๋ โ๋ชจ๋ ์ ๋ณด๋ฅผ ๋๊ฐ์ ์์์ ๋ฉ๋ชจ ์นด๋(๋งจ ์์ ์ ๋ชฉยทํ๊ทธ ๋ผ๋ฒจ + ๋ณธ๋ฌธ์ ๋งํฌ๋ค์ด)๋ก, ํ ํด๋์ ๋ชจ์๋์โ๋ ์ฝ์์ด๋ค. ์นด๋ ์์์ด ํต์ผ๋ผ ์์ผ๋ โ ๋๊ฐ ์ผ๋ ์๊ด์์ด โ ์ฌ๋๋ ์ฝ๊ณ AI ๋น์๋ ๋ฒ์ญ ์์ด ๊ทธ๋๋ก ์ฝ๋๋ค. ์๋ฆฌ๋ก ์น๋ฉด ์ธ์์ ๋ชจ๋ ๋ ์ํผ๋ฅผ ๋๊ฐ์ ์นด๋ ์์(์ ๋ชฉ / ์ฌ๋ฃ / ์์)์ผ๋ก ์จ๋ ๋ ์ํผ ๋ฐ์ค ์ ๊ฐ๋ค. ์ฌ๋๋ ๋ณด๊ณ , ์๋ฆฌ ๋ก๋ด๋ ๋ณธ๋ค.
ํด๋น ๊ฐ๋ ์ด ํ์ํ ์ด์
- ์กฐ์ง์ ์ง์์ด ๋ฉํ๋ฐ์ดํฐ ์นดํ๋ก๊ทธยท์ํคยท์ฝ๋ ์ฃผ์ยทโ๋ช๋ช ์๋์ด ์์ง๋์ด์ ๋จธ๋ฆฟ์โ์ ํฉ์ด์ ธ ์๋ ํํธํ(fragmentation)
- ๋ชจ๋ ์์ด์ ํธ ๋น๋๊ฐ ๋์ผํ context-assembly ๋ฌธ์ ๋ฅผ ๋งค๋ฒ ์ฒ์๋ถํฐ ํธ๋ ์ค๋ณต ๋น์ฉ
- ์ง์์ด ๊ทธ๊ฒ์ ๋ง๋ surface(๋๊ตฌ/ํ๋ซํผ)์ ๋ฌถ์ด๋ ๋ฒค๋ lock-in
AS-IS โ ํํธํ๋ ์ง์, ์์ด์ ํธ๋ง๋ค ์ฌ์กฐ๋ฆฝ
flowchart LR MC[Metadata Catalog] --> A1[Agent A] WK[Wiki / Drive] --> A1 CC[Code comments] --> A1 SE[Senior eng's head] --> A1 MC --> A2[Agent B] WK --> A2 CC --> A2 SE --> A2 A1 -. ๊ฐ์ context ์กฐ๋ฆฝ ์ฌ๊ตฌํ .-> X((์ค๋ณต)) A2 -. ๊ฐ์ context ์กฐ๋ฆฝ ์ฌ๊ตฌํ .-> X
TO-BE โ ๊ณต์ OKF ๋ฒ๋ค์ ๋๊ตฌ๋ ์๋น
flowchart LR P[Producer<br/>์ฌ๋ or ์์ด์ ํธ] -->|writes| OKF[(OKF bundle<br/>markdown + YAML)] OKF --> A1[Agent A] OKF --> A2[Agent B] OKF --> H[Human reader]
OKF ์ค๊ณ ์์น 3๊ฐ์ง
1. Minimally Opinionated (์ต์ํ์ ๊ท์ฝ)
๋ชจ๋ concept์ ๋จ ํ๋, type ํ๋๋ง ์๊ตฌํ๋ค. ๋๋จธ์ง๋ ์ ๋ถ producer์ ์์ ์ ๋งก๊ธด๋ค.
2. Producer/Consumer Independence (์์ฐ์ยท์๋น์ ๋ถ๋ฆฌ)
์ง์์ ์ฐ๋ ์ฃผ์ฒด์ ์ฝ๋ ์ฃผ์ฒด๋ฅผ ๊น๋ํ๊ฒ ๋ถ๋ฆฌํ๋ค. ์ฌ๋์ด ์์ผ๋ก ์์ฑํ bundle์ AI ์์ด์ ํธ๊ฐ ๊ทธ๋๋ก ์๋นํ ์ ์๋ค.
3. Format, not Platform (ํ๋ซํผ์ด ์๋ ํฌ๋งท)
ํน์ ํด๋ผ์ฐ๋ยทDBยท๋ชจ๋ธ ์ ๊ณต์ยท์์ด์ ํธ ํ๋ ์์ํฌ์ ๋ฌถ์ด์ง ์๋๋ค. ์ฝ๊ณ ยท์ฐ๊ณ ยท์๋นํ๋ ๋ฐ ๋ ์ ๊ณ์ ์ด๋ SDK๊ฐ ์ ๋ ํ์ํ์ง ์๋ค.
OKF์ 3๊ฐ์ง ํต์ฌ ์์ฑ
- Just markdown โ ์ด๋ค ์๋ํฐ์์๋ ์ฝํ๊ณ , GitHub์์ ๋ ๋๋ง๋๋ฉฐ, ์ด๋ค ๊ฒ์ ๋๊ตฌ๋ก๋ ์ธ๋ฑ์ฑ๋จ
- Just files โ tarball๋ก ๋ฐฐํฌ, ๋ชจ๋ git repo์ ํธ์คํ , ๋ชจ๋ ํ์ผ์์คํ ์ ๋ง์ดํธ ๊ฐ๋ฅ (๋ฒ๋ค ํจํค์งยท๊ตฌ์กฐยท๋ณํฉ ๊ท์น์ OKF Bundle (๋ฒ๋ค๋ง))
- Just YAML frontmatter โ
type,title,description,resource,tags,timestamp๊ฐ์ ์ง์ ๊ฐ๋ฅํ ๊ตฌ์กฐํ ํ๋
OKF ๋๋ ํฐ๋ฆฌ & ๋ฌธ์ ํฌ๋งท ์์
sales/
โโโ index.md
โโโ datasets/
โ โโโ index.md
โ โโโ orders_db.md
โโโ tables/
โ โโโ index.md
โ โโโ orders.md
โ โโโ customers.md
โโโ metrics/
โโโ index.md
โโโ weekly_active_users.md
---
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`.์ ์์์ฒ๋ผ metricยทtableยทjoin์ ๋ฌธ์๋ก ์ ์ํ๋ ๋ฐฉ์์ ์๋งจํฑ ๋ ์ด์ด์ ๋ฌธ์ ์์ญ์ด ๊ฒน์น๋ค. ๋ค๋ง OKF๋ ์คํ ๊ฐ๋ฅํ ์ฟผ๋ฆฌ ์์ง์ด ์๋๋ผ ์ง์์ ํํยท๊ตํํ๋ ํฌ๋งท์ด๋ผ๋ ์ ์ด ๋ค๋ฅด๋ค โ โ์ด metric์ด ๋ฌด์์ ์๋ฏธํ๋์งโ๋ฅผ ์ ๋ฌํ์ง, ์ง์ ์ซ์๋ฅผ ๊ณ์ฐํด ์ฃผ์ง๋ ์๋๋ค.
ํ์ผ ์์คํ ์ ๋์ด์๋ โ์ง์ ๊ทธ๋ํโ
concept๋ค์ด ์ผ๋ฐ markdown ๋งํฌ๋ก ์๋ก๋ฅผ ์ฐธ์กฐํ๋ฉด์, ๋๋ ํฐ๋ฆฌ๋ ๋จ์ํ ๋ถ๋ชจ/์์ ๊ด๊ณ๋ฅผ ๋์ด ๊ด๊ณ์ ๊ทธ๋ํ๊ฐ ๋๋ค โ OKF๋ ๋ฌด๊ฑฐ์ด RDFยทtriple store ์์ด markdown ๋งํฌ๋ง์ผ๋ก ๊ฐ๋ฒผ์ด ์ง์ ๊ทธ๋ํ๋ฅผ ๊ตฌํํ๋ ์ ์ด๋ค.
๋ ํผ๋ฐ์ค ๊ตฌํ (v0.1)
- Enrichment agent โ BigQuery ๋ฐ์ดํฐ์ ์ ์ํํ๋ฉฐ ํ ์ด๋ธ/๋ทฐ๋ง๋ค OKF concept ๋ฌธ์๋ฅผ ์ด์ ์์ฑํ๊ณ , 2์ฐจ LLM ํจ์ค๋ก ๊ณต์ ๋ฌธ์๋ฅผ ํฌ๋กค๋งํด citationยท์คํค๋งยทjoin path๋ก ๋ณด๊ฐ
- Static HTML visualizer โ ๋ฐฑ์๋ ์์ด ๋์ํ๋ ์๊ฐํ ๋๊ตฌ
- 3๊ฐ ์ํ ๋ฒ๋ค โ GA4 e-commerce, Stack Overflow, Bitcoin ๋ฐ์ดํฐ์
- Google Cloud Knowledge Catalog๊ฐ OKF๋ฅผ ingestํด ์์ด์ ํธ์ ์๋นํ๋๋ก ์ ๋ฐ์ดํธ๋จ
์ค์ ์ ์ฉ ์ฌ๋ก
โ BigQuery ๋ฐ์ดํฐ์ ์ OKF ๋ฒ๋ค๋ก ์๋ ๋ณํ โ enrichment agent
๊ฐ์ฅ ๊ตฌ์ฒด์ ์ธ ์ ์ฉ์ Google์ด ๋ ํผ๋ฐ์ค๋ก ๊ณต๊ฐํ enrichment agent(enrichment_agent)๋ค. ๊ณต์ ๊ตฌํ์ ๋ ๊ฐ์ ํจ์ค๋ก ๋์ํ๋ค.
- BQ Pass (1์ฐจ) โ BigQuery ๋ฉํ๋ฐ์ดํฐ๋ง ์ฌ์ฉํด ์์ค๊ฐ ๊ด๊ณ ํ๋ concept๋ง๋ค OKF ๋ฌธ์ ํ ์ฅ์ ์์ฑํ๋ค (โwrites one OKF doc per concept the source advertises, using BigQuery metadata aloneโ). frontmatter์
type: BigQuery Table,title,resource(์ฝ์ ๋งํฌ)๋ฅผ ์ฑ์ฐ๊ณ ๋ณธ๋ฌธ์ ์คํค๋ง ํ๋ฅผ ๋ฃ๋๋ค. - Web Pass (2์ฐจ, LLM) โ seed URL ๋ชฉ๋ก(
--web-seed-file)์ ๋ฐ์fetch_url๋ก ๊ณต์ ๋ฌธ์๋ฅผ ํฌ๋กค๋งํ๊ณ , ๊ถ์ ์๋ ๋ฌธ์๋ก ๋ณด์ด๋ outbound ๋งํฌ๋ฅผ ๋ฐ๋ผ๊ฐ๋ค. ํ์ด์ง๋ง๋ค โ ๊ธฐ์กด concept์ citationยท์คํค๋งยทjoin path ๋ณด๊ฐ, โreferences/<slug>์ ๋ฌธ์ ์์ฑ, โ skip ์ค ํ๋๋ฅผ ์ ํํ๋ค.--web-max-pages์ํ๊ณผ same-domain ํํฐ๋ก ํฌ๋กค๋ง ํญ์ฃผ๋ฅผ ๋ง๋๋ค.
์คํ์ ํ ์ค์ด๋ค.
python -m enrichment_agent enrich \
--source bq \
--dataset <project>.<dataset> \
--web-seed-file seeds.txt \
--out ./bundles/<name>AS-IS โ ์์์ ๋ฌธ์ํ + ํฉ์ด์ง ์ปจํ ์คํธ
flowchart LR DS[(BigQuery Dataset<br/>์๋ฐฑ ๊ฐ table/view)] --> ENG[์์ง๋์ด<br/>์์์ ๋ฌธ์ํ] ENG --> WK[Wiki] ENG --> CAT[Metadata Catalog] ENG --> CM[์ฝ๋ ์ฃผ์] ENG -. ๋๋ฝยท๋ฐฉ์น .-> SE[(์๋์ด ๋จธ๋ฆฟ์)] Q["์์ด์ ํธ ์ง๋ฌธ<br/>'WAU ์ด๋ป๊ฒ ๊ณ์ฐ?'"] --> ST{ํฉ์ด์ง ๊ณณ์์<br/>์ปจํ ์คํธ ์ฌ์กฐ๋ฆฝ} WK --> ST CAT --> ST CM --> ST SE --> ST ST -. ๋ถ์์ ยท๋ถ์ผ์นยทstale .-> X((๋ต ์ ๋ขฐ๋ ๋ฎ์))
TO-BE โ enrichment agent 2-pass ์๋ ์์ฑ
flowchart TB DS[(BigQuery Dataset)] --> BQ SEED[seed URLs<br/>--web-seed-file] --> WEB subgraph BQ["BQ Pass (1์ฐจ)"] BQ1[ํ ์ด๋ธยท๋ทฐ ์ํ] --> BQ2[concept๋ง๋ค OKF ๋ฌธ์ ์ด์<br/>๋ฉํ๋ฐ์ดํฐ๋ง ์ฌ์ฉ] end BQ --> WEB subgraph WEB["Web Pass (2์ฐจ, LLM)"] W1[fetch_url๋ก ๊ณต์ ๋ฌธ์ ํฌ๋กค๋ง] --> W2{ํ์ด์ง๋ณ ํ๋จ} W2 -->|enrich| W3[citationยท์คํค๋งยทjoin path ๋ณด๊ฐ] W2 -->|mint| W4["references/<slug> ์ ๋ฌธ์"] W2 -->|skip| W5[๊ฑด๋๋] end WEB --> OUT[(OKF ๋ฒ๋ค<br/>./bundles/name)] OUT --> HUMAN[์ฌ๋: GitHub ๋ ๋๋ง] OUT --> AGENT[์์ด์ ํธ: ๋ฒ์ญ ์์ด ์๋น]
์ด์ โ ์๋ฐฑ ๊ฐ ํ ์ด๋ธ์ ์๋ฏธยท์กฐ์ธ ๊ด๊ณ๋ฅผ ์ฌ๋์ด ์ผ์ผ์ด ๋ฌธ์ํํ๋ ์์ ์ด ์๋ํ๋๋ค. ๋ ์ค์ํ ๊ฑด ๊ฒฐ๊ณผ๋ฌผ์ด ์ฌ๋์ด GitHub์์ ์ฝ๋ ๋ฌธ์์ ์์ด์ ํธ๊ฐ ์๋นํ๋ ์ปจํ ์คํธ๊ฐ ๊ฐ์ ๋งํฌ๋ค์ด ํ ๋ฒ์ด๋ผ๋ ์ ์ด๋ค. โ์์ด์ ํธ์ฉ ๋ฉํ๋ฐ์ดํฐโ์ โ์ฌ๋์ฉ ์ํคโ๋ฅผ ๋ฐ๋ก ๊ด๋ฆฌํ๋ ์ด์ค ๋น์ฉ์ด ์ฌ๋ผ์ง๋ค.
โก Knowledge Catalog๊ฐ OKF๋ฅผ ingestํด ์์ด์ ํธ์ ์๋น
Google Cloud๋ Knowledge Catalog๊ฐ OKF ๋ฒ๋ค์ ingestํ๋๋ก ์ ๋ฐ์ดํธํ๋ค โ โWe have also updated Google Cloudโs Knowledge Catalog to be able to ingest Open Knowledge Format and serve it to our agents.โ OKF๋ก ์ ๋ฆฌํ ์ง์์ ์นดํ๋ก๊ทธ์ ์ฌ๋ฆฌ๋ฉด GCP์ ์์ด์ ํธ๋ค์ด ๊ทธ ์ปจํ ์คํธ๋ฅผ ๋ฒ์ญยท๋ณํ ๋ ์ด์ด ์์ด ๊ทธ๋๋ก ๋ฐ์ ์ด๋ค.
AS-IS โ ์์ด์ ํธ๋ง๋ค surface๋ณ ์ปค๋ฅํฐ ์ง์ ๊ตฌํ
flowchart LR subgraph SRC[ํฉ์ด์ง ์ง์ surface] MC[Metadata Catalog<br/>๋ ์ API] WK[Wiki / Drive] CC[์ฝ๋ ์ฃผ์] SE[(์๋์ด ๋จธ๋ฆฟ์)] end A1[Agent A] --> MC A1 --> WK A2[Agent B] --> MC A2 --> CC MC -. ์นดํ๋ก๊ทธ ๋ฒค๋๋ง๋ค<br/>๋ฐ์ดํฐ ๋ชจ๋ธ ์ฌ๋ฐ๋ช .-> X((ํตํฉยท์ฌ์ฌ์ฉ ์ ๋จ))
TO-BE โ OKF ๋ฒ๋ค์ ์นดํ๋ก๊ทธ๊ฐ ingest โ ์์ด์ ํธ์ serve
flowchart LR P[Producer<br/>์ฌ๋ or enrichment agent] -->|OKF ๋ฒ๋ค ์์ฑ| OKF[(OKF bundle<br/>markdown + YAML)] OKF -->|ingest| KC[Google Cloud<br/>Knowledge Catalog] KC -->|serve| A1[Agent A] KC -->|serve| A2[Agent B] KC -->|serve| A3[Agent C]
์ด์ โ ์ด๋ฏธ GCP๋ฅผ ์ฐ๋ ํ์ โ์ง์ ์์ฑ โ ์นดํ๋ก๊ทธ ์ ์ฌ โ ์์ด์ ํธ ์๋นโ๋ฅผ ํ์ค ํฌ๋งท ํ๋๋ก ์ฐ๊ฒฐํ ์ ์๋ค. ์นดํ๋ก๊ทธ ๋ฒค๋๊ฐ ๋งค๋ฒ ์์ฒด ๋ฐ์ดํฐ ๋ชจ๋ธ์ ์ฌ๋ฐ๋ช ํ๋ ๋ฌธ์ (๋ธ๋ก๊ทธ๊ฐ ์ง์ ํ โevery catalog vendor is reinventing the same data modelsโ)๋ฅผ ์ฐํํ๋ค.
โข ์ด์์๋ ์์ โ ๊ณต๊ฐ ์ํ ๋ฒ๋ค 3์ข + ๋น์ฃผ์ผ๋ผ์ด์
GA4 e-commerce / Stack Overflow / Bitcoin ๊ณต๊ฐ ๋ฐ์ดํฐ์ ์ enrichment agent๋ก ๋ณํํ ๋ฒ๋ค์ด GitHub์ ์ปค๋ฐ๋ผ ์๋ค. ๋ฐฑ์๋ ์์ด ๋๋ static HTML visualizer๋ก concept ๊ฐ ๋งํฌ ๊ทธ๋ํ๋ฅผ ๋ฐ๋ก ๋๋ฌ๋ณผ ์ ์์ด, โOKF ๋ฒ๋ค์ด ์ค์ ๋ก ์ด๋ค ๋ชจ์์ธ์งโ๋ฅผ ํด๋ก ํ ๋ฒ์ผ๋ก ํ์ธํ ์ ์๋ค.
์ด์ โ ์ ๋์ ํ์ด โํ์ค์ด ์๋ํ ์ ์ฉ ๋ฐฉ์โ์ ์ถ์์ ๋ช ์ธ๊ฐ ์๋๋ผ ๋์ํ๋ conformant ๋ฒ๋ค๋ก ํ์ตํ ์ ์๋ค. ๋ช ์ธ์๊ฐ ํ ํ์ด์ง์ ๋ค์ด๊ฐ ๋งํผ ์๊ณ , ์ํ์ด ๊ณง ํํ ๋ฆฌ์ผ ์ญํ ์ ํ๋ค.
์ฐธ๊ณ : OKF๋ 2026-06-12 ๊ณต๊ฐ๋ v0.1 ์ ์ ํ์ค์ด๋ผ, ์์ง์ ์ธ๋ถ ๋๊ท๋ชจ ๋์ ์ฌ๋ก๋ณด๋ค ์ ๋ ํผ๋ฐ์ค ๊ตฌํ์ด โํ์ค์ด ์๋ํ ์ ์ฉ ๋ฐฉ์โ์ ๋ณด์ฌ์ฃผ๋ ์ค์ฌ ์์๋ค.