
Компиляция знаний: почему я не использую RAG в Obsidian
Несколько месяцев я пытался прикрутить векторный поиск к своему Obsidian-волту. Работало, но каждый раз ощущалось как костыль. Метод LLM Wiki Андрея Карпати перевернул это с головы на ноги — и я выкинул всю RAG-обвязку.
Что такое RAG и почему с ним неудобно
RAG расшифровывается как Retrieval-Augmented Generation. Принцип такой: твои заметки режутся на куски, каждый кусок превращается в вектор — длинный список чисел, описывающий смысл. Когда ты задаёшь вопрос — вопрос тоже становится вектором, и система ищет ближайшие по смыслу куски текста. Их подсовывают LLM вместе с вопросом, и модель отвечает.
Звучит красиво. На практике — агент вытаскивает три ближайших по косинусу куска и делает вид, что что-то понял. Контекст между кусками потерян, связи между заметками — тоже. Если ответ требует сшить мысли из пяти разных мест — повезёт, если дотянет. А если не повезёт, получаешь уверенную галлюцинацию.
Плюс инфраструктурная морока: векторная база, эмбеддинг-модель, пайплайн обновления индекса при каждом изменении заметки. Отдельная боль — синхронизация между машинами. Свой волт я держу на нескольких компьютерах и синкаю через Syncthing. Markdown-файлы синкаются тривиально, а векторную базу так просто не передашь — нужен сторонний сервис с MCP. Городить сложную инфраструктуру вокруг личной базы знаний не хочется.
Что такое компиляция знаний
Идея Карпати простая. Берёшь папку, кладёшь в неё сырьё: статьи, PDF, транскрипты, выгрузки. LLM один раз осмысливает источник и пишет по нему связную wiki-страницу — с концептами, связями, wikilinks. Дальше любой вопрос сводится к «прочитай вики и ответь со ссылками на страницы». Не поиск по векторам, а компиляция знаний.
Ментальная модель — как с кодом:
- Source — сырьё в
raw/, immutable - Compiler — LLM, который осмысливает и пишет
- Executable — готовая wiki в markdown
- Linting — проверка на противоречия, битые ссылки, пробелы
LLM один раз подумал над источником — дальше читает результат, а не вектор. Работа по пониманию сделана один раз, в момент ingest'а.
Почему это лучше RAG для личных знаний
Главное, что я раньше упускал: Карпати не делает одну глобальную вики. Он заводит по вики на тему. И это меняет экономику.
Глобальная вики на весь волт в 2700 заметок — мёртвая идея, токены кончатся раньше, чем агент начнёт думать. А локальная вики на 50–200 страниц по одной конкретной теме умещается в контекст целиком и читается дёшево. Векторный поиск становится не нужен — агент просто читает всё и видит связи напрямую.
Плюс бонусы. Знания живут в обычном markdown — читаемые без LLM и синкаются через Syncthing между машинами без всякой отдельной обвязки. Wiki-граф встраивается в мой Obsidian-граф. Нет инфраструктуры, которую надо поддерживать.

Мои юз-кейсы
Сейчас у меня две вики по этой схеме.
Первая — по рабочему проекту. Митинги, ADR, техническая документация, выгрузки из Slack. Вопросы типа «почему мы ушли от Medusa в пользу Stripe» или «кто отвечает за governance» получают ответ со ссылками на конкретные страницы, а не галлюцинации из общего контекста. Когда приходит новый митинг — один раз говорю «ingest этот файл», агент дописывает затронутые концепты и проставляет связи.
Вторая — курс психологии из 40 лекций. Слайды, резюме, расшифровки — трёхслойный ingest с маркерами источника на каждой фразе: [slides], [transcript], [summaries]. Когда нужно «собрать что-то только из PDF» — фильтр по маркерам, и получаешь ровно то, что было на слайдах, без LLM-синтеза сверху. Для учебного материала, где важно отличать «что говорил лектор» от «что подумал агент» — критично.
Где это не работает
Метод не универсален. Если тема размыта или короткоживущая — вики разрастается, и плюс дешёвого контекста исчезает. Для разрозненных интересов смысла нет. Плюс требует дисциплины: сырьё неизменно (immutable), ingest руками по одному источнику, иначе вики поедет и потеряешь контроль над тем, что в ней лежит.
Но там, где тема узкая и долгоживущая — курс, рабочий проект, исследовательское направление — компиляция знаний для меня обогнала все RAG-попытки. И что особенно приятно: никакой отдельной инфраструктуры, всё в обычном markdown, который я могу читать глазами и редактировать руками.