Компания Raspberry Pi всегда ищет новые и более эффективные способы делать вещи. Одним из наиболее значимых влияний ИИ на интернет стало распространение чат-ботов и генераторов ответов. И хотя компания никогда не будет использовать ИИ для написания документации, её специалисты хотят выяснить, смогут ли подобные инструменты помочь пользователям находить техническую информацию быстрее и проще.
Возможно, вы слышали о технологии RAG (retrieval-augmented generation, или генерация с дополнением поиском) — она использует заранее определённый набор документации для ответа на вопросы. В этой статье Raspberry Pi тестирует два RAG-инструмента: InKeep и Kapa. Сайт компании случайным образом показывает посетителям одну из двух версий этой публикации — перезагрузите страницу, чтобы увидеть другой инструмент. Попробуйте задать в чат-боте вопрос о том, что вы хотите сделать с Raspberry Pi, и посмотрите, как он ответит!
Что в этом особенного?
Чат-боты используют документацию Raspberry Pi: HTML-страницы, технические белые книги и книги с сайта pip.raspberrypi.com, а также отдельные репозитории GitHub, содержащие встроенную документацию (например, rpi-image-gen). Благодаря этому система может искать в документации конкретные релевантные фрагменты и передавать их в языковую модель. Затем модель решает, достаточно ли у неё информации для ответа, и при наличии таковой формулирует его.
Как это работает? Разве это не просто умный поисковик?
Когда языковая модель обрабатывает текст, он сначала разбивается на токены. Токен можно представить как единицу, соответствующую одному слову, хотя большинство токенов — это части слов (например, слово «running» может быть разбито на «run-» и «-ning»).
Следующий шаг — преобразование токенов в эмбеддинги (векторные представления). Эмбеддинги — это векторы в очень многомерном пространстве (до тысячи измерений), которые кодируют «семантический смысл» токена. Два вектора, близких по значению, несут похожий смысл. Вот классический пример:
Возьмите вектор слова «женщина» и вычтите вектор слова «мужчина» — получите вектор, примерно означающий «переход от мужского к женскому». Прибавьте этот же вектор к слову «король» — и вы окажетесь очень близко к слову «королева».
Это не фокус. Это указывает на нечто по-настоящему полезное: близкие координаты в этом пространстве означают схожие понятия, а одинаковые отношения между парами слов проявляются как одинаковые геометрические сдвиги. Модель извлекла эти закономерности из миллиардов слов тренировочных данных и зашифровала их в расположении точек.
Развитием этой идеи является создание моделей эмбеддингов, способных принимать последовательность токенов (например, абзац из 100 слов) и создавать из неё единый вектор, отражающий семантический смысл всего фрагмента. Именно такие модели используются в RAG-системах — для поиска фрагментов текста со схожим смыслом.
Разбивка на части (Chunking)
Как только становится ясен этот принцип, дальнейшее очевидно. Вся документация разбивается на фрагменты разумного размера — по одному-два абзаца — и для каждого фрагмента генерируется эмбеддинг. Теперь есть база данных, в которой похожие смыслы расположены рядом.
Когда пользователь задаёт вопрос, система генерирует эмбеддинг для этого вопроса и ищет в базе ближайшие к нему векторы. Ближайшие фрагменты — это по построению те части документации, смысл которых наиболее близок к вопросу. Угадывать словарь автора не нужно — модель сделала эту работу за вас.
И наконец — генерация
На этом этапе система уже располагает списком наиболее релевантных фрагментов документации. Их можно просто отобразить пользователю как есть — многие поисковые системы так и поступают. Но можно пойти на шаг дальше: передать эти фрагменты вместе с исходным вопросом языковой модели и попросить её сформулировать ответ, опираясь исключительно на них.
Это и есть часть «генерации» в «генерации с дополнением поиском». Шаг поиска находит нужную документацию, шаг генерации превращает её в понятный ответ на человеческом языке. Модель не опирается на то, что она случайно «запомнила» при обучении — именно там языковые модели чаще всего допускают ошибки. Вместо этого она отвечает на основе реальной документации и ничего кроме. Если ответа в документации нет — инструмент прямо скажет об этом, а не выдумает что-то.
Поделитесь мнением
Raspberry Pi приглашает пользователей опробовать сервис и оставить отзыв — в интерфейсе чата есть удобные кнопки «нравится» и «не нравится». Эта информация вместе с историей взаимодействия будет сохранена в системе, чтобы компания могла понять, что работает, а что нет.
Raspberry Pi не планирует использовать ИИ для создания документации. Вместо этого компания намерена применять подобные инструменты для выявления пробелов и ошибок в существующей документации. Команда вкладывает много сил в её создание и стремится к тому, чтобы она была максимально точной, полной и удобной. Специалисты по документации с нетерпением ожидают результатов эксперимента, чтобы лучше понять потребности пользователей и повысить качество предоставляемой информации.
