"Как зарегистрироваться в ЧестномЗНАКе?"
"Какие штрафы за отсутствие маркировки?"
"Сколько стоит один код?"
Отвечать руками — можно. Но это 2-3 часа в день на одно и то же. Решил автоматизировать.
## Идея: RAG-бот
Retrieval-Augmented Generation — когда бот сначала ищет релевантные документы, потом генерирует ответ на их основе.
## Как устроен
``
Пользователь: "Какие штрафы за отсутствие маркировки?"
↓
Sentence Transformers: превращает вопрос в вектор
↓
ChromaDB: ищет похожие документы в базе знаний
↓
DeepSeek LLM: генерирует ответ на основе найденных документов
↓
Пользователь получает ответ с цитатами
``## Почему именно такой стек
ChromaDB — векторная база данных. Работает локально, SQLite под капотом, не нужен Pinecone за $70/мес. Установка: pip install chromadb. Всё.
Sentence Transformers — превращает текст в числа (эмбеддинги). Модель all-MiniLM-L6-v2 — всего 22 миллиона параметров, работает на CPU за 50 миллисекунд.
DeepSeek через OpenRouter — $0.14 за миллион токенов. GPT-4 стоит $30 за то же самое. Разница в 200 раз. Для FAQ-бота качество одинаковое.
## Грабли при разработке
❌ Первая версия отвечала "не знаю" на всё. Оказалось, эмбеддинги считались неправильно — забыл нормализовать векторы.
❌ Бот начал галлюцинировать, когда загрузил PDF с таблицами. Таблицы плохо разбиваются на чанки — контекст теряется.
❌ Забыл добавить метаданные (источник документа). Потом не мог понять, откуда бот взял информацию.
## Как решил
- Ручная курация базы знаний. Да, это долго. Но garbage in = garbage out.
- Таблицы переписал текстом.
- Добавил источники в каждый ответ.
## Цифры
- 47 документов в базе
- ~200 чанков (по 500 символов)
- Время ответа: 2-4 секунды
- Стоимость одного ответа: ~$0.0002
- Бот отвечает на 80% вопросов без моего участия
## Главный вывод
RAG — это не магия. Это поиск + генерация. Качество базы знаний важнее качества модели.
Бот: @MarkPortKnowlege_bot