Почему нейросеть сама не знает ваших документов
Нейросеть училась на открытых текстах. Она не читала ваш регламент доставки, прайс-лист, договоры и карточки заказов, а то, что было в документах вчера, сегодня уже могло измениться. Если спросить её о ваших условиях, она ответит уверенно, но может выдать правдоподобную выдумку
Можно доучить модель на ваших текстах, но это дорого, быстро устаревает и не показывает, откуда взят ответ. Есть путь проще: не заставлять модель помнить документы, а дать ей нужные страницы перед ответом. Это и есть RAG, от английского retrieval-augmented generation: ответ, дополненный поиском1

Без RAG модель отвечает по памяти. С RAG она сначала находит нужные страницы в ваших документах и отвечает, глядя в них. Ошибиться труднее, а любой ответ можно проверить по источнику
Как это работает: три шага
- Подготовка, один раз. Документы режут на небольшие фрагменты, и каждый превращают в набор чисел - отпечаток смысла. Фрагменты про доставку получают похожие отпечатки, фрагменты про отпуск - другие. Отпечатки хранятся в индексе рядом с текстом
- Поиск, при каждом вопросе. Вопрос превращается в такой же отпечаток. Система сравнивает его с отпечатками фрагментов и берёт несколько самых близких. Совпадать должны не слова, а смысл: «сколько везти до Твери» найдёт тариф доставки в Тверь
- Ответ. Найденные фрагменты вместе с вопросом отправляют в языковую модель с просьбой отвечать только по ним и указывать номера. Человек получает короткий ответ и ссылки, по которым можно открыть первоисточник

Дальше можно проверить всё на учебной базе из десяти фрагментов: доставка, возврат, кадры и договоры
Попробуйте на примере
Задайте вопрос или выберите готовый. Сначала он превратится в отпечаток из восьми чисел, затем на карте смыслов появится рядом с самыми близкими фрагментами, и только после этого сформируется ответ. Последний пример не про компанию: посмотрите, что система делает, когда ответа в документах нет
Обратите внимание на архивный фрагмент с прошлогодней ценой доставки: он почти совпадает с вопросом, но в ответ не попадает. Без такой фильтрации система уверенно назвала бы старую цену
Что значит «похоже по смыслу»
Карта в примере - упрощение. Представьте, что каждому фрагменту назначили координаты так, чтобы близкие по смыслу тексты оказались рядом: тарифы и сроки доставки в одном углу, кадровые вопросы в другом. Вопрос получает координаты по тем же правилам, и остаётся найти ближайшие точки. В настоящих моделях таких координат не две, а сотни или тысячи, поэтому карту можно показать только условно
Поэтому поиск по смыслу находит нужное, даже когда слова не совпадают: «когда приедет заказ» и «сроки доставки» близки, хотя общего слова в них нет. Обычный поиск по словам этого не умеет
Когда смысла мало: номера и точные названия
Зато номер заказа, артикул или фамилию лучше искать точным совпадением: для модели «ORD-2026-1045» и «ORD-2026-1054» почти одно и то же. Поэтому рабочие системы сочетают поиск по смыслу, полнотекстовый поиск и точные совпадения. Так устроено демо из нашего кейса о поиске по данным компании
Где RAG ошибается
RAG снижает риск выдумки, но не убирает его. Чаще всего проблемы такие:
- Устаревшие версии. В базе лежат и действующий регламент, и архивный. Нужны статусы и даты, чтобы архив не попадал в ответ
- Ответа в документах нет. Модель должна сказать «не нашёл», а не отвечать по общим знаниям. Это проверяют отдельными вопросами, на которые ответа быть не должно
- Неудачная нарезка. Если фрагмент оборвал таблицу или отделил условие от исключения, ответ получится неполным
- Права доступа. Сотрудник не должен получить ответ по документу, который ему нельзя читать, поэтому доступ проверяют до поиска, а не после
Качество проверяют так же, как любой рабочий процесс: собирают набор настоящих вопросов с ожидаемыми ответами и прогоняют его после каждого изменения. Спорные случаи остаются за людьми
Когда RAG нужен, а когда нет
RAG оправдан, когда документов много, они меняются, а сотрудникам важно быстро найти ответ и убедиться в нём по первоисточнику: регламенты, инструкции, договоры, база знаний поддержки
Он не нужен, если справка занимает пару страниц: проще положить её в запрос целиком. И он не подходит для точных расчётов и сводок по таблицам: сумму заказов за месяц считает база данных или формула, а не поиск по тексту. Иногда достаточно обычной интеграции, как в разделе «Когда ИИ не нужен» нашей первой статьи
Хотите понять, нужен ли RAG вашей компании? Оценка по вашему ТЗ. Можете также посмотреть наши решения и примеры внедрения
Частые вопросы
Чем RAG отличается от дообучения модели?
Дообучение меняет саму модель и закрепляет в ней знания на момент обучения. RAG оставляет модель прежней и каждый раз подаёт ей свежие фрагменты. Документы можно обновлять без переобучения, а в ответе видны источники
Нужно ли отправлять документы во внешний сервис?
Зависит от настроек. Приложение с индексом можно разместить во внутренней сети, но модель для ответа может работать и там, и во внешнем сервисе. Это два отдельных решения, и выбирают их по требованиям к данным
Как понять, что ответу можно верить?
Проверить по ссылкам: в хорошей системе каждый ответ сопровождается фрагментами, на которых он основан, и их можно открыть. Если ссылок нет, ответ нельзя отличить от выдумки
Сколько стоит внедрение?
Зависит от числа источников, их состояния и требований к доступу. Ориентиры по пакетам есть на странице внедрения ИИ, а точную цену по вашей задаче покажет оценка по ТЗ
Источники
- Patrick Lewis et al. Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. NeurIPS, 2020
Внедряем ИИ в рабочие процессы
Берём один процесс, разбираем его вместе с сотрудником, который его ведёт, подключаем модель к вашим данным и проверяем качество на ваших примерах. Спорные случаи остаются за людьми, а в отчёте виден расход на ИИ
Подробнее