Расширение больших языковых моделей посредством генерации с дополнительным извлечением или точной настройки
В серии статей мы обсудим механизмы извлечения знаний, которые используют большие языковые модели (LLM) для создания ответов. По умолчанию LLM имеет доступ только к данным обучения. Но вы можете расширить модель, чтобы включить данные в режиме реального времени или частные данные.
Первый механизм — получения дополненного поколения (RAG). RAG — это форма предварительной обработки, которая объединяет семантический поиск с контекстной примыкой. Контекстный прайминг подробно рассматривается в ключевых концепциях и соображениях по созданию решений на основе генеративного ИИ.
Второй механизм — это тонкая настройка . При тонкой настройке LLM дополнительно обучается по конкретному набору данных после первоначального широкого обучения. Цель заключается в адаптации LLM для повышения производительности задач или понимания концепций, связанных с набором данных. Этот процесс помогает модели специализироваться или повысить ее точность и эффективность в обработке определенных типов входных или доменов.
В следующих разделах подробно описаны два механизма.
Общие сведения о RAG
RAG часто используется для реализации сценария "чат с моими данными". В этом сценарии организация имеет потенциально большой объем текстового содержимого, например документов, документации и других собственных данных. Он использует этот корпус в качестве основы для ответов на запросы пользователей.
На высоком уровне создается запись базы данных для каждого документа или для части документа, и такая часть называется блоком . Блок индексируется на встраивании , то есть вектор (массив-го размера) чисел, представляющих аспекты документа. Когда пользователь отправляет запрос, выполняется поиск базы данных для аналогичных документов, а затем отправка запроса и документов в LLM для создания ответа.
Примечание.
Мы используем термин «генерация с дополнением извлечения» (RAG) в широком смысле. Процесс реализации системы чата на основе RAG, как описано в этой статье, можно применить, независимо от того, хотите ли вы использовать внешние данные в поддерживающей роли (RAG) или в качестве центра ответа (RCG). Нюанс различия не рассматривается в большинстве материалов, относящихся к RAG.
Создание индекса векторных документов
Первым шагом к созданию системы чата на основе RAG является создание векторного хранилища данных, содержащего вектор внедрения документа или блока. Рассмотрим следующую схему, которая описывает основные шаги по созданию векторизованного индекса документов.
Схема отображает конвейер данных. Конвейер отвечает за прием, обработку и управление данными, которые использует система. Конвейер включает предварительную обработку данных, хранящихся в векторной базе данных, и гарантирует, что данные, которые передаются в LLM, имеют правильный формат.
Весь процесс определяется понятием внедрения, которое представляет собой числовое представление данных (обычно слова, фразы, предложения или даже целые документы), которое фиксирует семантические свойства входных данных таким образом, что может обрабатываться моделями машинного обучения.
Чтобы создать внедрение, вы отправляете фрагмент содержимого (предложения, абзацы или целые документы) в API внедрения Azure OpenAI. API возвращает вектор. Каждое значение в векторе представляет характеристику (измерение) содержимого. Измерения могут включать темы, семантические значения, синтаксис и грамматику, использование слов и фраз, контекстные отношения, стиль или тон. Вместе все значения вектора представляют мерное пространство содержимого. Если вы думаете о трехмерном представлении вектора с тремя значениями, конкретный вектор находится в определенной области плоскости плоскости XYZ. Что делать, если у вас есть 1000 значений или даже больше? Несмотря на то, что люди не могут нарисовать график с 1000 измерениями на листе бумаги, чтобы сделать его более понятным, компьютеры без проблем разбираются в такой степени размерности пространства.
На следующем шаге схемы показано хранение вектора и содержимого (или указателя на расположение содержимого) и других метаданных в векторной базе данных. Векторная база данных похожа на любой тип базы данных, но с двумя различиями:
- Векторные базы данных используют вектор в качестве индекса для поиска данных.
- Векторные базы данных реализуют алгоритм, называемый косинусное подобие поиска, также называемый ближайший сосед. Алгоритм использует векторы, которые наиболее тесно соответствуют критериям поиска.
Благодаря корпусу документов, хранящихся в векторной базе данных, разработчики могут создавать компонент извлекателя для получения документов, соответствующих запросу пользователя. Данные используются для того, чтобы предоставить LLM необходимую информацию для ответа на запрос пользователя.
Ответы на запросы с использованием ваших документов
Система RAG сначала использует семантический поиск для поиска статей, которые могут оказаться полезными для LLM при создании ответа. Следующий шаг — отправить соответствующие статьи с исходным запросом пользователя на LLM, чтобы создать ответ.
Рассмотрим следующую схему как простую реализацию RAG (иногда называемую наивной RAG):
На схеме пользователь отправляет запрос. Первым шагом является создание внедрения запроса пользователя на возврат вектора. Следующим шагом будет поиск в векторной базе данных тех документов (или частей документов), которые наиболее точно соответствуют.
подобие косинуса является мерой, которая помогает определить, насколько похожи два вектора. По сути, метрика оценивает косинус угла между ними. Косинусная схожесть, близкая к 1, указывает на высокую степень схожести при небольшом угле. Сходство вблизи -1 указывает на непохожесть (угол почти 180 градусов). Эта метрика имеет решающее значение для таких задач, как сходство документов, где цель заключается в поиске документов, имеющих аналогичное содержимое или значение.
ближайшие алгоритмы соседей работают путем поиска ближайших векторов (соседей) для точки в векторном пространстве. В алгоритме ближайших соседей (KNN)k относится к числу ближайших соседей, которые следует рассмотреть. Этот подход широко используется в классификации и регрессии, где алгоритм прогнозирует метку новой точки данных на основе большинства меток его k ближайших соседей в обучаемом наборе. Сходство KNN и косинус часто используются в системах, таких как подсистемы рекомендаций, где цель заключается в поиске элементов, наиболее похожих на предпочтения пользователя, представленных в виде векторов в пространстве внедрения.
Вы выбираете лучшие результаты из этого поиска и отправляете их вместе с запросом пользователя, чтобы создать ответ, который, надеемся, будет основан на них.
Проблемы и рекомендации
Система RAG имеет свой набор проблем реализации. Конфиденциальность данных является первостепенной задачей. Система должна ответственно обрабатывать пользовательские данные, особенно при получении и обработке информации из внешних источников. Вычислительные требования также могут быть значительными. Как процесс извлечения, так и порождающие процессы являются ресурсоемкими. Обеспечение точности и релевантности ответов при управлении смещениями в данных или модели является еще одним важным фактором. Разработчики должны тщательно перемещаться по этим задачам, чтобы создавать эффективные, этические и ценные системы RAG.
Сборка продвинутых систем генерации с дополнением извлечением предоставляет больше информации о построении данных и инференсных конвейеров, чтобы обеспечить производственную готовность системы RAG.
Если вы хотите начать экспериментировать с созданием решения для создания решения для создания искусственного интеллекта немедленно, рекомендуется ознакомиться с тем, как приступить к работе с чатом с помощью собственного примера данных для Python. Это руководство также доступно для .NET, Javaи JavaScript.
Настройка модели
В контексте LLM тонкая настройка — это процесс настройки параметров модели путем обучения её на наборе данных для конкретного домена после первоначального обучения LLM на большом, разнообразном наборе данных.
LLM обучены (предварительно обучены) для широкого набора данных, захвата структуры языка, контекста и широкого спектра знаний. На этом этапе предполагается обучение шаблонов общего языка. В предварительно обученной модели добавляется более точное обучение на основе небольшого набора данных. Этот этап дополнительного обучения направлен на адаптацию модели для улучшения выполнения конкретных задач или понимания конкретных доменов, повышения точности и релевантности для этих специализированных приложений. Во время тонкой настройки вес модели корректируется, чтобы лучше предсказать или понять нюансы этого небольшого набора данных.
Ниже приведены некоторые рекомендации.
- Специализация: тонкой настройке модели настраивается для конкретных задач, таких как анализ юридических документов, интерпретация медицинского текста или взаимодействие с обслуживанием клиентов. Эта специализация делает модель более эффективной в этих областях.
- эффективность: более эффективно настраивать предварительно обученную модель для конкретной задачи, чем обучать модель с нуля. Для тонкой настройки требуется меньше данных и меньше вычислительных ресурсов.
- Адаптивность: Тонкая настройка позволяет адаптироваться к новым задачам или доменам, которые не были частью исходных обучающих данных. Адаптивность LLM делает их универсальными инструментами для различных приложений.
- Улучшенная производительность: Для задач, отличающихся от данных, на основе которых изначально была обучена модель, тонкая настройка может привести к повышению производительности. Тонкая настройка адаптирует модель для понимания специфического языка, стиля или терминологии, используемых в новой области.
- Персонализация. В некоторых приложениях тонкой настройкой можно персонализировать ответы или прогнозы модели в соответствии с конкретными потребностями или предпочтениями пользователя или организации. Однако у тонкой настройки есть определенные недостатки и ограничения. Общие сведения об этих факторах помогут вам решить, когда следует выбирать варианты точной настройки и альтернативных вариантов, таких как RAG.
- требования к данным. Для настройки требуется достаточно большой и высококачественный набор данных, характерный для целевой задачи или домена. Сбор и обработка этого набора данных могут быть сложными и ресурсоемкими.
- Риск переподбора: Переподбор данных является риском, особенно с небольшим набором данных. Переобучение заставляет модель хорошо работать на обучающих данных, но плохо на новых, неизвестных данных. Обобщаемость уменьшается при возникновении переобучения.
- Затраты и ресурсы: Хотя она менее ресурсоемкая, чем обучение с нуля, точная настройка по-прежнему требует вычислительных ресурсов, особенно для больших моделей и наборов данных. Стоимость может быть слишком высокой для некоторых пользователей или проектов.
- Обслуживание и обновление: Для тонко настроенных моделей может требоваться регулярное обновление, чтобы они оставались эффективными по мере изменения информации, специфичной для данной области, с течением времени. Для текущего обслуживания требуются дополнительные ресурсы и данные.
- смещение модели: поскольку модель настраивается для конкретных задач, она может потерять некоторые из ее общего языкового понимания и универсальности. Это явление называется дрейфом модели.
Настройка модели с помощью тонкой настройки объясняет, как делается тонкая настройка модели. На высоком уровне вы предоставляете набор данных JSON потенциальных вопросов и предпочтительные ответы. В документации предполагается, что есть заметные улучшения, предоставляя 50–100 пар вопросов и ответов, но правильное число значительно зависит от варианта использования.
Тонкая настройка против RAG
На первый взгляд может показаться, что есть довольно много пересечения между тонкой настройкой и RAG. Выбор между точной настройкой и развертыванием дополненного поколения зависит от конкретных требований вашей задачи, включая ожидания производительности, доступность ресурсов и потребность в специфике домена и обобщенности.
Когда использовать точную настройку вместо RAG:
- Производительность для конкретной задачи: Тонкая настройка предпочтительнее, когда критически важна высокая производительность по конкретной задаче, и имеется достаточно данных, специфичных для области, чтобы эффективно обучить модель без значительного риска переобучения.
- контроль над данными. Если у вас есть собственные или высокоспециализированные данные, которые значительно отличаются от данных, на которых была обучена базовая модель, то настройка позволяет включить эти уникальные знания в модель.
- Ограниченные потребности в обновлении в режиме реального времени. Если задача не требует постоянно обновлять модель с последними сведениями, то более эффективна, так как модели RAG обычно нуждаются в доступе к внешним базам данных up-toдате или Интернету для извлечения последних данных.
Когда отдавать предпочтение RAG вместо тонкой настройки
- динамическое содержимое или развивающееся содержимое: RAG более подходит для задач, где наиболее актуальная информация имеет решающее значение. Так как модели RAG могут извлекать данные из внешних источников в режиме реального времени, они лучше подходят для приложений, таких как создание новостей или ответы на вопросы о последних событиях.
- обобщение по специализации. Если цель заключается в поддержании высокой производительности в широком спектре тем, а не в узком домене, RAG может быть предпочтительнее. Он использует внешние база знаний, позволяя ему создавать ответы в различных доменах без риска переподбора в определенный набор данных.
- ограничения ресурсов. Для организаций с ограниченными ресурсами для сбора данных и обучения моделей, используя подход RAG, может предложить экономически эффективную альтернативу тонкой настройке, особенно если базовая модель уже работает достаточно хорошо по нужным задачам.
Окончательные рекомендации по проектированию приложений
Вот краткий список вещей, которые следует рассмотреть и другие варианты из этой статьи, которые могут повлиять на ваши решения по проектированию приложений:
- Определите между тонкой настройкой и RAG на основе конкретных потребностей приложения. Улучшенная настройка может повысить производительность специализированных задач, в то время как RAG может обеспечить гибкость и up-toсодержимое даты для динамических приложений.