Погружение в ретриев-усиленную генерацию в LLM

Погружение в усиленную генерацию ретриев в LLM

Представьте, что вы аналитик и имеете доступ к большой языковой модели. Вы взволнованы перспективами, которые она предлагает для вашего рабочего процесса. Но затем вы спрашиваете ее о последних ценах на акции или текущей инфляции, и она отвечает вам:

«Извините, я не могу предоставить данные в режиме реального времени или после отсечки. Мои последние тренировочные данные охватывают только январь 2022 года».

Большие языковые модели, несмотря на свою лингвистическую мощь, не обладают способностью уловить настоящее. А в быстром темпе современного мира настоящее – это все.

Исследования показывают, что большие предварительно обученные языковые модели (LLM) также являются хранилищами фактических знаний.

Они были обучены на столько данных, что поглотили много фактов и цифр. При доводке их результаты могут быть впечатляющими на различных задачах обработки естественного языка.

Но есть одна загвоздка: их способность получать доступ и манипулировать этими хранимыми знаниями не всегда идеальна. Особенно при знаниевых задачах эти модели могут отставать от более специализированных архитектур. Это как иметь библиотеку со всеми книгами в мире, но без каталога для поиска нужного.

OpenAI улучшает возможности просмотра в ChatGPT

Недавнее объявление OpenAI о возможности просмотра в ChatGPT является значительным скачком в направлении Retrieval-Augmented Generation (RAG). Теперь ChatGPT способен просматривать интернет в поисках актуальной и авторитетной информации, отражая подход RAG к динамическому извлечению данных из внешних источников для предоставления обогащенных ответов.

На данный момент функция доступна только для пользователей Plus и Enterprise, но OpenAI планирует скоро распространить ее на всех пользователей. Пользователи могут активировать эту функцию, выбрав «Просмотр с помощью Bing» в разделе GPT-4.

Новая функция просмотра в ChatGPT

Новая функция просмотра в ChatGPT с помощью «Bing»

Конструирование промптов эффективно, но недостаточно

Промпты служат входными точками для знаний LLM. Они направляют модель и дают направление для ответа. Однако эффективный промпт сам по себе не является полноценным решением для получения нужной информации от LLM. Тем не менее, рассмотрим несколько хороших практик, которые стоит учитывать при написании промпта:

  1. Ясность: Четко сформулированный промпт устраняет неопределенность. Он должен быть простым и понятным, чтобы модель понимала намерения пользователя. Ясность часто приводит к более связанным и актуальным ответам.
  2. Контекст: Особенно для больших входных данных расположение инструкции может повлиять на вывод. Например, перемещение инструкции в конец длинного промпта часто дает лучшие результаты.
  3. Точность инструкции: Вопрос, передаваемый через структуру «кто, что, где, когда, почему, как», может направить модель на более фокусированный ответ. Кроме того, указание желаемого формата или размера вывода может дополнительно уточнить результат модели.
  4. Обработка неопределенности: Важно указать модели, как отвечать, когда она неуверена. Например, инструкция указывать на ответ “Я не знаю”, когда модель неуверена, может предотвратить генерацию неточных или «фантастических» ответов.
  5. Мышление шаг за шагом: Для сложных инструкций направление модели думать систематически и разбивание задачи на подзадачи может привести к более полным и точным результатам.

О том, как важны промпты для управления ChatGPT, можно прочитать подробную статью на Unite.ai.

Проблемы генеративных моделей искусственного интеллекта

Конструирование промптов включает настройку инструкций, передаваемых модели, для улучшения ее производительности. Это очень эффективный способ повышения точности генеративных приложений искусственного интеллекта, требующий только незначительных изменений кода. Хотя конструирование промптов может значительно улучшить результаты, важно понимать врожденные ограничения больших языковых моделей (LLM). Два основных вызова заключаются в «фантазировании» и «отсечке знаний».

  • Галлюцинации: Это относится к случаям, когда модель уверенно возвращает неправильный или придуманный ответ. Хотя у современных больших языковых моделей есть встроенные механизмы для распознавания и предотвращения таких результатов.

Галлюцинации в LLM

Галлюцинации в LLM

  • Ограничение на знания: У каждой модели LLM есть дата завершения обучения, после которой она не знает о событиях или развитии. Это ограничение означает, что знания модели замораживаются на момент ее последнего дня обучения. Например, модель, обученная до 2022 года, не будет знать о событиях 2023 года.

Ограничение знаний в LLM

Ограничение знаний в LLM

Аугментация генерации с помощью поиска (RAG) предлагает решение для этих проблем. Она позволяет моделям получать доступ к внешней информации, смягчая проблемы с галлюцинациями, предоставляя доступ к закрытым или специфичным для области данных. Для ограничения знаний RAG может получать актуальную информацию за пределами даты обучения модели, гарантируя актуальность результатов.

Также она позволяет LLM извлекать данные из различных внешних источников в режиме реального времени. Это могут быть базы знаний, базы данных или даже всемирная паутина.

Введение в аугментацию генерации с помощью поиска

Аугментация генерации с помощью поиска (RAG) – это не конкретная технология, а фреймворк, который позволяет большим языковым моделям использовать данные, на которых они не были обучены. Существуют несколько способов реализации RAG, и лучший подход зависит от конкретной задачи и характера данных.

Фреймворк RAG работает структурированно:

Ввод запроса

Процесс начинается с ввода или запроса пользователя. Это может быть вопрос или утверждение, требующее конкретной информации.

Поиск во внешних источниках

Вместо прямой генерации ответа на основе обучения модель, с помощью компонента-извлекателя, ищет во внешних источниках данных. Эти источники могут быть базами знаний, базами данных и хранилищами документов, а также доступными в интернете данными.

Понимание поиска

Суть поиска состоит в извлечении наиболее соответствующей информации в ответ на запрос пользователя. Этот процесс можно разбить на две стадии:

  1. Индексирование: Возможно, самая сложная часть всего процесса RAG заключается в индексации вашей базы знаний. Процесс индексации можно условно разделить на две фазы: загрузка и разбиение. В инструментах, таких как LangChain, эти процессы называются «подкачкой» и «разделением». Подкачка извлекает контент из различных источников, будь то веб-страницы или PDF-файлы. После извлечения разделители разбивают этот контент на куски оптимального размера, оптимизируя его для встраивания и поиска.
  2. Запрос: Это действие по извлечению наиболее релевантных фрагментов знаний на основе поискового запроса.

Хотя существует множество способов подхода к поиску, от простого сопоставления текста до использования поисковых систем, таких как Google, современные системы аугментации генерации с помощью поиска (RAG) основаны на семантическом поиске. В центре семантического поиска лежит понятие вложений.

Вложения играют центральную роль в том, как большие языковые модели (LLM) понимают язык. Когда люди пытаются объяснить, как они извлекают значение из слов, объяснение часто сводится к врожденному пониманию. Глубоко внутри нашей когнитивной структуры мы понимаем, что “ребенок” и “малыш” являются синонимами, или что “красный” и “зеленый” оба обозначают цвета.

Аугментация запроса

Извлеченная информация затем объединяется с исходным запросом, создавая дополненный или расширенный запрос. Этот расширенный запрос предоставляет модели дополнительный контекст, который особенно ценен, если данные являются специфичными для области или не входят в изначальный корпус обучения модели.

Генерация завершения

С дополнительной подсказкой в руке модель затем генерирует завершение или ответ. Этот ответ основан не только на обучении модели, но также учитывает полученные данные в режиме реального времени.

Поиск с расширенным запросом

Поиск с расширенным запросом

Архитектура первой модели RAG LLM

Научная статья Петра, опубликованная в 2020 году «Поиск с расширенным запросом для задач обработки естественного языка, требующих углубленных знаний», предоставляет подробный обзор этой техники. Модель поиска с расширенным запросом дополняет традиционный процесс генерации внешним механизмом поиска или извлечения. Это позволяет модели извлекать соответствующую информацию из обширных корпусов данных, улучшая ее способность генерировать контекстуально точные ответы.

Вот как это работает:

  1. Параметрическая память: Это ваша традиционная языковая модель, например, модель seq2seq. Она была обучена на большом количестве данных и знает многое.
  2. Непараметрическая память: Представьте это себе как поисковую систему. Это плотный векторный индекс, основанный, например, на Википедии, к которому можно получить доступ с использованием нейронного извлекателя.

Когда эти два компонента объединяются, создается точная модель. Модель RAG сначала извлекает соответствующую информацию из своей непараметрической памяти, а затем использует свои параметрические знания для создания последовательного ответа.

Оригинальная модель RAG от Петра

Оригинальная модель RAG от Петра

1. Двухшаговый процесс:

Модель RAG LLM работает по принципу двухшагового процесса:

  • Извлечение: Сначала модель ищет соответствующие документы или фрагменты из большого набора данных. Это делается с помощью плотного механизма извлечения, который использует векторы для представления как запроса, так и документов. Векторы затем используются для расчета показателей сходства, и извлекаются документы с наивысшим рейтингом.
  • Генерация: После получения лучших K соответствующих документов они затем передаются генератору последовательности-в-последовательность вместе с исходным запросом. Этот генератор затем создает финальный вывод, черпая контекст из обоих запроса и полученных документов.

2. Плотное извлечение:

Традиционные системы извлечения часто опираются на разреженные представления, такие как TF-IDF. Однако RAG LLM использует плотные представления, где как запрос, так и документы являются вложенными в непрерывные векторные пространства. Это позволяет более тонкое сравнение сходства, улавливая семантические отношения за пределами простого сопоставления ключевых слов.

3. Генерация последовательности-в-последовательность:

Извлеченные документы служат в качестве расширенного контекста для модели генерации. Эта модель, часто основанная на архитектурах, таких как Transformers, затем генерирует окончательный вывод, обеспечивая его согласованность и контекстуальную практичность.

Индексирование и извлечение документов

Для эффективного информационного поиска, особенно из больших документов, данные часто хранятся в векторной базе данных. Каждый фрагмент данных или документ индексируется на основе векторного вложения, которое улавливает семантическую суть содержимого. Эффективное индексирование обеспечивает быстрое извлечение соответствующей информации на основе входной подсказки.

Векторные базы данных

Векторная база данных

Источник: Redis

Векторные базы данных, иногда называемые векторным хранилищем, являются специализированными базами данных, способными эффективно хранить и извлекать векторные данные. В области искусственного интеллекта и компьютерных наук векторы представляют собой списки чисел, символизирующих точки в многомерном пространстве. В отличие от традиционных баз данных, которые больше приспособлены для табличных данных, векторные базы данных блестят в управлении данными, которые естественным образом соответствуют векторному формату, например, вложения из моделей искусственного интеллекта.

Некоторые известные векторные базы данных включают Annoy, Faiss от Meta, Milvus и Pinecone. Эти базы данных играют важную роль в приложениях искусственного интеллекта, помогая в задачах от систем рекомендаций до поиска изображений. Платформы, такие как AWS, также предлагают специализированные услуги для потребностей векторных баз данных, например, Amazon OpenSearch Service и Amazon RDS для PostgreSQL. Эти сервисы оптимизированы для конкретных случаев использования, обеспечивая эффективное индексирование и запросы.

Группировка для актуальности

Учитывая, что многие документы могут быть обширными, часто используется техника, известная как “группировка”. Она заключается в разбиении больших документов на более мелкие, семантически связанные блоки. Затем эти блоки индексируются и извлекаются при необходимости, обеспечивая использование наиболее актуальных частей документа для быстрого дополнения.

Учет контекстного окна

Каждая форма Retrieval-Augmented Generation (RAG) работает в рамках контекстного окна, которое, по сути, представляет собой максимальное количество информации, которое она может учесть одновременно. Если внешние источники данных предоставляют информацию, превышающую размер контекстного окна, ее необходимо разбить на более мелкие блоки, соответствующие контекстному окну модели.

Преимущества использования Retrieval-Augmented Generation

  1. Повышение точности: Используя внешние источники данных, модель RAG LLM может генерировать ответы, основанные не только на тренировочных данных, но и на самой актуальной и свежей информации, доступной в корпусе поиска.
  2. Преодоление пробелов в знаниях: RAG эффективно решает врожденные ограничения знаний в LLM, будь то ограничение на обучение модели или отсутствие специализированных данных в корпусе обучающих данных.
  3. Универсальность: RAG может быть интегрирована с различными внешними источниками данных, от внутренних баз данных организации до публично доступных интернет-данных. Это делает ее приспособляемой для широкого спектра приложений и отраслей.
  4. Снижение вымыслов: Одной из проблем с LLM является возможность “вымыслов” или генерации фактически некорректной или вымышленной информации. Предоставляя контекст реальных данных в реальном времени, RAG значительно снижает вероятность таких результатов.
  5. Масштабируемость: Одно из основных преимуществ RAG LLM – его способность масштабироваться. Отделяя процессы поиска и генерации, модель может эффективно обрабатывать огромные наборы данных, что делает ее подходящей для приложений в реальном мире, где данные чрезвычайно обширны.

Проблемы и соображения

  • Вычислительная сложность: Двухэтапный процесс может быть вычислительно интенсивным, особенно при работе с большими наборами данных.
  • Зависимость от данных: Качество полученных документов напрямую влияет на качество генерации. Поэтому важно иметь всеобъемлющий и аккуратно подготовленный корпус поиска.

Заключение

Интегрируя процессы поиска и генерации, Retrieval-Augmented Generation предлагает надежное решение для задач, требующих большого объема знаний, обеспечивая результаты, которые основаны на актуальной и контекстно ценной информации.

Реальный потенциал RAG заключается в его возможностях в реальном мире. Для секторов, таких как здравоохранение, где своевременная и точная информация может иметь решающее значение, RAG предлагает возможность извлекать и генерировать понимание из обширной медицинской литературы без проблем. В области финансов, где рынки меняются каждую минуту, RAG может предоставлять данные в режиме реального времени, содействуя принятию осознанных решений. Кроме того, в академической среде и научных исследованиях ученые могут использовать RAG для анализа обширных информационных репозиториев, делая обзоры литературы и анализ данных более эффективными.