Соавторы:

  • Пракул Агарвал — старший менеджер по продуктам, машинное обучение в MongoDB
  • Джерри Лю — соучредитель LlamaIndex

Сводка

Модели больших языков (LLM), такие как ChatGPT, произвели революцию в том, как пользователи могут получать ответы на свои вопросы. Однако «знания» LLM ограничены тем, чему они обучались, что для ChatGPT означает общедоступную информацию в Интернете до сентября 2021 года. Как LLM могут отвечать на вопросы, используя частные источники знаний, такие как данные вашей компании, и раскрывать ее истинную преобразующую силу. ?

В этом блоге мы обсудим, как LlamaIndex и MongoDB могут помочь вам быстро достичь этого результата. Прикрепленная записная книжка содержит пошаговое руководство по выполнению запросов к любому PDF-документу с использованием запросов на английском языке.

Фон

Традиционно ИИ использовался для анализа данных, выявления закономерностей и прогнозов на основе существующих данных. Недавние достижения привели к тому, что ИИ стал лучше создавать новые вещи (а не просто анализировать существующие). Это называется генеративным ИИ. Генеративный ИИ основан в основном на моделях машинного обучения, называемых моделями больших языков (LLM). LLM предварительно обучаются на большом количестве общедоступного текста. Существуют различные проприетарные LLM от таких компаний, как OpenAI, Cohere, AI21, а также множество новых LLM с открытым исходным кодом, таких как Llama, Dolly и т. д.

Есть 2 основных сценария, в которых знания LLM недостаточны:

  • Частные данные, такие как внутренняя база знаний вашей компании, распределены по файлам PDF, документам Google, страницам Wiki и приложениям, таким как Salesforce и Slack.
  • Более новые данные, чем при последнем обучении LLM. Пример вопроса: Кто последний премьер-министр Великобритании?

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

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

Контекстное обучение требует вставки новых данных как части входных запросов в LLM. Чтобы выполнить это увеличение данных безопасным, высокопроизводительным и экономичным способом, могут помочь такие инструменты, как LlamaIndex и MongoDB Developer Data Platform.

Введение в LlamaIndex

LlamaIndex предоставляет простой и гибкий интерфейс для подключения LLM к внешним данным.

  • Предлагает соединители данных для различных источников данных и форматов данных (API, PDF-файлы, документы и т. д.).
  • Предоставляет индексы по неструктурированным и структурированным данным для использования с LLM.
  • Структурирует внешнюю информацию таким образом, чтобы ее можно было использовать с ограничениями окна подсказки любого LLM.
  • Предоставляет интерфейс запроса, который принимает запрос ввода и возвращает вывод, дополненный знаниями.

MongoDB как хранилище данных

С помощью встроенных абстракций в LlamaIndex легко хранить загруженные документы (например, объекты Node), метаданные индекса и т. д. в MongoDB. Существует возможность хранить «документы» как фактическую коллекцию в MongoDB, используя MongoDocumentStore. Существует возможность сохранить «Индексы» с помощью MongoIndexStore .

Хранение документов и индексов LlamaIndex в базе данных становится необходимым в нескольких сценариях:

  1. Варианты использования с большими наборами данных могут потребовать больше, чем хранилище в памяти.
  2. Получение и обработка данных из различных источников (например, PDF, Google Docs, Slack).
  3. Требование постоянно поддерживать обновления из базовых источников данных.

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

Атлас MongoDB

MongoDB предлагает бесплатный постоянный кластер Atlas в общедоступной облачной службе по вашему выбору. Это можно сделать очень быстро, следуя этому учебнику. Или начать прямо здесь.

Использование LLM

LlamaIndex использует модули LLM LangChain (еще одна популярная платформа для создания приложений генеративного ИИ) и позволяет настраивать используемый базовый LLM (по умолчанию используется модель OpenAI text-davinci-003). Выбранный LLM всегда используется LlamaIndex для построения окончательного ответа, а иногда также используется при создании индекса.

Рабочий процесс

  1. Подключить частные источники знаний с помощью коннекторов LlamaIndex (предлагается через LlamaHub).
  2. Загрузить в Документы. Документ представляет собой легкий контейнер вокруг источника данных.
  3. Разберите объекты Documents на объекты Node. Узлы представляют собой «фрагменты» исходных документов (например, фрагмент текста). Эти объекты узла могут быть сохранены в коллекции MongoDB или храниться в памяти.
  4. Построить индекс из узлов. В LlamaIndex есть различные типы индексов, такие как «индекс списка» (сохраняет узлы в виде последовательной цепочки), «индекс хранилища векторов» (сохраняет каждый узел и соответствующее вложение в хранилище векторов). В зависимости от типа индекса эти индексы могут быть сохранены в коллекции MongoDB или базе данных Vector.
  5. Наконец, запросите индекс. Здесь запрос анализируется, соответствующие узлы извлекаются с помощью индексов и предоставляются в качестве входных данных для «большой языковой модели» (LLM). Различные типы запросов могут использовать разные индексы.

Получение ответов на вопросы по вашим личным данным

Мы хотим запросить Технический отчет GPT-4, опубликованный OpenAI в марте 2023 года. Это был PDF-документ на 100 страниц. Это недавняя публикация, поэтому она не была включена в исходные обучающие данные ChatGPT.

Вот сводка различных запросов, которые мы можем задать PDF.

Запрос

"Как GPT4 показал себя на экзамене по адвокатуре?"

Ответ

"GPT-4 показал хорошие результаты на экзамене на униформу юриста, набрав 10 % лучших участников теста (таблица 1, рис. 4)".

Использование токена LLM

Общее использование токенов внедрения: 18 токенов
Общее использование токенов LLM: 1889 токенов

Запрос

Насколько лучше GPT-4 в уменьшении галлюцинаций по сравнению с GPT-3.5?

Ответ

"GPT-4 лучше последней модели GPT-3.5 на 19 процентных пунктов со значительным преимуществом по всем темам".

Запрос

"Какие проблемы были обнаружены после тонкой настройки GPT-4 с помощью RHLF??"

Ответ

«После тонкой настройки GPT-4 с помощью RHLF были обнаружены проблемы, в том числе модель стала чрезмерно осторожной в определенных отношениях, например, отказ от безобидных запросов и чрезмерное хеджирование или «чрезмерный отказ». Кроме того, модель по-прежнему была довольно хрупкой и иногда проявляла нежелательное поведение из-за подсказок, в которых инструкции для маркировщиков были недостаточно заданы».

Запрос

Что такое RBRM?

Ответ

«RBRM расшифровывается как модель вознаграждения на основе правил. Это метод, используемый для предоставления дополнительного сигнала вознаграждения модели политики GPT-4 во время точной настройки PPO на подмножестве обучающих запросов. В качестве входных данных RBRM принимает три вещи: подсказку (необязательно), выходные данные модели политики и написанную человеком рубрику (например, набор правил в стиле множественного выбора) для оценки этих выходных данных. Затем RBRM классифицирует выходные данные на основе рубрики».

На приведенных ниже снимках экрана показано, как PDF-документ преобразуется в «узлы LlamaIndex» и «индексы LlamaIndex» и сохраняется в MongoDB.

Соответствующие ресурсы

Более подробную информацию можно найти здесь. Также ознакомьтесь со справочным блокнотом ниже!

Чтение данных из MongoDB: ссылка

Различные индексы в LlamaIndex: ссылка

Справочник по блокноту

https://colab.research.google.com/drive/1SNIeLW38Nvx6MtL3-_LPS2XTIzqD4gS6?usp=sharing