3,583 papers
arXiv:2510.21933 74 24 окт. 2025 г. FREE

RAG для техподдержки разработчиков: контекст из документации улучшает ответы, но вредит краткости

КЛЮЧЕВАЯ СУТЬ
LLM выдумывает несуществующие функции, потому что не знает специфику вашего проекта. RAG (Retrieval-Augmented Generation — поиск с генерацией) позволяет отвечать на технические вопросы из реальной документации, а не из памяти модели. Фишка: модель сначала ищет релевантные куски в документах через векторный поиск, потом генерирует ответ из найденного. Mozilla проверила на Firefox: полнота +8.4% (62.5% vs 54.1% у людей), но краткость −6.2% (22.9% vs 29.1% у чистого GPT). Трейдофф: больше контекста = точнее, но многословнее.
Адаптировать под запрос

TL;DR

RAG (Retrieval-Augmented Generation) — техника, когда LLM сначала ищет релевантные куски из документации проекта, а потом генерирует ответ с учётом этого контекста. Mozilla проверила RAG на реальных вопросах разработчиков Firefox, сравнив с ответами людей и чистым GPT. Оценивали 8 инженеров Mozilla по трём критериям: насколько ответ помогает (helpful), насколько полный (comprehensive), насколько краткий (concise).

Главная находка: Контекст из документации делает ответы более полными (RAG: 62.5% comprehensive vs люди: 54.1%), но более многословными (RAG: 22.9% concise vs люди: 25% vs GPT: 29.1%). При этом RAG почти так же полезен как люди (75% vs 79.1% helpful) и его чаще выбирали как "хотел бы видеть на практике" (39.5% vs 34.8% у людей).

Суть: RAG находит в документации релевантные фрагменты (через семантический поиск) и добавляет их в промпт перед генерацией ответа. Это даёт модели свежую проектную информацию, которой нет в её обучении. Модель генерирует более детальный ответ, но часто перебарщивает с подробностями — инженеры жаловались на излишнюю verbose.


🔬

Схема метода

RAG работает в 2 этапа (выполняются автоматически внутри одного запроса):

ЭТАП 1: Поиск контекста
Вопрос разработчика → Семантический поиск по документации/коду → 
Топ-N релевантных фрагментов

ЭТАП 2: Генерация с контекстом
Промпт = [Системная инструкция + Найденные фрагменты + Вопрос] → 
GPT генерирует ответ

В исследовании: RAG система автоматически искала по 77,900 сообщениям из чатов, документации и коду Firefox.

В обычном чате: Вы вручную загружаете документы и просите модель использовать их.


🚀

Пример применения

⚠️ Ограничение метода: RAG эффективен для технических вопросов с документацией. Не подходит для креативных задач, мнений, вопросов без справочной базы.

Задача: Вы консультант, помогаете клиенту выбрать CRM. У него свои требования, у каждой CRM — своя документация. Нужен точный ответ на основе реальных возможностей систем.

Промпт:

Прикрепляю документацию трёх CRM: amoCRM, Битрикс24, Мегаплан.

Вопрос клиента: "Какая CRM позволяет автоматически создавать задачи 
в Jira при смене статуса сделки?"

Найди ответ ТОЛЬКО в приложенной документации. Ограничься одним абзацем.
Укажи конкретные страницы документов, где нашёл информацию.

Результат:

Модель просканирует все три документа, найдёт разделы про интеграции и автоматизацию, и выдаст ответ вроде: "Битрикс24 и Мегаплан поддерживают интеграцию с Jira через REST API (Битрикс: раздел 'Webhooks', стр. 47; Мегаплан: 'Интеграции', стр. 23). amoCRM такой возможности не предлагает по состоянию документации."

Вместо общих фраз "обычно CRM умеют интегрироваться" вы получите конкретный ответ с ссылками на источники.


🧠

Почему это работает

Слабость LLM: Модель не знает специфику вашего проекта, версии софта, внутренние соглашения. Она генерирует ответ из общего обучения, которое может быть устаревшим или неточным. Для Firefox это означало ответы про несуществующие функции (GPT выдумывал --enable-release флаг, которого нет).

Сильная сторона LLM: Модель отлично синтезирует информацию — берёт куски текста и формулирует связный ответ. Если дать ей правильные исходники, она сделает из них понятное объяснение.

Как RAG использует это: Вместо того чтобы полагаться на память модели, система сначала находит нужные куски в документации (через векторный поиск — измеряет смысловое сходство вопроса и текста), а потом скармливает их модели. Модель синтезирует ответ из актуальной информации.

Трейдофф: Больше контекста = более comprehensive ответ, но часто это означает больше слов. В исследовании RAG был самым многословным источником (22.9% concise vs 29.1% у GPT). Инженеры ценили детальность, но жаловались на "слишком много информации".

Рычаги управления:

  • Ограничение длины — "ответь одним абзацем" сокращает verbose (так делали в исследовании)
  • Фильтр источников — загружай только нужные разделы документации, не всё подряд
  • Инструкция на вывод — "только факты из документов, без общих рассуждений"
  • Приоритет краткости — явно проси "максимально кратко", если conciseness важнее comprehensive

📋

Шаблон промпта

Прикрепляю документацию: {список_файлов}

Вопрос: {твой_вопрос}

Требования к ответу:
- Используй ТОЛЬКО информацию из приложенных документов
- Если ответа нет в документах — скажи "не нашёл в документации"
- Укажи источник (название файла / раздел / страницу)
- Ограничься {лимит_длины} (например: "одним абзацем", "3 пунктами")

Ответ:

Как заполнять:

  • {список_файлов} — загрузи PDF, MD, TXT с документацией проекта
  • {твой_вопрос} — конкретный вопрос, на который должен быть ответ в документах
  • {лимит_длины} — "одним абзацем", "максимум 100 слов", "3 пунктами" — контролирует verbose

🚀 Быстрый старт — вставь в чат:

Вот шаблон для работы с документацией. Адаптируй под мою задачу: [твоя задача].
Задавай вопросы, чтобы заполнить поля.

[вставить шаблон выше]

LLM спросит какие документы загрузить, какой вопрос задать, какой формат ответа нужен — потому что ей нужно знать область поиска и ожидания по структуре. Она возьмёт паттерн из шаблона и адаптирует под задачу.


⚠️

Ограничения

⚠️ Многословность: RAG часто перебарщивает с деталями. Был самым verbose среди трёх источников (люди, GPT, RAG). Инженеры говорили "слишком много лишней информации".

⚠️ Качество зависит от документации: Если в документах нет ответа или документы устаревшие — RAG выдаст некачественный результат. Garbage in, garbage out.

⚠️ Не для всех задач: RAG эффективен для справочных вопросов (как сделать X? что делает функция Y?). Для креативных задач, мнений, абстрактных вопросов — избыточен.

⚠️ Требует контекстного окна: Чем больше документации, тем больше токенов съедается. Для огромных баз знаний чат может не потянуть — понадобится полноценная RAG-система с векторной БД.


🔍

Как исследовали

Команда Mozilla взяла 52 реальных вопроса из чатов разработчиков Firefox за 2024 год. Отфильтровали из 77,900 сообщений — оставили только технические вопросы про код, документацию, фичи (не про версии, не абстрактные, не переадресации).

Для каждого вопроса получили три ответа:

  1. Human — оригинальный ответ из чата от разработчика Firefox
  2. GPT — ответ от GPT-4o без доп.контекста
  3. RAG — ответ от GPT-4o + автоматически найденные фрагменты из документации/кода Firefox

RAG построили на базе Cognita Framework (опенсорс) — доработали, чтобы индексировал код (.js, .jsx), документы (.md, .html, .pdf). Проиндексировали репозиторий Gecko-Dev (код Firefox) + wiki + документацию. Стоимость: ~$28 на векторизацию, $3 на инференс.

8 инженеров Mozilla оценивали ответы вслепую (не знали кто автор). Каждый получил 10 вопросов: 6 уникальных + 4 общих (чтобы измерить согласованность оценок). Оценивали по 4 критериям:

  • Helpful — помогает ли решить проблему?
  • Comprehensive — полный ли ответ?
  • Concise — краткий без потери сути?
  • Preferred — какой бы выбрал на практике?

Результаты показали:

  • RAG обогнал людей по comprehensive (62.5% vs 54.1%) — детальнее
  • RAG догнал людей по helpful (75% vs 79.1%) — почти так же полезен
  • RAG проиграл по concise (22.9% vs 25% люди, 29.1% GPT) — многословный
  • RAG чаще выбирали на практике (39.5% vs 34.8% люди, 25.6% GPT)

Почему так получилось: RAG подтягивает релевантные куски из документации — модель видит больше контекста и может дать детальный ответ. Люди отвечали быстро в чате, иногда на ходу (один инженер признался "написал на телефоне, впопыхах"). GPT без контекста выдумывал несуществующие функции.

Корреляция показала: Helpful сильнее всего влияет на выбор ответа (0.84), потом Comprehensive (0.76), слабее всего Concise (0.51). Детальность важнее краткости для разработчиков, когда речь про технические вопросы.

Интересный инсайт: GPT иногда выдавал уверенно неправильные ответы (например, предлагал флаг --enable-release, которого не существует). RAG таких ляпов избегал, потому что опирался на документацию.


📄

Оригинал из исследования

Исследователи использовали такой промпт для генерации ответов:

Контекст (для GPT и RAG):

You are a helpful assistant for developers working on the Mozilla Firefox project.
Please provide a concise response to the following question in a single paragraph.

Для RAG добавлялось:

Context:
[Retrieved documentation fragments here]

Question: [Developer's question]

Пример RAG-ответа из исследования (Question 5):

Вопрос: "Can i convert nsString to nsCString?"

RAG ответ:

Yes, you can convert an nsString (UTF-16) to an nsCString (UTF-8) using 
the NS_ConvertUTF16toUTF8 helper class. For example, you can do: 
nsCString utf8String = NS_ConvertUTF16toUTF8(utf16String); 
where utf16String is your nsString instance.

Контекст: Исследователи специально ограничивали ответы "одним параграфом", потому что ранние версии без этого ограничения были слишком verbose для чата. Это важный паттерн — явно контролируй длину, иначе RAG разойдётся.


💡

Адаптации и экстраполяции

💡 Адаптация для поддержки клиентов:

Вместо технической документации Firefox — база знаний вашего продукта. Загружаете FAQ, инструкции, политики возврата. Клиент задаёт вопрос → RAG ищет ответ в базе → выдаёт точный ответ со ссылкой на раздел.

Прикрепляю базу знаний: FAQ.pdf, Инструкция_по_возврату.pdf, Политика_доставки.md

Вопрос клиента: "Можно ли вернуть товар, если я его уже открыл?"

Требования:
- Используй ТОЛЬКО информацию из приложенных документов
- Укажи раздел документа, где нашёл ответ
- Ограничься 2-3 предложениями

💡 Адаптация для обучения:

Студент изучает сложный учебник. Загружает главы в чат и задаёт вопросы. RAG ищет ответы прямо в учебнике, а не в общем знании модели.

Прикрепляю главы учебника: Глава_3_Макроэкономика.pdf, Глава_4_Инфляция.pdf

Вопрос: "Как Центробанк влияет на инфляцию через ключевую ставку?"

Требования:
- Цитируй учебник дословно, где это важно
- Укажи номер главы и страницы
- Объясни простыми словами после цитаты

🔧 Техника: Убрать ограничение на длину → видеть полное рассуждение

В оригинале промпта есть "ответь одним параграфом". Если убрать — модель покажет пошаговую логику, как пришла к выводу. Полезно для сложных вопросов, где важно понять ход мысли.

Прикрепляю документацию: {твои_файлы}

Вопрос: {сложный_технический_вопрос}

Требования:
- Используй ТОЛЬКО информацию из документов
- Покажи пошагово: какие разделы изучил, какие выводы сделал
- В конце — итоговый ответ

🔧 Техника: Добавить "объясни почему" → глубже понимание

Стандартный RAG выдаёт факт. Если добавить "объясни логику" — модель не только найдёт ответ в документации, но и расскажет почему так работает.

Прикрепляю документацию: API_reference.pdf

Вопрос: "Почему метод fetchData() требует токен авторизации?"

Требования:
- Найди требование в документации
- Объясни техническую причину (безопасность, архитектура)
- Приведи пример из документации

🔗

Ресурсы

A Comparison of Conversational Models and Humans in Answering Technical Questions: the Firefox Case

Авторы: João Correia, Daniel Coutinho, Marco Castelluccio, Caio Barbosa, Rafael de Mello, Anita Sarma, Alessandro Garcia, Marco Gerosa, Igor Steinmacher

Организации: Pontifical Catholic University (Rio de Janeiro), Federal University of Rio de Janeiro, Northern Arizona University, Oregon State University, Mozilla Corporation

Упоминаемые технологии: Cognita Framework (опенсорс RAG система), Matrix.org (платформа общения разработчиков), GPT-4o


📋 Дайджест исследования

Ключевая суть

LLM выдумывает несуществующие функции, потому что не знает специфику вашего проекта. RAG (Retrieval-Augmented Generation — поиск с генерацией) позволяет отвечать на технические вопросы из реальной документации, а не из памяти модели. Фишка: модель сначала ищет релевантные куски в документах через векторный поиск, потом генерирует ответ из найденного. Mozilla проверила на Firefox: полнота +8.4% (62.5% vs 54.1% у людей), но краткость −6.2% (22.9% vs 29.1% у чистого GPT). Трейдофф: больше контекста = точнее, но многословнее.

Принцип работы

RAG работает в два этапа: векторный поиск по документации (находит топ-N похожих фрагментов по смыслу вопроса) → промпт с найденными кусками → генерация ответа. Модель не вспоминает из обучения, а синтезирует из актуальных документов. Mozilla проверила на 77,900 сообщениях Firefox: инженеры ставили RAG наравне с коллегами (75% vs 79.1% полезности), но ругали за многословность — «слишком много лишней информации».

Почему работает

LLM отлично синтезирует информацию из кусков текста, но не знает специфики конкретного проекта. Чистый GPT выдумывал флаг --enable-release для Firefox, которого не существует. RAG выносит знания наружу: вместо "вспомнить из обучения" модель получает правильные исходники через поиск. Результат: полнота растёт на 8.4% (больше деталей из документов), но краткость падает на 6.2% (модель перебарщивает со словами). Инженеры чаще выбирали RAG для практики — 39.5% vs 34.8% у ответов людей.

Когда применять

Техподдержка и консалтинг → конкретно для вопросов где есть справочная база (документация продукта, внутренние гайды, API-спеки), особенно когда информация часто меняется или модель не знает специфики. НЕ подходит для креатива, мнений, абстрактных вопросов без справочной базы.

Мини-рецепт

1. Загрузи документы: Приложи файлы с документацией (PDF, MD, TXT) к промпту — это база для поиска
2. Задай вопрос с ограничениями: Вопрос: {твой_вопрос}. Используй ТОЛЬКО информацию из приложенных документов. Укажи источник (файл/раздел). Ограничься одним абзацем.
3. Контролируй многословность: Добавь Максимально кратко или 3 пункта — без этого модель перебарщивает с деталями (−6% краткости по сравнению с чистым GPT)

Примеры

[ПЛОХО] : Как настроить интеграцию с Jira? (модель выдумает из общих знаний, без учёта специфики вашей CRM — может предложить несуществующие функции)
[ХОРОШО] : Прикрепляю документацию трёх CRM: amoCRM, Битрикс24, Мегаплан. Вопрос: какая CRM автоматически создаёт задачи в Jira при смене статуса сделки? Используй ТОЛЬКО приложенную документацию. Укажи конкретные страницы. Ограничься одним абзацем. (модель просканирует документы, найдёт разделы про интеграции через векторный поиск, выдаст ответ с источниками: «Битрикс24 и Мегаплан поддерживают (Битрикс: раздел Webhooks, стр. 47)» — вместо общих фраз типа «обычно CRM умеют интегрироваться»)
Источник: A Comparison of Conversational Models and Humans in Answering Technical Questions: the Firefox Case
ArXiv ID: 2510.21933 | Сгенерировано: 2026-01-12 00:16

Концепты не выделены.

📖 Простыми словами

RAG для техподдержки разработчиков: контекст из документации улучшает ответы, но вредит краткости

arXiv: 2510.21933

Суть в том, что даже самая умная нейронка — это просто начитанный эрудит, который в глаза не видел твой конкретный проект. Когда разработчики Firefox начали гонять GPT по своим внутренним вопросам, модель предсказуемо поплыла: начала выдумывать несуществующие флаги вроде --enable-release и давать советы, которые не работают в текущей версии кода. Проблема в том, что база знаний LLM — это застывший слепок интернета годовой давности, а твой код живет и меняется каждый день. Чтобы оживить систему, использовали RAG (Retrieval-Augmented Generation) — надстройку, которая заставляет модель сначала заглянуть в актуальную документацию, а уже потом открывать рот.

Это работает как адвокат на суде, которому запретили говорить по памяти и обязали сверяться с кодексами. Без RAG нейронка похожа на студента, который уверенно врет на экзамене, надеясь на общую эрудицию. С этой технологией она превращается в профи со шпаргалкой: прежде чем ответить на вопрос "как собрать Firefox под Linux", система судорожно листает свежие файлы проекта, выцепляет нужные куски и только на их основе строит ответ. Формально она всё еще генерирует текст, но теперь её фантазия жестко ограничена рамками реальных фактов из вашей базы знаний.

В исследовании Mozilla инженеры гоняли систему по трем параметрам: полезность, полнота и лаконичность. Выяснилось, что чистый GPT без контекста — это полный провал для специфических задач, потому что он галлюцинирует там, где не знает деталей. RAG же позволяет вытащить ответ на уровень экспертного человеческого совета, потому что модель перестает гадать. Главное условие успеха здесь — релевантность контекста: если поисковик подсунет модели мусорную документацию, на выходе получится такая же херня, только упакованная в вежливый тон.

Тестировали всё это на суровом коде Firefox, но принцип универсален для любого бизнеса или сложного продукта. Если у тебя есть база знаний, техподдержка или тонна внутренних инструкций, обычный чат-бот там бесполезен — он будет путать клиентов и советовать дичь. RAG превращает общую модель в узкого специалиста, который знает именно твой продукт. Это единственный способ заставить AI работать с фактами, а не с вероятностями, и не краснеть потом перед пользователями за советы, которые физически невозможно выполнить.

Короче: если хочешь, чтобы AI реально помогал разработчикам или клиентам, забудь про "просто спроси ChatGPT". Нужно внедрять RAG, который связывает мозги модели с твоими данными. Без этого ты получаешь просто очень дорогой генератор случайных советов. 10 из 10 инженеров подтвердят: лучше получить краткий ответ по делу из документации, чем три абзаца вежливого бреда про несуществующие функции. Либо ты даешь модели актуальный контекст, либо она продолжает творчески лажать на каждом шагу.

Работа с исследованием

Адаптируйте исследование под ваши задачи или создайте готовый промпт на основе техник из исследования.

0 / 2000
~0.5-2 N-токенов ~10-30с
~0.3-1 N-токенов ~5-15с