Как научить ИИ-помощника разбираться в вашей кодовой базе
Как создать умную базу знаний из документации для AI-ассистента
Загружать всю документацию подряд в векторную БД — плохая идея. Большая часть страниц нужна только для навигации и формальностей. Когда AI пытается найти полезную информацию среди ссылок, легальных текстов и списков API, он теряет время и даёт слабые ответы.
Зачем вообще фильтровать
Не все страницы одинаково ценны. Индексные страницы, политики конфиденциальности, changelogs и просто списки ссылок не несут технического смысла. Если их не отсеять, embeddings раздуваются, а поиск начинает работать медленнее и хуже.
Двухэтапная фильтрация
Самый разумный подход — сначала отсеять очевидный мусор по правилам, а потом доверить сложные случаи локальной LLM.
Этап 1: правила и паттерны
Здесь можно быстро отловить:
- страницы с путями
/legal/,/privacy,/terms - короткие страницы, состоящие в основном из ссылок
- changelogs по характерным URL
- справочные списки, которые легко определить по структуре
Такой фильтр работает локально, ничего не стоит и убирает до половины страниц.
Этап 2: классификация через LLM
Остальные страницы отправляем на лёгкую модель. Передаём URL, заголовок, первые 200 слов и структуру заголовков. Модель классифицирует по системе Diátaxis: conceptual, tutorial, how-to, examples или structural.
Как правильно делать embeddings
После фильтрации важно правильно нарезать длинные страницы. Лучше всего разбивать по заголовкам и усреднять полученные векторы. Это сохраняет контекст и структуру.
Используйте локальную модель вроде sentence-transformers — она бесплатна и вполне справляется с технической документацией.
Гибридный граф знаний
Связи в базе строятся двумя способами:
- явные ссылки между страницами (то, что уже есть в документации)
- семантические связи по cosine similarity (порог обычно 0.75)
Оба типа связей хранятся в графе. Чтобы граф не разрастался, стоит ограничить количество соседей у каждой страницы (примерно 20). Навигационные и юридические страницы в семантический граф лучше не включать — они только мешают.
Итоговая SQLite-база
Всё собирается в один файл:
- очищенный markdown
- классификация страниц
- embeddings
- граф связей
- метаданные
Такая база удобна: её можно переносить, запрашивать через SQL, фильтровать по типу контента и обходить по графу. AI-агент получает не свалку HTML, а структурированную и понятную информацию.
Порядок действий
- Собрать документацию (с учётом редиректов и robots.txt)
- Преобразовать HTML в markdown
- Отфильтровать и классифицировать страницы
- Построить embeddings с разбивкой по заголовкам
- Построить граф связей
- Сохранить всё в SQLite
Зачем это нужно
Хорошо подготовленная база знаний делает AI-ассистента заметно полезнее. Он тратит меньше времени на шум, даёт более точные ответы и работает быстрее. При этом вы остаётесь полностью независимы от внешних сервисов и не платите за API.