arielshemesh1999@gmail.com · ישראל
← כל המאמרים

Karpathy’s LLM Wiki

ה-gist של Andrej Karpathy מ-4 באפריל 2026 על היפוך ה-RAG מבפנים: במקום לאחזר קטעים לכל שאילתה, ה-LLM בונה ומתחזק wiki מתמשך שמצטבר עם כל מקור שמזינים לתוכו.

מהי התבנית

ב-4 באפריל 2026 פרסם Andrej Karpathy gist קצר בשם LLM Wiki המציע צורה שונה לעבודת ידע אישית עם LLMs. הרעיון נכנס לגלויה: להפסיק לבקש מהמודל לגזור ידע מחדש ממסמכים גולמיים בכל שאילתה, ובמקום זאת לאפשר לו לקמפל את הידע בהדרגה לתוך wiki מובנה ומקושר שחי על הדיסק שלך כ-markdown וגדל עם הזמן. ה-gist אינו חבילה ואינו מוצר; זו תבנית בת כמה מאות מילים שתפסה במהירות — היא צברה אלפי forks ו-stars בשבועותיה הראשונים — כי היא מצביעה על נקודת הכשל האמיתית של ניהול ידע.

המשפט המרכזי, זה שעליו כל התבנית נשענת, הוא:

“the tedious part of maintaining a knowledge base is not the reading or the thinking — it’s the bookkeeping.”

אנשים נוטשים wikis מפני שנטל התחזוקה גדל מהר יותר מהערך: קישורים צולבים מתיישנים, סיכומים סוטים, מקורות חדשים סותרים ישנים, ועלות שמירת הסדר עולה בסוף על עלות קריאת המקורות מחדש. התובנה של Karpathy היא ש-bookkeeping הוא בדיוק מה ש-LLMs מצטיינים בו — עקביות, cross-linking, סיכום, deduplication, סימון סתירות — בעוד אצירה, טעם ושאילת השאלות הנכונות הם בדיוק מה שבני אדם טובים בו. ה-LLM wiki חותך את העבודה לאורך התפר הזה. Karpathy מציין שמקור בודד עשוי לגעת ב-10 עד 15 עמודי wiki; זה בדיוק נטל ה-bookkeeping שמרתיע אדם וזניח עבור מודל.

ארכיטקטורה — שלוש השכבות

התבנית היא שלוש שכבות, וזו כל הארכיטקטורה. השכבות יושבות בתיקיות נפרדות, וגבול הכתיבה ביניהן הוא מה שמייצר את חלוקת העבודה:

  1. Raw sources — הקלטים הבלתי-ניתנים-לשינוי: מאמרים שגזרת, papers שהורדת, תמלילים, תמונות, קבצי נתונים, הערות שלך. ה-LLM קורא מהתיקייה הזו אך לעולם לא כותב אליה. האצירה היא עבודת האדם.
  2. ה-wiki — שכבת ה-markdown המקושרת שה-LLM מייצר ומתחזק: סיכום לכל מקור, עמוד לכל ישות (אדם, ארגון, מוצר), עמוד לכל מושג, עמודי השוואה, ועוד שני קבצים מיוחדים שמחזיקים את המבנה. ה-LLM מחזיק בשכבה זו מקצה לקצה — עמודים חדשים, עריכות, קישורים צולבים, מחיקות.
  3. ה-schema — מסמך קונפיגורציה יחיד (CLAUDE.md עבור Claude Code, או AGENTS.md עבור Codex — שני שמות הקבצים שהמודלים האלה טוענים אוטומטית) שמגדיר ל-LLM איך ה-vault בנוי, איזו מוסכמת שמות חלה, מהו מבנה כל סוג עמוד, מהם כללי הקישור והפתרון של סתירות, ומה רשימת ה-lint. הוא בבעלות משותפת: האדם וה-LLM מעדנים אותו יחד ככל שהתהליך מתבגר.

בתוך ה-wiki שני קבצים נושאים תפקיד מבני: index.md הוא קטלוג content-oriented — כל עמוד רשום עם קישור, סיכום בשורה, ולעיתים מטא-דאטה כמו תאריך או מספר מקורות — והוא נקודת הכניסה של המודל לכל שאילתה. log.md הוא רשומה כרונולוגית append-only עם תחילית parsable קבועה, בפורמט ## [2026-04-02] ingest | Article Title, כך שאפשר לשחזר מתי כל דבר נכנס ומה הוא הזיז. ה-gist מגדיר שלוש שכבות בלבד. פלטים נגזרים כמו מצגות Marp או תרשימים אינם שכבה רביעית — Karpathy ממליץ שתשובות בעלות ערך יוגשו חזרה כעמודי wiki חדשים, כך שהן מצטברות בדיוק כמו מקורות שעוכלו.

איך זה עובד — חלוקת האדם/LLM

חלוקת העבודה היא הרעיון הנושא. ברגע שמפנימים אותה, שאר התבנית נובע מאליו:

  • בני אדם: אוצרים מקורות (מחליטים מה לקרוא), מכוונים ניתוח (שואלים שאלות ספציפיות), ומפרשים משמעות (האם זה חשוב? האם זה משנה את התמונה?).
  • LLMs: כל השאר — סיכום כל מקור, חילוץ ישויות ומושגים, כתיבה ועריכה של עמודי wiki, תחזוקת קישורים צולבים בשני הכיוונים, שמירה על עדכניות ה-index.md, סימון סתירות בין עמודים, וההוספה ל-log.md.

זה היפוך מדויק של chat-RAG. ב-chat-RAG האדם שואל, המערכת מאחזרת chunks בזמן אמת, המודל מייצר תשובה, ולא מצטבר דבר — השאלה הבאה מתחילה מאפס. ב-LLM wiki האדם גם כן שואל, אבל המודל עונה מול wiki שכבר סונתז וקושר מראש על-ידיו, והתשובה עצמה מוגשת חזרה כעמוד חדש. ה-retrieval לא קורה בזמן השאילתה אלא בזמן ה-ingest, פעם אחת, כשהמודל קורא את המקור בנחת. ה-wiki הוא הפריט המצטבר; ה-chat הוא רק UI מעליו.

התקנה והגדרה

ה-gist הוא סקיצה, לא חבילה מוכנה: אין pip install ואין מימוש קנוני. ההגדרה היא ארבע החלטות — ספרייה, agent, schema, וכלי חיפוש — ואז ריצה. הנה setup מינימלי בר-הרצה:

# 1. Create the three-layer folder structure
mkdir -p ~/Documents/LLMWiki/{raw,wiki}
cd ~/Documents/LLMWiki
touch CLAUDE.md README.md
touch wiki/index.md wiki/log.md

# 2. Point an agent at the folder. The agent reads CLAUDE.md
#    as its operating manual on every session.
#    Claude Code:  cd ~/Documents/LLMWiki && claude
#    Codex:        same folder, schema lives in AGENTS.md instead

# 3. Add a local search engine for the query workflow.
#    Karpathy names qmd: hybrid BM25/vector search over
#    markdown with LLM re-ranking, fully on-device.
#      qmd index ~/Documents/LLMWiki/wiki
#      qmd search "long-horizon agent memory"

# 4. (optional) Open the same folder as an Obsidian vault
#    for the graph view + wikilink navigation.
#    Web Clipper -> saves articles as clean markdown into raw/
#    Dataview    -> SQL-like queries over page frontmatter

הבחירה ב-Obsidian היא של Karpathy עצמו, אבל היא נוחות ולא תלות: כל עורך markdown עובד, כי השכבות הן פשוט תיקיות וקבצי .md. החיפוש הוא הרכיב היחיד שדורש מחשבה. Karpathy ממליץ על qmd כמנוע חיפוש מקומי על-מכשיר; הקהילה שבונה על Obsidian נוטה להחליף אותו בתוסף Smart Connections כדי לקבל חיפוש סמנטי ו-chat בתוך אותה סביבה. בכל מקרה, החיפוש משרת את workflow ה-query בלבד — הוא לא מחליף את ה-wiki, רק עוזר לאתר את העמוד הנכון בתוכו.

קובץ ה-schema הוא המקום שבו העבודה האמיתית נמצאת. גרעין בסיסי:

# CLAUDE.md — LLM Wiki schema

## Three layers
- raw/      — immutable sources, human-curated, LLM reads only
- wiki/     — LLM-maintained markdown, one concept per page
- schema    — this CLAUDE.md: conventions, page formats, workflows, lint rules

## Workflows

### Ingest (human drops a new file in raw/)
1. Read the source.
2. Summarise key takeaways back to the human, confirm direction.
3. Create wiki/<topic>/sources/<slug>.md with summary + key claims.
4. Create or update entity / concept pages for new things mentioned.
5. Add cross-references both ways.
6. Update wiki/index.md.
7. Append to wiki/log.md.

### Query (human asks a question)
1. Read wiki/index.md to find candidate pages.
2. Follow wikilinks for context.
3. Synthesize an answer with citations to wiki pages.
4. If the answer is non-trivial, file it back as a new wiki page.

### Lint (every ~10 ingests, or on request)
- Flag contradictions between pages.
- Find orphan pages with no inbound links.
- Find concepts mentioned in many pages but missing a dedicated page.
- Make sure the index reflects current reality.

דוגמאות שימוש

דוגמה 1 — עיכול מאמר. מוסיפים את raw/llm-agents/voyager.pdf ל-vault ואומרים ל-agent:

You: ingest the new paper in raw/llm-agents/

Agent:
  read raw/llm-agents/voyager.pdf (28 pages)
  created wiki/llm-agents/sources/voyager.md      (summary + 6 key claims)
  created wiki/concepts/skill-library.md          (new concept)
  updated wiki/entities/jim-fan.md                (added paper to publications)
  updated wiki/comparisons/agent-memory-designs.md (added Voyager column)
  updated wiki/index.md
  appended wiki/log.md
  touched: 5 pages

דוגמה 2 — שאילתה על ה-wiki. שבוע לאחר מכן שואלים שאלה שנוגעת בשלושה מקורות שעוכלו בנפרד:

You: how do Voyager, ReAct and Reflexion differ on long-horizon memory?

Agent:
  read wiki/index.md, wiki/comparisons/agent-memory-designs.md
  followed wikilinks to 3 source summaries
  synthesized answer (see chat)
  filed back as wiki/comparisons/voyager-react-reflexion-memory.md
  appended wiki/log.md

דוגמה 3 — מעבר lint. מדי פעם מבקשים מה-agent לבדוק את בריאות ה-wiki:

You: lint the wiki

Agent:
  contradictions: 1   (wiki/concepts/embedding-drift contradicts the newer
                       source wiki/sources/openai-embeddings-v3 on
                       expected MTEB drop — flagged for human review)
  orphans: 2          (wiki/entities/some-author, wiki/concepts/foo)
  concept gaps: 3     (terms appearing in ≥3 pages without a dedicated page:
                       “chunk anchoring”, “retrieval glue”, “skill library”)
  proposed actions written to wiki/log.md

הכלים שהתבנית נשענת עליהם

אין מימוש קנוני — Karpathy מסגר את ה-gist במפורש כתבנית ולא כמוצר — אבל הוא כן נוקב בשמות של שרשרת כלים ספציפית שעובדת עבורו. אלה הכלים שהוא מזכיר ישירות:

  • Claude Code / Codex — ה-agents שמריצים את התבנית. כל אחד טוען אוטומטית את קובץ ה-schema שלו (CLAUDE.md או AGENTS.md) בתחילת session.
  • qmd — מנוע חיפוש מקומי על קבצי markdown עם חיפוש היברידי BM25/vector ו-LLM re-ranking, הכל על-המכשיר. זה הכלי שהוא ממליץ עליו ל-workflow ה-query.
  • Obsidian — העורך שלו; תצוגת הגרף הופכת את ה-wikilinks למפת קישורים ניווטית בחינם.
  • Obsidian Web Clipper — תוסף דפדפן שממיר מאמר ל-markdown נקי ישירות לתוך raw/.
  • Dataview — שאילתות על frontmatter של עמודים, שימושי לעמודי אינדקס דינמיים.
  • Marp — מצגות מבוססות-markdown, שנכנסות נקי לתוך outputs/.

שווה לדייק מה שה-gist לא אומר, כדי לא לייחס לו יותר ממה שכתב: הוא לא מחייב סכמת frontmatter קבועה לעמודים, ולא נוקב בשם Smart Connections — זה תוסף Obsidian פופולרי שהקהילה מאמצת כתחליף ל-qmd כשרוצים את החיפוש וה-chat בתוך Obsidian עצמו, אבל הוא בחירה של מימושים, לא חלק מהתבנית המקורית.

מגבלות ומתי כדאי

התבנית חזקה אבל לא חינמית, וכדאי להכיר את הקצוות שלה. ראשית, ה-ingest מעביר את העלות קדימה: כל מקור דורש קריאה מלאה של ה-agent וכתיבה ל-10-15 עמודים, כך שזה איטי ויקר ב-tokens יותר משאילתת RAG בודדת — הוא משתלם רק כשמדובר בקורפוס שחוזרים אליו. שנית, ה-wiki הוא תוצר של מודל, והמודל יכול לסכם לא נכון או לפספס ניואנס; שכבת ה-raw/ הבלתי-ניתנת-לשינוי קיימת בדיוק כדי שתמיד אפשר לחזור למקור. שלישית, ה-lint הוא אנושי בלולאה — ה-agent מסמן סתירות ו-orphans, אבל ההכרעה מה נכון נשארת אצלך. ולבסוף, אין כאן מנגנון מובנה לעבודת צוות או versioning מעבר למה ש-git או Obsidian sync נותנים; זו תבנית ל-knowledge base אישי.

היכן זה זורח: קורפוס שמצטבר לאורך זמן וחוזרים אליו — ספרות מחקר בתחום, due diligence על שוק, תיעוד פרויקטים. השוואה ישירה: chat-RAG עדיף לשאלה חד-פעמית מול מסמך, כי אין שם תחזוקה לשלם עליה. ה-LLM wiki עדיף כשאותו ידע ישרת עשרות שאלות עתידיות, כי אז ה-bookkeeping שכבר נעשה משתלם שוב ושוב.

הסיבה שהתבנית הופכת מעניינת היא היפוך עקומת העלות. wikis מסורתיים נכשלים כי כל מקור חדש מגדיל את נטל התחזוקה. כש-LLM עושה את ה-bookkeeping, אותה עלות מתקרבת לאפס: עיכול מקור מספר 500 לא קשה יותר ממקור מספר 5, ובמקביל כל מקור שמוסיפים מחדד מעט כל שאילתה עתידית, כי הסינתזה והקישורים הצולבים כבר קיימים.

בשימוש יומיומי המנוף הגדול של התבנית הוא שהיא לא דורשת תשתית: schema אחד ב-CLAUDE.md, תיקיית raw/ שאליה מפילים מקורות, ושכבת wiki/ שה-agent מתחזק — ומעליה תוסף חיפוש סמנטי כמו Smart Connections כשעובדים בתוך Obsidian. מניסיון, כדאי לשמור על מוסכמת שמות עקבית מהיום הראשון, כי זה מה שמאפשר ל-agent לקשר עמודים נכון אחרי שהקורפוס גדל; וכדאי להריץ lint בקצב קבוע ולא לחכות שהסתירות יצטברו. הערך האמיתי מורגש לא בעיכול הראשון אלא אחרי שכמה עשרות מקורות כבר בפנים — אז חזרה לנושא ישן מרגישה כמו המשך שיחה ולא פתיחה מאפס, וזו בדיוק ההצטברות שהתבנית מבטיחה.

מקור

Andrej Karpathy — LLM Wiki, 4 באפריל 2026. gist.github.com/karpathy/442a6bf555914893e9891c11519de94f