Google's Open Knowledge Format Doesn't Replace Vector Search โ It Fixes What Embeddings Were Never Good At
OKF v0.2's actual spec, read against the RAG failure modes it's being sold as a cure for โ and the hybrid architecture that follows once you separate the two problems.
Written against the same RAG and retrieval trade-offs covered in this site's own AI agent pipeline architecture piece โ evaluated from Google's actual OKF spec and blog post, not from secondhand summaries of either.
Google's Open Knowledge Format (OKF) is a markdown-plus-YAML-frontmatter spec for giving AI agents explicit, curated organizational knowledge โ table schemas, join paths, runbooks โ as a directory of cross-linked files. It does not replace vector search: OKF solves deterministic lookup of known facts, RAG solves fuzzy retrieval over unstructured text. They fail differently, so most production systems need both.
1. What OKF Actually Is: A Format, Not a Platform
Strip away the framing and the Open Knowledge Format is specific and small. An OKF bundle is a directory of markdown files. Each file that isn't one of two reserved filenames (index.md, log.md) is a concept โ one knowledge artifact, one file. A concept can be a database table, a business metric definition, an incident runbook, a deprecated API notice, anything an organization wants an AI agent to know without guessing.
Every concept file needs exactly one thing: a YAML frontmatter block with a non-empty type field. That's the entire mandatory surface of the spec.
---type: BigQuery Tabletitle: Ordersdescription: One row per completed customer order.resource: https://console.cloud.google.com/bigquery?p=acme&d=sales&t=orderstags: [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). |# JoinsJoined with [customers](/tables/customers.md) on `customer_id`.Concepts link to each other with plain markdown links, which turns the directory into a graph richer than the parent-child structure the filesystem alone implies โ the customer_id join path above is a real, traversable edge, not a comment. Google's own framing of the design goal is direct: "What's missing is a format, not another service." No SDK, no required cloud account, no proprietary API to read or write a bundle โ it renders on GitHub, ships as a tarball, and mounts on any filesystem as-is.
Worth being precise about where this stands: Google's own post calls v0.1 "a starting point, not a finished standard," and the spec has already moved to v0.2 within months of the initial release, adding provenance and trust fields the original version didn't have. Treat the conformance details below as current, not fixed โ this is a young spec, not a settled one.
2. Why "Replaces the Vector Database" Misreads the Problem
The claim making the rounds โ that OKF is Google quietly deprecating Retrieval-Augmented Generation (RAG), the technique of retrieving relevant text at query time and feeding it to an LLM as context โ doesn't survive contact with Google's own blog post, which never makes that claim. What it actually says is closer to: *stop making agents re-derive facts you already know, from documents, every single time.*
RAG and vector search exist because most organizational knowledge is unstructured, high-volume, and not fully known in advance โ support tickets, chat transcripts, freeform wiki pages, PDFs. There is no schema to write a type: field against. Similarity search over embeddings is the correct tool for "find content related to this query" when *related* is a fuzzy, semantic notion, and it will always be probabilistic: the retrieval step ranks chunks by similarity, not by correctness, so a wrong or outdated chunk can outrank the right one.
OKF targets a narrower, different failure mode: knowledge an organization already has, already knows the shape of, and would rather encode once than have an LLM re-guess from a table name or a stale comment. A join path between two tables isn't "semantically similar" to anything โ it's either documented or it isn't. Chunking a schema into 512-token windows for embedding is how RAG systems mangle exactly this kind of structured fact in the first place, which is the real, specific failure OKF is a direct answer to.
Put the two failure modes side by side and the actual boundary is clear:
| Retrieval need | Right tool | Why |
|---|---|---|
| "What columns does the orders table have, and how does it join to customers?" | OKF | A known, structured fact โ deterministic lookup by file path beats probabilistic ranking over chunked embeddings |
| "Find every support ticket where a customer complained about slow checkout" | RAG / vector search | Unstructured, high-volume, semantically fuzzy โ exactly what embeddings are for |
| "What's the deprecation timeline for the v1 auth API?" | OKF | A specific, known fact an engineer already wrote down once |
| "Summarize what customers think about our new pricing page" | RAG / vector search | No fixed schema, inherently a similarity/aggregation problem |
Neither tool is more advanced than the other โ they're addressing retrieval problems that don't share a failure mode, which is why "replacing" is the wrong verb.
3. The Underrated Part of the Spec: Mandatory Permissiveness
Most first-look coverage of OKF fixates on the markdown-plus-frontmatter format itself, which is the least interesting part โ plenty of internal wiki tooling already does that. The part worth an engineer's attention is buried in the conformance criteria: permissiveness isn't a suggestion, it's a requirement consumers must implement to be spec-compliant.
From the GitHub SPEC.md: consumers MUST tolerate unknown type values, missing optional frontmatter fields, unknown additional frontmatter keys, and broken cross-links โ the spec is explicit that a link whose target doesn't exist in the bundle "is not malformed." Type values aren't centrally registered either; producers pick descriptive strings, and consumers are required to degrade gracefully on anything they don't recognize.
This is a deliberate, load-bearing design choice, not an oversight. A centrally-registered schema (the kind most internal metadata catalogs eventually grow) requires every consumer to be updated in lockstep with every producer's changes, or reads start failing. OKF's permissive-by-mandate conformance means a team can add a new concept type, restructure a directory, or start linking to files that don't exist yet โ mid-migration โ without a coordinated release across every system that reads the bundle. That's the same operational property that makes semantic versioning's "additive changes are non-breaking" convention useful at scale, applied to a knowledge graph instead of an API.
4. The Architecture That Actually Follows: Both, Not Either
Once OKF and RAG are understood as answers to different retrieval problems, the practical design isn't a migration โ it's a split, based on the same question for every piece of context an agent needs: is this a known fact, or a fuzzy search?
Known facts โ OKF, loaded deterministically. Table schemas, join paths, metric definitions, runbooks, API deprecation notices โ anything with an owner who could write it down once and have it stay true until someone updates it. These get read directly by file path or walked via the concept graph, and injected into an agent's context without a similarity search in the loop at all. There's nothing to rank; the agent asked for the orders table's schema and got the orders table's schema.
Fuzzy retrieval โ RAG, unchanged. Support tickets, chat transcripts, freeform documentation, anything where "relevant" is inherently a matter of degree rather than an exact match. This is still embeddings, still chunking, still a vector index โ OKF doesn't touch this half of the system, because it isn't built to.
The connective layer is the interesting engineering work. An OKF concept file can *point at* the unstructured corpus a RAG pipeline indexes โ a runbook's frontmatter resource field linking to the incident channel it was written from, a metric definition linking to the dashboard that computes it โ without OKF trying to represent that corpus itself. The graph traversal answers "what do we know," and hands off to vector search for "what does everyone say about it." Building both into the same agent's tool surface โ one deterministic lookup tool, one similarity-search tool, and letting the agent (or a router in front of it) pick per query โ is the shape of system this actually points toward, not a replacement of one with the other.
Frequently Asked Questions
Does OKF replace RAG or vector databases?
No โ Google's own OKF blog post presents it as solving a different problem, not competing on the same axis. RAG and vector search exist to find semantically similar content across large, unstructured, and often unknown-in-advance corpora โ support tickets, chat logs, freeform documents. OKF exists to give an agent explicit, curated facts an organization already knows and wants represented deterministically โ a table's schema, a join path, a deprecation notice. A vector index can't guarantee it retrieves the exact right join path; a markdown file with a type field doesn't need to guess.
What's the minimum required for a valid OKF bundle?
Per the SPEC.md conformance criteria, exactly one thing is universally required: every non-reserved markdown file must have a YAML frontmatter block containing a non-empty type field. Everything else โ title, description, tags, resource links โ is optional. Consumers are explicitly required to tolerate unknown type values, missing optional fields, and broken cross-links without rejecting the bundle.
How does OKF avoid breaking every consumer when the schema evolves?
By making permissiveness a conformance requirement rather than a best practice. The spec states that consumers MUST tolerate unknown type values, missing optional frontmatter fields, unknown additional frontmatter keys, and broken cross-links โ a link whose target doesn't exist is explicitly 'not malformed.' That's what lets producers add new concept types or restructure a bundle without a central schema registry coordinating every consumer's release.