Учим ИИ работать с библиотеками. Что такое RAG, как ее подключить и зачем нейросети читать ваши документы
© Коллаж: «Теперь вы знаете», создано при помощи нейросети
Что такое RAG и почему обычной загрузки документов в нейросеть бывает недостаточно
RAG расшифровывается как Retrieval-Augmented Generation — «генерация, дополненная поиском». И поиск тут имеется в виду совсем не сетевой, а по конкретной базе данных, к которой дают доступ модели в дополнение к ее собственным базам и обучению.
Современные ИИ-сервисы умеют анализировать загруженные документы точно так же, как собственные базы знаний и интернет. Достаточно прикрепить файл к сообщению и написать, что требуется сделать, и нейронка прочитает, проанализирует, сделает краткую выжимку, превратит в таблицу или перепишет в нужном стиле.
Но иногда нужно работать не с отдельными документами, а с целой библиотекой. Например, с архивом научных публикаций, корпоративной базой знаний, каталогом технической документации или постоянно обновляющимся массивом нормативных актов.
Это технология, которая позволяет языковым моделям (LLM) отвечать на вопросы, опираясь не только на знания, полученные при обучении, но и на ваши документы, базы знаний и другие источники информации. Работает это довольно просто: вы задаете вопрос, система находит подходящие фрагменты документов, а нейросеть на их основе формирует понятный ответ.
Например, вместо того чтобы самостоятельно искать в десятках корпоративных регламентов, как оформить командировку, можно просто спросить об этом ИИ-ассистента и получить готовую инструкцию со ссылкой на нужный документ.
При этом для нейросети это будет выглядеть так, будто вы задали ей вопрос, вместе с ним сразу дали документы, где есть ответ, и попросили этот ответ сформулировать.
Когда полезно использовать RAG
Первое и главное: когда объем данных по вашей постоянной работе сильно превышает то, что можно обсудить с чат-ботом за один раз.
Загрузить тысячи файлов в один диалог не получится: ИИ-сервисы ограничивают количество и объем документов. Даже если файлы укладываются в эти лимиты, остается другое ограничение — контекстное окно, то есть объем информации, который нейросеть может обработать в рамках одного запроса. Современные модели способны работать с очень большими текстами, но чем больше информации приходится учитывать, тем выше вычислительные затраты и риск пропустить важную деталь.
Отдельная задача — совместная работа. Сотрудникам компании нужен доступ к общей базе знаний, но права на просмотр отдельных документов могут различаться. При этом поиск по общему архиву не должен зависеть от файлов, которые каждый сотрудник загрузил в собственную переписку. А если общая рабочая библиотека файлов еще и регулярно пополняется, синхронизация всего этого безобразия вообще становится задачей со звездочкой.
Вместо того чтобы пытаться вместить весь архив в контекст нейросети, можно дать ей возможность искать сведения в отдельном хранилище. Именно для этого используют RAG.
Главное преимущество RAG в том, что нейросеть может работать с актуальной информацией, которой не было в ее обучающих данных, а риск получить выдуманный ответ становится минимальным.
Любая модель LLM изначально владеет только той информацией, которую заложили в нее при обучении. При этом корпоративные регламенты и договоры в обучающей выборке могут быть не представлены или нужные документы могут появиться позднее, чем модель прошла обучение. RAG помогает языковой модели обогатить ответ на вопрос пользователя информацией, полученной из доступных ей внешних источников без дорогостоящего дообучения модели: обновить базу документов дешевле, чем провести адаптацию (файн-тюнинг).
Как устроен поиск
В классическом варианте RAG состоит из трех основных частей: хранилища документов, поискового механизма и языковой модели.
- Сначала документы подготавливают для поиска. Из файлов извлекают текст, очищают его от технического мусора и обычно разбивают на относительно небольшие фрагменты. При разбиении нельзя отделять условия от относящихся к ним исключений и пояснений.
- Затем создают поисковый индекс, который позволяет быстро находить сведения в архиве. Для этого часто используют векторный поиск: специальная модель преобразует фрагменты текста в наборы чисел — эмбеддинги, по которым можно определять смысловое сходство.
Поиск информации для нейросети можно организовать по-разному. Эмбеддинги обычно хранят в векторных базах данных. Но RAG не ограничивается ими: для поиска можно использовать совпадение слов, смысловое сходство или комбинацию нескольких методов.
Например, пользователь ищет информацию об оплате служебных поездок, а в документах нужный раздел называется «Возмещение транспортных расходов». Поиск по точному совпадению слов может не найти нужный текст, а поиск по смыслу способен обнаружить такую связь.
Один из современных подходов — агентный поиск, при котором ИИ не просто получает заранее найденные фрагменты, а сам решает, где и что искать для ответа на запрос.
Пик применения классического RAG с векторной индексацией пришелся на 2023–2024 годы. Но скоро выяснилось, что индексация — долгий и дорогой процесс, который нужно повторять при каждом обновлении документов. Поэтому сегодня акцент в работе моделей смещается к агентному поиску информации по внешним источникам: агент сам ищет по запросу — итеративно, с помощью специальной утилиты (grep) и полнотекстового поиска, без векторной базы и переиндексации, что экономит ресурсы.
Нагляднее всего это проявляется в процессе генерации кода. Векторный поиск все еще применяется там, где формулировки запроса и документа сильно расходятся (синонимы, перефразирования), а растущие контекстные окна иногда позволяют просто отдать документ целиком. Для массовых запросов к стабильному корпусу индекс все еще выгоден, но все чаще он уступает место агентам, которые ищут данные сами.
Как подключить RAG без программирования и чем он отличается от обычного чата с файлами
Не всякая загрузка файлов в ИИ-сервис означает использование RAG. Если прикрепить небольшой документ к диалогу, его содержимое может просто попасть в контекст модели. Для большой библиотеки сервис может применять поиск, извлекая из документов подходящие фрагменты. Конкретный механизм зависит от продукта.
Вариант 1. Загрузка файлов в универсальные ИИ-сервисы
Самый простой способ предоставить нейросети доступ к документам — прикрепить их к диалогу или добавить в проект. Такие возможности предусмотрены в разных сервисах, хотя организация работы с файлами и поиском у них отличается.
Например, в Claude можно создавать проекты с собственными базами знаний. В платных тарифах Anthropic предусмотрела автоматическое подключение RAG, когда объем материалов приближается к пределу контекстного окна. По объяснению разработчиков, система извлекает наиболее подходящие фрагменты вместо передачи всего содержимого проекта модели. Это позволяет увеличить доступный объем проектных знаний до десяти раз по сравнению с обычным контекстным режимом.
В ChatGPT проекты позволяют хранить связанные чаты, инструкции и файлы в одном месте. Можно собрать рабочую подборку материалов и обращаться к ней в разных диалогах, не прикрепляя каждый раз одни и те же документы.
Если объем документов укладывается в ограничения сервиса, отдельную систему поиска можно не создавать.
Вариант 2. Готовая система для работы с библиотекой
Если нужно регулярно искать информацию в подборке источников и проверять, откуда взят ответ, стоит обратить внимание на системы вроде Google NotebookLM, Perplexity Spaces, Microsoft Copilot Notebooks и Elicit.
Пользователь создает отдельный блокнот, добавляет источники и задает вопросы по их содержимому. Система может анализировать загруженную информацию, сравнивать материалы и приводить ссылки на использованные фрагменты.
В отличие от универсального чат-бота, где документы могут быть лишь одним из элементов задачи, здесь работа строится вокруг конкретного набора источников.
Как организовать собственную библиотеку (на примере NotebookLM):
- Откройте NotebookLM и создайте новый блокнот.
- Добавьте документы через меню источников. Сервис поддерживает различные форматы, включая PDF, текстовые файлы и документы Google.
- После обработки материалов перейдите в чат и задайте вопрос по содержимому библиотеки.
- Проверьте ссылки на исходные фрагменты, которые система использовала при подготовке ответа.
- При необходимости добавляйте новые материалы, удаляйте ненужные и уточняйте запросы.
В готовых сервисах пользователь обычно не управляет поисковым индексом и параметрами извлечения информации: техническую реализацию определяет разработчик. Если необходима более тонкая настройка, придется воспользоваться специальными платформами.
© Коллаж: «Теперь вы знаете», создано при помощи нейросети
Вариант 3. Собственная RAG-система без написания кода
Для создания собственного ИИ-ассистента с подключенной базой знаний существуют платформы визуальной разработки. Они позволяют загружать документы, настраивать поиск по ним и подключать языковые модели без необходимости программировать всю систему с нуля.
Есть несколько вариантов:
- Dify — облачная платформа для создания ИИ-приложений. Позволяет загружать документы в базу знаний, управлять разбиением текста на фрагменты, выбирать способы поиска и подключать базу к чат-боту. Подходит для создания собственного ИИ-ассистента через визуальный интерфейс.
- AnythingLLM — приложение для работы с документами и языковыми моделями, которое можно установить на компьютер. Поддерживает локальное хранение файлов, создание отдельных рабочих пространств и RAG-поиск по загруженным материалам. Подойдет тем, кто предпочитает работать с собственным архивом без обязательной передачи документов в облачное хранилище.
- Flowise — визуальный конструктор, в котором можно собирать цепочки обработки данных, подключать поисковые инструменты, векторные базы и ИИ-агентов. Предоставляет больше возможностей для настройки, но требует понимания устройства RAG и его компонентов.
- RAGFlow — специализированная платформа для поиска по документам с акцентом на извлечение информации, обработку сложных файлов и подтверждение ответов источниками. Для самостоятельного развертывания потребуются технические навыки.
В такой системе можно выбрать языковую модель и создать базу знаний для документов. В нее загружают файлы, после чего настраивают их разбиение на фрагменты, индексацию и механизм извлечения информации. Затем базу подключают к чат-боту или другому ИИ-приложению. Здесь можно изменить размер фрагментов, выбрать способ поиска, задать количество найденных результатов или подключить несколько баз с разным содержимым.
По сути, мы даем нейросети возможность разбираться не только в общих вопросах, но и в нашей специфической информации — будь то личные заметки, рабочие документы или техническая документация целого предприятия. При этом совсем необязательно передавать нейросети все содержимое документов: зачастую достаточно находить и подгружать только те фрагменты, которые относятся к конкретному вопросу. Это особенно полезно там, где сотрудники тратят много времени на поиск информации, например, в юридических, инженерных или технических подразделениях.
Как подключить RAG к нейросети: пошаговая инструкция
Рассмотрим процесс на примере Dify. У платформы есть облачная версия, поэтому для первоначальной настройки не придется устанавливать программное обеспечение на собственный сервер. В остальных конструкторах общий принцип похож, хотя названия разделов и доступные настройки различаются.
- Создайте учетную запись и зарегистрируйтесь в облачной версии платформы, чтобы получить доступ к конструктору ИИ-приложений и баз знаний.
- Создайте базу знаний и загрузите документы. В разделе Knowledge создайте новую базу и добавьте PDF, DOCX, TXT или другие поддерживаемые файлы, по которым нейросеть должна искать информацию.
- Настройте обработку документов. Выберите способ разбиения текста на фрагменты и метод индексации. Для поиска по смыслу можно использовать векторный индекс, а для сочетания смыслового поиска с поиском по словам — гибридный режим.
- Подключите языковую модель. Выберите доступную модель в настройках и при необходимости укажите API-ключ ее провайдера. Эта модель будет формировать ответы на основе найденных документов.
- Создайте ИИ-ассистента и подключите базу знаний. Создайте чат-приложение и добавьте в его рабочий процесс поиск по базе знаний. Настройте передачу найденных фрагментов модели вместе с вопросом пользователя.
- Проверьте работу RAG. Задайте вопросы, ответы на которые точно содержатся в загруженных документах. Проверьте найденные фрагменты, ссылки на источники и соответствие ответов исходному тексту.
- Настройте доступ и обновление документов. Определите, кто сможет пользоваться приложением и базой знаний. Добавляйте новые документы и заменяйте устаревшие, чтобы система обращалась к актуальной информации.
За возможность самостоятельно настраивать поиск придется заплатить временем на освоение платформы. Кроме того, в разных сервисах использование облачных моделей, поисковых сервисов и вычислительных ресурсов может потребовать оплаты. Выбор опции зависит прежде всего от характера задачи и объема документов.
| Задача | Подходящий инструмент |
|---|---|
| Прочитать, пересказать или проанализировать несколько документов | Обычный чат с прикрепленными файлами |
| Постоянно обращаться к одному набору рабочих материалов | Проекты универсальных ИИ-сервисов, например Claude или ChatGPT |
| Исследовать подборку источников и получать ответы с цитированием | NotebookLM |
| Работать с большой базой документов и самостоятельно управлять поиском | RAG-платформы, например Dify |
| Создать корпоративного помощника с разграничением прав доступа | Специализированная система с настройкой доступа и защиты данных |
Почему RAG не универсальное решение и какие документы лучше не загружать
Доступ к документам не избавляет ИИ от ошибок, хотя сильно повышает шансы, что он сконцентрирует свои усилия именно на нужной вам информации и не будет подмешивать в ответы левые выводы.
Если у модели изначально не хватает информации для ответа, она часто «галлюцинирует», то есть достраивает недостающую информацию из вероятностей — по сути, придумывает правдоподобное. RAG меняет сам механизм ответа: модель не «вспоминает», а «читает». Когда нужный фрагмент уже в контексте, достраивать нечего. Сто процентов гарантии нет — пересказ можно исказить, — но принципиально другое: ответ становится проверяемым, так как модель может привести ссылки на источники, к которым она обращалась.
Но ошибки могут возникать еще на этапе поиска. Например, система выберет устаревшую редакцию инструкции или пропустит исключение из правила, которое находится в другом разделе. При автоматическом разбиении текста на фрагменты связанные положения иногда оказываются отделены друг от друга. Плохо распознанные сканы, сложные таблицы и документы с нестандартной версткой тоже создают трудности.
Даже если система нашла нужный фрагмент, модель может неверно истолковать его, перепутать условия или сделать вывод, который не следует из найденного текста.
Поэтому стоит проверять не только наличие ссылок, но и то, действительно ли указанные фрагменты подтверждают ответ.
Для этого полезно придерживаться нескольких правил:
- Просить нейросеть указывать конкретный источник, раздел или цитату, на которой основан ответ.
- Проверять важные выводы по оригинальному документу, а не только по пересказу ИИ.
- Проверять дату и редакцию найденного документа, если в библиотеке есть материалы разных лет.
- Прямо разрешать нейросети отвечать «информация не найдена», если в документах нет ответа.
И конечно, отдельный вопрос — конфиденциальность информации.
Разумеется, важно учитывать конфиденциальность данных: далеко не каждый документ стоит отправлять в публичные ИИ-сервисы, поэтому для корпоративных задач часто используют защищенные решения с разграничением доступа или специальные методы обезличивания чувствительных данных на входе в ИИ.
Условия хранения и обработки файлов зависят от конкретного продукта и тарифа. Например, в большинстве моделей можно отключить использование новых разговоров для обучения моделей. Для корпоративных такая опция часто включена по умолчанию.
Но отключение обучения не гарантирует полной конфиденциальности. При выборе сервиса нужно выяснить, где обрабатываются документы, кто имеет к ним доступ, как долго они хранятся и можно ли их удалить.
Иначе может случиться неприятный казус: доступ к своим библиотекам вы нейронке дали сами, а вот что она будет с ним делать, контролировать будете уже не вы.