У меня была задача: загнать в бота всю экспертизу по маркировке товаров. Чтобы клиенты спрашивали бота, а не меня.
## Откуда брал данные
1. Собственные статьи и заметки — писал для себя, теперь пригодились
2. FAQ из переписок — выгрузил частые вопросы клиентов и свои ответы
3. Официальные инструкции ЧестногоЗНАКа — переработал в человеческий язык
4. Законодательство — выжимки из 487-ФЗ и постановлений
## Как обрабатывал
Нельзя просто закинуть документ целиком. Нужно разбить на чанки — небольшие кусочки по 300-500 символов.
``
python
from langchain.text_splitter import RecursiveCharacterTextSplitter
splitter = RecursiveCharacterTextSplitter(
chunk_size=500,
chunk_overlap=50
)
chunks = splitter.split_text(document)
``Почему 500 символов? Экспериментировал. Меньше — теряется контекст. Больше — много шума.
## Грабли
❌ Загрузил PDF напрямую — бот начал нести чушь. PDF парсится криво.
❌ Не указал источники в метаданных. Через неделю не мог понять, откуда бот взял информацию.
❌ Дублирующийся контент — бот выдавал одинаковые ответы трижды.
❌ Устаревшая информация. Законодательство меняется, а в базе лежит старое.
## Как решил
✅ PDF конвертирую в Markdown вручную
✅ Метаданные обязательны: источник, категория, дата
✅ Дедупликация перед загрузкой
✅ Раз в месяц — ревью базы
## Цифры
- 47 документов, 5 категорий, ~200 чанков
- 3 дня на первичное наполнение
- 2-3 часа в месяц на поддержку
## Главный вывод
Качество базы знаний > качество модели. Garbage in = garbage out.