/note/tech

Karpathy 氏が言語化した「LLM Knowledge Base」というパターン

要約:

■ 1. 概要

  • 2026年4月3日にAI研究者Andrej Karpathy氏がX上で「LLM Knowledge Bases」を投稿し1300万回以上の閲覧を集めた
  • 翌日に詳細なアイデアファイルがgistとして公開された
  • 多くの人がすでに類似の試みを行っていたことが大きな反響の背景にある
  • Karpathy氏の投稿は散発的な試みに名前と構造を与えた

■ 2. LLM Knowledge Baseのコンセプト

  • 生のドキュメントをLLMに渡し構造化されたMarkdownのwikiを「コンパイル」させるアイデア
  • RAGが「質問のたびにドキュメント断片を検索して回答する」アプローチであるのに対し知識をあらかじめ構造化して永続化する点が異なる
  • wikiは使うたびに育つため知識が複利的に蓄積される

■ 3. 3層アーキテクチャ

  • Raw sources:
    • 記事・論文・リポジトリ・画像など不変の精選ドキュメント
    • Web記事はObsidian Web ClipperでMarkdownに変換し関連画像もローカルに保存することでLLMが参照しやすくなる
  • Schema:
    • wikiの構造や規約を定義する設定ドキュメント
    • カテゴリの整理方法やファイル命名規則などのルールを記述するいわばwikiの「設計図」
  • Wiki:
    • LLMが生成したMarkdownファイル群
    • Raw sourcesのサマリー・概念ごとのエンティティページ・バックリンクで構成される
    • 人間が直接書くことはほとんどなくLLMの領域であり人間はキュレーションと方向づけに集中する

■ 4. 3つの操作

  • Ingest(取り込み):
    • 新しいソースを処理してwikiに統合する操作
    • LLMがドキュメントを読みサマリーを書き関連エンティティページを更新しindex.mdを改訂する
    • 既存の知識との矛盾も解消される
  • Query(質問):
    • wikiに対して質問を投げ回答を得る操作
    • 回答を新たなページとしてwikiに「filing back」することで探索や質問がそのまま知識として蓄積される
  • Lint(健全性チェック):
    • wiki全体に対するヘルスチェック
    • 矛盾するデータ・古くなった主張・孤立したページ・欠落したリンクをLLMが検出し修正を提案する

■ 5. 意図的な抽象さ

  • Karpathy氏自身がこれを「hacky collection of scripts」と呼んでいる
  • 完成されたプロダクトでも確立された方法論でもなく探索段階の共有と位置づけている
  • gistに「意図的に少し抽象的/曖昧にしている。方向性がたくさんあるから」と記載されている
  • 概念としてはVannevar Bushが1945年に提唱したMemex(ドキュメント間の連想トレイルを辿る装置)に通じる

■ 6. RAGとの違い

  • RAGはクエリごとにドキュメント断片を検索してLLMに渡すアプローチで永続的な構造を持たない
  • LLM Knowledge Baseは事前に情報を読み込んで構造化し永続的なwikiとして保持する
  • Karpathy氏は約100記事・約40万語規模ではRAGなしでもLLMがindex管理とサマリー維持をうまく行えると述べている
  • ドキュメントが数千件・数百万語規模になると異なる可能性がある
  • 「RAGかwikiか」は二択ではなくアドホックな質問にはRAG的検索が全体像の把握にはwikiが適するという使い分けが実用的

■ 7. Claude Codeでの実装例

  • Karpathy氏の投稿以前からMem0によるfact抽出やベクターDBへのドキュメント蓄積・監査コマンドなどのセッション間知識永続化の仕組みを持っていた
  • 既存のメモリ基盤の上にwiki層を載せる形で/kb-compileというカスタムコマンドを作成した
  • ディレクトリ構成:
    • workspace/knowledge/ がRaw sourcesに相当(日報・リサーチ・セッションログ)
    • 各ディレクトリのCLAUDE.mdがSchemaに相当
    • workspace/wiki/ がCompiled Wikiに相当
    • Memory MCP(Mem0 + pgvector)という検索レイヤーも併用しRAG的検索とwikiの両方を使い分ける
  • /kb-compileコマンドの機能:
    • 特定プロジェクトのみのコンパイルや--allオプションによる全体一括更新が可能
    • --lintオプションで矛盾検出・リンク切れチェック・古い記事の検出が可能
  • コンパイルされた_index.mdに30プロジェクトの全体地図がまとまり新セッション開始時の状況把握に活用している
  • 個々のプロジェクト記事にfrontmatterやバックリンクがありObsidianのグラフビューも利用できる
  • 現状の課題:
    • 手動でコマンドを実行しないと更新されない
    • プロジェクト横断のトピック記事は未整備
    • Lintの自動実行が仕組み化できていない

■ 8. まとめ

  • Karpathy氏の投稿の核心は「LLMをコンパイラとして使う」という発想の転換
  • コードを書かせるだけでなく知識の整理・構造化・保守をLLMに任せる
  • 人間は退屈な保守タスクから解放されキュレーションと方向づけに集中できる
  • Karpathy氏は「hackyなスクリプトの寄せ集めではなくここには素晴らしいプロダクトが生まれる余地がある」と述べている