OpenKB README

The project's README from github.com/VectifyAI/OpenKB. As one markdown file: README.md.

OpenKB (by PageIndex)

VectifyAI%2FOpenKB | Trendshift

OpenKB: Open LLM Knowledge Base

Scale to long documents • Reasoning-based retrieval • Native multi-modality • No Vector DB

📢 Recent Updates

  • Google Open Knowledge Format (OKF): Wiki pages follow the Google OKF specification for knowledge sharing.
  • Entity Pages: People, orgs, places, and products as dedicated wiki pages, auto-extracted and kept in sync.

📑 What is OpenKB

OpenKB (Open Knowledge Base) is an open-source system (in CLI) that compiles raw documents into a structured, interlinked wiki-style knowledge base using LLMs, powered by PageIndex's vectorless, reasoning-based retrieval for long documents.

The idea is based on a concept described by Andrej Karpathy: LLMs generate summaries, concept pages, and cross-references, all maintained automatically. Knowledge compounds over time instead of being re-derived on every query.

Why not traditional RAG?

Traditional RAG rediscovers knowledge from scratch on every query. Nothing accumulates. OpenKB compiles knowledge once into a persistent wiki, then keeps it current. Cross-references already exist, contradictions are flagged, and synthesis reflects everything consumed.

OpenKB has two layers: a wiki foundation that compiles and maintains your knowledge, and generators (query / chat / Skill Factory) that turn it into useful output. See Usage for the full command list.

Features

🚀 Getting Started

Install

pip install openkb
Other install options:
  • Latest from GitHub:

    pip install git+https://github.com/VectifyAI/OpenKB.git
    
  • Install from source (editable, for development):

    git clone https://github.com/VectifyAI/OpenKB.git
    cd OpenKB
    pip install -e .
    

Quick Start

# 1. Create a directory for your knowledge base
mkdir my-kb && cd my-kb

# 2. Initialize the knowledge base
openkb init

# 3. Add documents
openkb add paper.pdf
openkb add ~/papers/                            # Add a whole directory
openkb add https://arxiv.org/pdf/2509.11420     # Or fetch from a URL

# 4. Ask a question
openkb query "What are the main findings?"

# 5. Or chat interactively
openkb chat

# (Optional) Turn the wiki into other outputs
openkb skill new my-expert "Reason like an expert on <your-topic>"   # a portable agent skill
openkb visualize                                                     # an interactive knowledge graph
openkb deck new my-deck "An intro deck on <your-topic>"              # slides — a single-file HTML deck

Set up your LLM

OpenKB supports multiple LLM providers (OpenAI, Claude, Gemini, etc.) via LiteLLM (pinned to a safe version).

Set your model during openkb init or in .openkb/config.yaml using the provider/model LiteLLM format (e.g. anthropic/claude-sonnet-4-6). OpenAI models can omit the prefix (e.g. gpt-5.4).

Create a .env file with your LLM API key:

LLM_API_KEY=your_llm_api_key

Subscription-based providers that authenticate via OAuth device flow (e.g. chatgpt/*, github_copilot/*) need no API key; OpenKB skips the missing-key warning for them.

Knowledge Workbench (Web UI)

OpenKB ships a bundled web UI, served by the REST API at /. Install the API extra and start the server — no configuration needed:

pip install "openkb[web]"
openkb-web                       # serves the API + Workbench at http://127.0.0.1:7566/

Open http://127.0.0.1:7566/ for the Workbench. Auth is off by default (local-first); set OPENKB_API_TOKEN to require a bearer token before exposing the server. See the full Web UI guide.

Working on the UI itself? Run the Vite dev server with cd frontend && npm install && npm run dev (it proxies /api to a running openkb-web), or npm run build to regenerate the bundled openkb/web/.

🧩 How OpenKB Works

Architecture

OpenKB Architecture: from raw documents (markitdown / PageIndex) through LLM wiki compilation to the wiki/ foundation, powering query/chat, the Skill Factory, and future generators

Short vs Long Document Handling

Short documents Long documents (PDF ≥ 20 pages)
Convert markitdown → Markdown PageIndex → tree index + summaries
Images Extracted inline (pymupdf) Extracted by PageIndex
LLM reads Full text Document trees
Result summary + concepts summary + concepts

Short documents are read in full by the LLM. Long PDFs are processed by PageIndex into a hierarchical tree index. The LLM reads the tree instead of the full text, enabling accurate and scalable retrieval for long documents.

Knowledge Compilation

When you add a document, the LLM:

  1. Generates a summary page
  2. Reads existing concept and entity pages
  3. Creates or updates concepts with cross-document synthesis
  4. Creates or updates entity pages (people, orgs, places, products)
  5. Updates the index and log

A single source might touch 10--15 wiki pages. Knowledge accumulates: each document enriches the existing wiki rather than sitting in isolation.

⚙️ Usage

OpenKB commands fall into two layers: the wiki foundation (compile + manage your knowledge) and generators (turn that wiki into useful output). Each links to a concrete walkthrough — a real artifact OpenKB generated from one sample paper (browse them all in examples/).

Layer 1: 🧱 Wiki Foundation — compile and maintain

Command Description
openkb init Initialize a new knowledge base (interactive)
openkb add <file_or_dir_or_URL> Add files, directories, or URLs and compile to wiki (URL content type is auto-detected)
openkb list List indexed documents and concepts
openkb status Show knowledge base stats
openkb watch Watch raw/ and auto-compile new files
openkb lint Run structural and knowledge health checks
More wiki commands:
Command Description
openkb remove <doc> Remove a document and clean up its wiki pages, images, registry, and PageIndex state (--dry-run to preview, --keep-raw / --keep-empty to retain artifacts)
openkb recompile [<doc>] [--all] Re-run the compile pipeline on already-indexed docs without re-indexing. Regenerates summaries and rewrites concept pages; manual edits are overwritten (--dry-run to preview, --refresh-schema to also update wiki/AGENTS.md)
openkb feedback ["msg"] File feedback by opening a prefilled GitHub issue (--type bug/feature/question to tag it)

→ Example: the everyday loop walked through end to end — examples/commands/.

Layer 2: 💡 Generators — turn the wiki into output

A "generator" reads from the compiled wiki and produces something usable: an answer, a conversation, a skill folder. The wiki is the substrate; generators are the surfaces.

Command Output Example
openkb query "question" A grounded answer with citations (--save to persist to wiki/explorations/) query & save
openkb chat Interactive multi-turn session over the wiki (--resume, --list, --delete to manage sessions) chat
openkb visualize A self-contained interactive knowledge graph at output/visualize/graph.html — 3D, mind-map, and radial views visualize
openkb skill new <skill-name> "<intent>" Distill a redistributable agent skill from your wiki (see Skill Factory below) skills
openkb deck new <name> "<intent>" Generate a single-file HTML slide deck (--skill picks a theme, --critique runs a quality pass) slides

(i) 💬 Query & Chat — ask the wiki

openkb query "..." answers a single question with a grounded, cited answer from your wiki. openkb chat is interactive, an ongoing multi-turn session over the same wiki (--resume, --list, --delete to manage sessions). → Walked through with real saved output in examples/commands/ (query) and examples/chat/ (chat).

Inside a chat, type / to access slash commands (Tab to complete).

More slash commands:
  • /help: list available commands
  • /status: show knowledge base status
  • /list: list all documents
  • /add <path>: add a document or directory without leaving the chat
  • /skill new <skill-name> "<intent>": compile a skill from this chat (see below)
  • /deck new <name> "<intent>": generate an HTML slide deck from the wiki
  • /critique <path>: run the HTML critic over an existing deck
  • /save [name]: export the transcript to wiki/explorations/
  • /clear: start a fresh session (the current one stays on disk)
  • /lint: run knowledge base lint
  • /exit: exit (Ctrl-D also works)

(ii) 🛠 Skill Factory — drop in a book; out comes a digital expert.

openkb skill new distills a portable agent skill from your wiki that Claude Code, Codex, and Gemini can install and load natively. Drop in a book's worth of papers; out comes a specialist other agents can call on. → A real generated skill, plus install / share / eval / rollback, is walked through in examples/skills/.

More skill commands:
Command Output
openkb skill validate [name] Validate compiled skills (auto-runs after skill new)
openkb skill eval <name> Check the skill triggers on the right prompts
openkb skill history <name> / openkb skill rollback <name> Version history + rollback for skills

🔧 Configuration

Settings

OpenKB settings are initialized by openkb init and stored in .openkb/config.yaml:

model: gpt-5.4                   # LLM model (any LiteLLM-supported provider)
language: en                     # Wiki output language
pageindex_threshold: 20          # PDF pages threshold for PageIndex

The full settings reference — entity_types, OAuth providers (chatgpt/*, github_copilot/*), and LiteLLM tuning (timeouts for slow local runtimes like Ollama / LM Studio, drop_params, GitHub Copilot headers, install notes) — is in examples/configuration/.

PageIndex Setup

Long-document retrieval is a known challenge for LLMs. PageIndex solves this with vectorless, reasoning-based retrieval, by building a hierarchical tree index that lets LLMs reason over the index for context-aware retrieval.

PageIndex runs locally by default using the open-source version, with no external dependencies required.

Cloud Support (Optional):

For large or complex PDFs, PageIndex Cloud can be used to access additional capabilities, including:

Set PAGEINDEX_API_KEY in your .env to enable cloud features:

PAGEINDEX_API_KEY=your_pageindex_api_key

→ Example: local vs. cloud indexing, and importing a cloud-indexed doc — examples/pageindex-cloud/.

AGENTS.md

The wiki/AGENTS.md file defines wiki structure and conventions. It's the LLM's instruction manual for maintaining the wiki. Customize it to change how your wiki is organized.

The LLM reads AGENTS.md from disk at runtime, so your edits take effect immediately.

🔌 Integrations

Using with Obsidian

The wiki is a directory of Markdown files with [[wikilinks]]. Obsidian renders it natively.

  1. Open wiki/ as an Obsidian vault
  2. Browse summaries, concepts, and explorations
  3. Use graph view to see knowledge connections
  4. Use Obsidian Web Clipper to add web articles to raw/

Using with Claude Code / Codex / Gemini CLI

OpenKB ships a SKILL.md so any agent can read your compiled wiki. No extra runtime, no MCP setup, just install the skill once.

Claude Code:
/plugin marketplace add VectifyAI/OpenKB
/plugin install openkb@vectify
OpenAI Codex CLI:

(no marketplace command yet; manual symlink)

git clone https://github.com/VectifyAI/OpenKB.git ~/openkb-src
mkdir -p ~/.agents/skills
ln -s ~/openkb-src/skills/openkb ~/.agents/skills/openkb
Gemini CLI:
gemini skills install https://github.com/VectifyAI/OpenKB.git --path skills/openkb --consent

The skill is read-only. It won't run openkb add, remove, or lint --fix without you asking. See skills/openkb/SKILL.md for the full instruction set.

REST API

OpenKB ships a FastAPI service for HTTP clients. Install with pip install -e ".[web]", then start with python -m openkb.api. The interactive API reference is at /docs (importable into Postman).

See the full REST API reference for endpoints, auth, and SSE streaming.

🧭 Learn More

Compared to Karpathy's Approach

Karpathy's workflow OpenKB
Short documents LLM reads directly markitdown → LLM reads
Long documents Context limits, context rot PageIndex tree index
Input sources Web clipper → .md PDF, Word, PPT, Excel, HTML, text, CSV, .md, URLs
Wiki compilation LLM agent LLM agent (same)
Entity extraction Manual Automatic (people, orgs, places, products)
Q&A Query over wiki

OpenKB (VectifyAI/OpenKB)

Searching Database…

4.8K ·GitHub
这是什么?OpenKB 是一个开源命令行系统,它利用大语言模型把原始文档编译成结构化、相互链接的维基式知识库,让知识随时间不断积累,而不是在每次查询时重新推导。
这基本上是一个用于 RAG 的向量数据库吗?不是,OpenKB 明确避免使用向量数据库。它不会在每次查询时从嵌入向量重新推导答案,而是把文档一次性编译成一个持久的 Markdown 维基,其中的摘要、概念页面和交叉链接保持同步。
怎么把知识库搭建运行起来?安装 OpenKB,然后运行 'openkb init' 以交互方式设置一个新的知识库,再用 'openkb add ' 把文档编译进维基。
我需要某个大语言模型提供商的 API 密钥吗?你需要一个由 LiteLLM 配置的大语言模型提供商(OpenAI、Claude、Gemini 等)的 API 密钥,设置在 .env 文件中。像 chatgpt/ 或 githubcopilot/ 这类使用 OAuth 设备流的订阅型提供商则无需 API 密钥。
长文档检索需要云服务吗?不需要,PageIndex 的开源树状索引检索默认在本地运行,没有任何外部依赖。PageIndex Cloud 是可选项,只有在对扫描版 PDF 进行 OCR 或对大型文档做更快的索引时才需要。
自带的 Web UI 默认会暴露到互联网上吗?Workbench Web UI 遵循本地优先,默认关闭身份验证;在把服务器暴露到本机之外之前,你可以设置 OPENKBAPITOKEN 来要求提供 Bearer 令牌。
PageIndex 是什么?它如何避免使用向量数据库?PageIndex 为长文档构建层级树状索引,让大语言模型在索引结构上进行推理,而不是搜索嵌入向量,从而实现无向量、语境感知的检索。
Skill Factory 是什么?它是 OpenKB 的生成器(openkb skill new),可以从你编译好的维基中提炼出一个可移植、可再分发的智能体技能,Claude Code、Codex 和 Gemini CLI 都能原生安装并加载。
我可以在 Obsidian 中浏览编译好的维基吗?可以,这个维基只是带有 [[wikilinks]] 的纯 Markdown 文件,把 wiki/ 文件夹作为 Obsidian 仓库打开,就能获得原生渲染和图谱视图。
我可以把哪些文档格式喂给 OpenKB?它接受 PDF、Word、Markdown、PowerPoint、HTML、Excel、CSV、纯文本和 URL,长 PDF 通过 PageIndex 树状索引处理,并会提取图像以进行多模态理解。
Creator
VectifyAI
Size
32.7 MB
Stars
4.8K
Age
6mo
Commits · 90 Days