Я создал бота для вопросов и ответов по коду с использованием RAG: что сработало, а что нет

Наши разработчики тратили дни на поиск в Slack и старой документации, чтобы разобраться в наших микросервисах. Я решил создать чат-бота, который отвечал бы на эти вопросы с помощью RAG.

На этом пути я совершил много ошибок. Вот чему я научился.

Неудачи

  • Я пытался поместить всю документацию в один промпт. Это приводило к превышению лимита токенов, вызывало галлюцинации и обходилось слишком дорого.
  • Я использовал базовый индекс TF-IDF. Он не справлялся, когда пользователи использовали синонимы или другие термины.
  • Я пробовал простые чанки по 500 символов. Результаты были случайными, так как чанки часто обрывались на середине предложения.

Решение

Я перестал относиться к LLM как к поисковой системе. Я превратил её в «движок для чтения» специализированного поискового индекса.

Вот пайплайн, который сработал:

  • Разбить документацию на чанки по 300 токенов с перекрытием (overlap) в 50 токенов.
  • Преобразовать каждый чанк в вектор (embedding).
  • Сохранить векторы в индексе поиска по сходству.
  • При запросе находить 5 наиболее похожих чанков.
  • Передавать в LLM только эти чанки для генерации ответа.

Это изменение снизило количество галлюцинаций на 80% и сократило расходы до менее чем $0,01 за запрос.

Ключевые выводы

  • Размер чанка имеет решающее значение. 150 токенов — слишком мало контекста. 1000 токенов — слишком много шума. 300 токенов — золотая середина.
  • Перекрытие (overlap) обязательно. Оно предотвращает потерю контекста между чанками.
  • Используйте небольшие модели для скорости. Маленькая модель эмбеддингов отлично подошла для наших внутренних нужд.
  • Тестируйте поиск (retrieval). Не полагайтесь на ручные проверки. Создайте тестовый набор для измерения точности.

RAG — это не магия. Это инженерная задача. Если ваши чанки плохие, ваш поиск будет плохим. Если поиск плохой, ответы будут плохими.

Теперь мы правильно отвечаем на 80% вопросов по онбордингу. Это гораздо быстрее, чем ждать ответа от человека в Slack.

А как вы создаете ИИ-ассистентов для своей документации?

Источник: https://dev.to/__c1b9e06dc90a7e0a676b/i-built-a-code-qa-bot-with-rag-what-worked-and-what-failed-2717

Дополнительное обучающее сообщество: https://t.me/GyaanSetuAi