OpenKB

VectifyAIApache-2.0活跃维护

面向 LLM 的开源知识库,把文档整理成可检索的知识,为 RAG 和智能体提供可靠的检索来源。

OpenKB: Open LLM Knowledge Base

v0.4.5发布于 2026-07-20 10:35 UTC4,862star +4 / 7 天504fork同步于 2026-11-10 05:36 UTC

怎么上手

由 README 提炼,执行前请确认
pip install openkb
mkdir my-kb && cd my-kb
openkb init
硬件要求按 README 说明

README 未说明显存或 GPU 要求,仅说明通过 LiteLLM 调用云端 LLM 提供商(OpenAI、Claude、Gemini 等)

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

把原始文档编译成互链 wiki 知识库的 CLI 工具,用推理式检索替代向量库

面向 LLM 的开源知识库,把文档整理成可检索的知识,为 RAG 和智能体提供可靠的检索来源。

核心能力

  • 用 PageIndex 树索引处理长 PDF,无需向量数据库
  • LLM 自动生成摘要、概念页与实体页并交叉链接
  • 原生支持图表和图片等多模态内容检索
  • 支持 query 单次问答与 chat 多轮会话并持久化
  • 内置 Web UI 可浏览知识库、上传文档并流式问答

容易踩的坑

需要自备 LLM API Key 并写入 .env 的 LLM_API_KEY,否则无法编译;Web UI 需额外安装 pip install "openkb[web]" 并用 openkb-web 启动,默认监听 127.0.0.1:7566 且默认无鉴权;recompile 会覆盖对 wiki 页面的手动修改

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本v0.4.5
  1. v0.4.5最新正式版2026-07-20 · 2026-07-20 10:35 UTC

    Hotfix to avoid openai InputTokensDetails breaking change.

    What's Changed

    fix(deps): pin openai==2.44.0 to avoid InputTokensDetails breaking change by @KylinMountain in https://github.com/VectifyAI/OpenKB/pull/191

    Full Changelog: https://github.com/VectifyAI/OpenKB/compare/v0.4.4...v0.4.5

  2. v0.4.42026-07-10 · 2026-07-10 09:55 UTC
    查看更新说明

    What's Changed

    Full Changelog: https://github.com/VectifyAI/OpenKB/compare/v0.4.3...v0.4.4

    What's Changed

    Full Changelog: https://github.com/VectifyAI/OpenKB/compare/v0.4.3...v0.4.4

  3. v0.4.4-rc1pre-release2026-07-10 · 2026-07-10 08:16 UTC
    查看更新说明

    What's Changed

    Full Changelog: https://github.com/VectifyAI/OpenKB/compare/v0.4.3...v0.4.4-rc1

  4. v0.4.32026-07-02 · 2026-07-02 10:53 UTC
    查看更新说明

    What's Changed

    New Contributors

    Full Changelog: https://github.com/VectifyAI/OpenKB/compare/v0.4.2...v0.4.3

    What's Changed

    New Contributors

    Full Changelog: https://github.com/VectifyAI/OpenKB/compare/v0.4.2...v0.4.3

  5. v0.4.22026-06-27 · 2026-06-27 00:43 UTC
    查看更新说明

    What's Changed

    ✨ New Features

    • Interactive knowledge graph visualization (3D, mind-map, radial) by @KylinMountain in #103
    • Configurable LLM request timeout by @KylinMountain in #134
    • Global LiteLLM settings via a litellm: config block by @KylinMountain in #138
    • Import existing PageIndex Cloud indices via add --from-pageindex-cloud (closes #88) by @KylinMountain in #97
    • Google OKF‑conformant wiki frontmatter by @KylinMountain in #102

    A glimpse of the new openkb visualize command, showing an interactive 3D knowledge graph.

    🐛 Bug Fixes

    • Fix resolution of wikilinks whose stem contains a dot (.) by @jichaowang02-lang in #120
    • Preserve frontmatter when closing --- has no trailing newline by @jichaowang02-lang in #121

    📚 Documentation & Examples

    • Multiple README updates and badge improvements by @rejojer (#107 – #119, #124, #126 – #129)
    • OpenKB usage guides with real generated artifacts by @KylinMountain in #141 ,#144 and #145

    👥 New Contributors

    • @jichaowang02-lang made their first contribution in #120

    Full Changelog: https://github.com/VectifyAI/OpenKB/compare/v0.4.1...v0.4.2

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    OpenKB: Open LLM Knowledge Base

    • 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

    • Broad format support: PDF, Word, Markdown, PowerPoint, HTML, Excel, CSV, text, URLs, and more.
    • Scales to long documents: Long and complex documents are handled via PageIndex tree indexing, enabling accurate, vectorless, context-aware retrieval.
    • Native multi-modality: Retrieves and understands figures, tables, and images, not just text.
    • Compiled wiki: The LLM compiles your documents into summaries, concept pages, entity pages, and cross-links, all kept in sync.
    • Query & chat: One-off questions or multi-turn conversations over your wiki, with persisted sessions to resume.
    • Skill Factory: Distills redistributable agent skills from your wiki.
    • OKF-ready: Wiki pages follow the Google OKF specification for knowledge sharing.
    • Obsidian-compatible: The wiki is plain .md files with cross-links. Opens in Obsidian for graph view.
    • Knowledge Workbench (Web UI): A bundled web UI served at / to browse the KB, upload and compile documents, and stream queries and chats — all in the browser.

    🚀 Getting Started

    Install

    pip install openkb
    
    • 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

    Short vs Long Document Handling

    Short documentsLong documents (PDF ≥ 20 pages)
    Convertmarkitdown → MarkdownPageIndex → tree index + summaries
    ImagesExtracted inline (pymupdf)Extracted by PageIndex
    LLM readsFull textDocument trees
    Resultsummary + conceptssummary + 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

    CommandDescription
    openkb initInitialize 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 listList indexed documents and concepts
    openkb statusShow knowledge base stats
    openkb watchWatch raw/ and auto-compile new files
    openkb lintRun structural and knowledge health checks
    CommandDescription
    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.

    CommandOutputExample
    openkb query "question"A grounded answer with citations (--save to persist to wiki/explorations/)query & save
    openkb chatInteractive multi-turn session over the wiki (--resume, --list, --delete to manage sessions)chat
    openkb visualizeA self-contained interactive knowledge graph at output/visualize/graph.html — 3D, mind-map, and radial viewsvisualize
    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).

    • /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/.

    CommandOutput
    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:

    • OCR support for scanned PDFs (via hosted VLM models)
    • Faster structure generation
    • Scalable indexing for large documents

    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.

    /plugin marketplace add VectifyAI/OpenKB
    /plugin install openkb@vectify
    

    (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 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 workflowOpenKB
    Short documentsLLM reads directlymarkitdown → LLM reads
    Long documentsContext limits, context rotPageIndex tree index
    Input sourcesWeb clipper → .mdPDF, Word, PPT, Excel, HTML, text, CSV, .md, URLs
    Wiki compilationLLM agentLLM agent (same)
    Entity extractionManualAutomatic (people, orgs, places, products)
    Q&AQuery over wikiWiki + PageIndex retrieval
    OutputWiki onlyWiki + Skill Factory + agent CLI integration

    The Stack

    • PageIndex — Vectorless, reasoning-based document indexing and retrieval
    • markitdown — Universal file-to-markdown conversion
    • OpenAI Agents SDK — Agent framework (supports non-OpenAI models via LiteLLM)
    • LiteLLM — Multi-provider LLM gateway
    • Click — CLI framework
    • watchdog — Filesystem monitoring

    Roadmap

    • Extend long document handling to non-PDF formats
    • Scale to large document collections with nested folder support
    • Hierarchical concept (topic) indexing for massive knowledge bases
    • Database-backed storage engine
    • Web UI for browsing and managing wikis (Knowledge Workbench, served at /)

    Contributing

    Contributions are welcome! Submit a pull request or open an issue for bugs and feature requests. For larger changes, consider opening an issue first to discuss the approach.

    License

    Apache 2.0. See LICENSE.

    🌐 Open-Source Ecosystem

    Other open-source projects from the PageIndex ecosystem:

    • PageIndex: Vectorless, reasoning-based RAG framework for long documents
    • ChatIndex: Tree indexing and retrieval for long conversational histories and memory
    • ConDB: A KV-cache native context database for tree-based retrieval at scale
    • PageIndex MCP: MCP server for PageIndex

    Support Us

    If you find OpenKB useful, please give us a star 🌟 — and check out PageIndex too!

    Twitter  LinkedIn  Contact Us