«Подключить нейросеть к своим документам» звучит как одна кнопка. На деле это конвейер из четырёх звеньев, и модель в нём — последнее звено. Разберём, что происходит между вашим вопросом и абзацем с цитатой.
Сначала о том, чего модель не знает
Языковая модель не хранит ваши файлы. В её параметрах — обобщённые закономерности текста, а не ваш договор поставки, регламент согласований или техпаспорт станка. Спросите про внутренний приказ — получите гладкий ответ, не имеющий к приказу отношения. Это и есть галлюцинация в бытовом смысле: не злонамеренная выдумка, а заполнение пустоты.
Отсюда два пути. Первый — дообучение: показать модели много примеров. Оно хорошо работает, когда нужно привить стиль, формат или научить специфической разметке. Хуже — когда нужно, чтобы модель помнила конкретные факты и цифры: знания расплываются по весам, их трудно обновлять, а старый документ нельзя «выключить». Второй путь — retrieval, поиск. Нужный фрагмент не запоминают, а подкладывают в контекст в момент вопроса. Обновили файл — обновился ответ.
Шаг 1: нарезка, где ломается чаще всего
Документы режут на фрагменты — чанки. Слишком крупный кусок размывает поиск и съедает контекст; слишком мелкий теряет смысл: «...в случае просрочки — 0,1%» без начала абзаца бесполезен. Рабочая эвристика — абзац или два с небольшим перекрытием, чтобы мысль на стыке не рвалась.
Главные жертвы нарезки — таблицы, заголовки и списки внутри PDF. Заголовок «Раздел 4. Ответственность» уезжает в один чанк, а его содержимое — в другой, и поиск больше не понимает, о чём фрагмент. Практический приём: приклеивать к каждому фрагменту путь по документу (название файла, раздел, дата) — это дёшево и заметно повышает попадание. И да, сканы без распознанного текста не индексируются вовсе: сначала OCR, потом всё остальное.
Шаг 2: индекс, который ищет по смыслу
Каждый фрагмент превращают в эмбеддинг — вектор чисел, кодирующий смысл. Векторы складывают в индекс; вопрос превращают в такой же вектор и ищут ближайших соседей. Работает приятно: запрос «кто платит за доставку» находит абзац про «расходы на транспортировку несёт покупатель», хотя общих слов там нет.
У этого способа есть слепые зоны. Эмбеддинги плохо различают цифры, артикулы, редкие имена и отрицания: «не подлежит возврату» и «подлежит возврату» лежат в пространстве почти рядом. Поэтому на практике почти всегда делают гибрид — векторный поиск плюс обычный полнотекстовый по ключевым словам, а результаты смешивают. Скучно, зато работает.
Шаг 3: поиск, фильтры и сборка ответа
Дальше — топ-N фрагментов и переранжировщик: небольшая модель, которая пересортировывает кандидатов уже на паре «вопрос — фрагмент». Это дешевле, чем кажется, и часто даёт больше, чем смена основной модели.
Не менее важны метаданные. Если в базе три редакции договора и две версии регламента, без фильтров по дате, отделу и статусу модель уверенно ответит по устаревшему. Пользователь при этом не заметит подвоха.
Финальный шаг — сборка контекста. Фрагменты вставляют в промпт с инструкцией: отвечать только по этим материалам, ссылаться на источник, а если ответа нет — так и сказать. Последнее правило нарушается чаще всего: модели свойственно достраивать ответ до связного вида. Единственная надёжная страховка — показывать цитаты и ссылки на конкретные куски, чтобы человек мог проверить за десять секунд.
Когда RAG спасает, а когда выходит красивая свалка
Спасает: корпус большой и меняется; ответы должны дословно совпадать с формулировками документов; нужна прослеживаемость до пункта; данные нельзя отправлять в обучение, но можно — в контекст.
Не спасает: нужных знаний в документах нет; вопрос требует агрегата по всей базе («сколько всего действующих договоров» — это запрос к базе данных, а не к поиску); документы противоречат друг другу; на входе мусор.
Векторный индекс поверх свалки PDF не превращает свалку в базу знаний — он всего лишь делает её поисковой.
Чек-лист перед стартом:
- Соберите 30–50 реальных вопросов сотрудников и эталонные ответы. Без этого вы не измерите ничего, кроме собственных ощущений.
- Сначала гибридный поиск, метаданные и переранжирование — потом эксперименты с моделью.
- Всегда выводите источники.
- Логируйте, какие фрагменты попали в контекст: большинство ошибок видно именно там.
- Проверьте, кто отвечает за актуальность документов. Технически это не решается.
RAG — это в первую очередь инженерия поиска и совсем во вторую — работа с моделью. Магия тут не нужна; нужны нарезка, фильтры и честное «в документах этого нет».





Комментарии
Пока нет комментариев — будьте первым.