Проектирование Middle RAG спрашивают часто обновлено

Спроектируйте чат-бот по документации продукта

Вопрос

Нужен чат-бот на сайте документации SaaS-продукта: разработчики спрашивают про API, SDK и ошибки. Документация в Markdown в git, 2000 страниц, выходит новая версия раз в месяц, старые версии поддерживаются. Спроектируйте систему.

Коротко

Ключевые решения: индексировать по структуре Markdown и не резать блоки кода, хранить версию и URL в метаданных и фильтровать по версии на поиске. Гибридный поиск обязателен из-за имён функций и кодов ошибок.

Что должно быть в решении

  1. 1
    Требования: версии продукта, ответы с примерами кода и ссылками на страницы, задержка, публичный доступ без авторизации
  2. 2
    Индексация из git по событию релиза: парсинг Markdown по заголовкам, блоки кода целиком, метаданные версии и URL
  3. 3
    Поиск: гибрид, потому что важны точные имена методов и коды ошибок; фильтр по выбранной версии; реранкер
  4. 4
    Генерация: ответ по контексту, ссылки на разделы, код только из документации, отказ при отсутствии ответа
  5. 5
    Защита публичного бота: лимиты по IP, защита от инъекций и злоупотреблений, ограничение длины
  6. 6
    Стоимость: кеш частых вопросов, выбор модели, ограничение контекста
  7. 7
    Обратная связь и качество: оценки ответов, вопросы без ответа как сигнал для писателей документации, оценочный набор

Что спросит интервьюер

  • Как не смешивать ответы для разных версий?
  • Как использовать вопросы без ответа?
  • Как обработать вопрос с куском кода пользователя и стектрейсом?

Разбор

Ключевые решения: индексировать по структуре Markdown и не резать блоки кода, хранить версию и URL в метаданных и фильтровать по версии на поиске. Гибридный поиск обязателен из-за имён функций и кодов ошибок. Публичный доступ требует лимитов и защиты от использования бота как бесплатного LLM-прокси. Вопросы без ответа и низкие оценки превращаются в задачи для документации, это одна из главных ценностей такого бота.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.