Пробел в знаниях, скрывающийся за уверенным ответом
Языковые модели отлично справляются с ответами на вопросы, основываясь на закономерностях, изученных в ходе обширного обучения. Однако они не имеют доступа к информации, которая не была частью этих обучающих данных, например, к последним обновлениям внутренней политики вашей компании или инциденту, произошедшему вчера. Вопрос о конкретном изменении «политики возврата средств» (refund policy) на прошлой неделе, например, скорее всего, приведет к уверенному, но неверному или обобщенному ответу.
Этот «пробел в знаниях» — то место, где на помощь приходит Retrieval-Augmented Generation (RAG). RAG — это не способ сделать модель умнее или обновить ее базовые знания. Вместо этого речь идет о предоставлении модели актуальной внешней информации точно в нужный момент, чтобы ответить на ваш конкретный вопрос.
Представьте, что вы даете эксперту шпаргалку перед тем, как он ответит. Ваше приложение сначала ищет информацию, непосредственно относящуюся к вашему запросу, в отдельной базе знаний — часто это vector database. Эта база данных хранит ваши документы, статьи или внутренние политики, преобразованные в числовые embeddings, которые отражают их смысл.
Если вы спросите «как мне вернуть свои деньги», vector database сможет найти документ под названием «refund policy», даже если этих точных слов не было в вашем вопросе. Затем этот извлеченный текст добавляется в ваш промпт, предоставляя языковой модели точный контекст, необходимый для формулирования правильного ответа. Этот процесс позволяет модели отвечать на вопросы о документах, на которых она никогда не обучалась.
Почему «Refund Policy» может соответствовать запросу «как вернуть деньги»
Вы когда-нибудь пытались найти документ, используя слова, немного отличающиеся от названия? Традиционные поисковые системы часто испытывают трудности, требуя почти идеального совпадения по ключевым словам. Если бы вы ввели «как мне вернуть свои деньги», поиск документа с названием «Refund Policy» мог бы не дать результатов. Именно здесь semantic search меняет правила игры.
Semantic search понимает смысл, стоящий за вашими словами, а не только сами слова. Он может связать «вернуть свои деньги» с «refund policy», потому что распознает, что они передают одну и ту же основную концепцию. Эта магия происходит благодаря embeddings: числовым представлениям текста.
Представьте embedding как точку в обширном многомерном пространстве. Слова и фразы с похожими значениями, такие как «яблоко» и «апельсин», будут расположены очень близко друг к другу в этом пространстве. Совершенно не связанное понятие, например «автомобиль», будет находиться гораздо дальше. Хотя мы можем визуализировать это в двух или трех измерениях, реальные текстовые embeddings часто используют сотни или даже тысячи измерений для отражения сложных семантических связей.
Эти наборы чисел называются vectors. Vector database хранит эти векторы вместе с их исходными фрагментами текста. Когда вы задаете вопрос, ваш запрос также преобразуется в embedding. Затем база данных быстро находит фрагменты текста, векторы которых ближе всего к вектору вашего запроса, извлекая наиболее семантически релевантную информацию. Это позволяет системе извлекать точные исходные фрагменты, непосредственно относящиеся к вашему вопросу, даже если формулировка отличается.
Четыре шага, которые позволяют RAG отвечать с указанием источников
Вот как Retrieval-Augmented Generation (RAG) позволяет ИИ отвечать на вопросы, используя информацию, на которой он никогда не обучался. Это искусный четырехэтапный танец между вашими документами и языковой моделью.
Сначала ваши исходные документы разбиваются на небольшие фрагменты (chunks). Каждый фрагмент затем преобразуется в эмбеддинг (embedding) — длинный список чисел, который отражает его смысл. Представьте это как сопоставление слов с координатами на гигантской многомерной карте. Эти эмбеддинги хранятся в специальной базе данных, часто называемой векторной базой данных, вместе с их исходными текстовыми фрагментами.
Когда вы задаете вопрос, ваш запрос проходит через тот же процесс создания эмбеддинга. Затем векторная база данных находит фрагменты, чьи эмбеддинги численно наиболее близки к эмбеддингу вашего вопроса. Это означает, что система извлекает текст, который семантически похож, даже если точные слова не совпадают.
Затем приложение берет ваш исходный вопрос и добавляет к нему извлеченные текстовые фрагменты, создавая расширенный промпт. Этот дополненный промпт отправляется в языковую модель. Например, если вы спросили о политике возврата средств, промпт может выглядеть так: «Используя следующий контекст: [извлеченный текст о политике возврата], пожалуйста, объясните, как я могу вернуть свои деньги».
Языковая модель затем генерирует ответ, используя этот свежий предоставленный контекст. Она не вспоминает факты из своих обучающих данных, а обрабатывает конкретную информацию, переданную ей в данный момент. Это означает, что она может уверенно отвечать на вопросы о внутренних документах вашей компании или о событиях, произошедших вчера. Для получения более подробной технической информации ознакомьтесь с оригинальной статьей Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks.
Нравится статья? Получайте такие каждое утро на почту.
одно письмо в день · отписка в два клика · без сторонних трекеров
Где ломается простой RAG — и что будет дальше
Простой Retrieval-Augmented Generation (RAG) быстро достигает своих практических ограничений. Иногда семантический поиск подтягивает нерелевантные фрагменты или пропускает важные точные совпадения, такие как коды ошибок, которые не имеют схожих значений. Кроме того, система не узнает об обновлениях в ваших документах, пока эмбеддинги не будут перестроены.
Вот почему производственные системы RAG часто сочетают поиск по ключевым словам (keyword search) с векторным поиском. Они собирают результаты обоими методами, а затем используют модель «реранкер» (reranker) для их сортировки по истинной релевантности. Это позволяет RAG оставаться гибким и актуальным, в отличие от дообучения (fine-tuning) модели, которое навсегда меняет её поведение и требует переобучения для внесения обновлений.
Не принимайте увеличенные контекстные окна за «волшебную таблетку»; даже большие языковые модели с трудом эффективно обрабатывают огромные объемы текста. Продвинутые подходы RAG, такие как agentic RAG, внедряют итеративный поиск, позволяя ИИ уточнять свои запросы. GraphRAG, еще одна инновация, обнаруживает связи между точками данных, выходя за рамки простого извлечения фрагментов к более глубокому пониманию вашей базы знаний.
Часто задаваемые вопросы
Что такое RAG в ИИ?
Retrieval-Augmented Generation (RAG) извлекает релевантную внешнюю информацию и предоставляет её языковой модели, чтобы она могла отвечать, используя этот контекст.
Как векторная база данных помогает RAG?
Она хранит текстовые эмбеддинги и извлекает отрывки, смысл которых близок к запросу пользователя, даже если формулировки различаются.
Устраняет ли RAG галлюцинации ИИ?
Нет. RAG может основывать ответы на исходном материале, но нерелевантное или неполное извлечение данных, а также ошибки модели все равно могут приводить к неверным ответам.
Чем RAG отличается от дообучения (fine-tuning)?
RAG предоставляет релевантную информацию во время запроса; дообучение меняет выученное поведение модели посредством дополнительного обучения.

