Я создал бота для вопросов и ответов по коду с использованием 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://t.me/GyaanSetuAi