LlamaIndex Добавьте уникальные данные в свои заявки на программу LLM легко

LlamaIndex Легко добавьте уникальные данные в свои заявки на программу LLM

Большие языковые модели (LLM), такие как серия GPT от OpenAI, обучены на разнообразных общедоступных данных, что позволяет им проявлять замечательные способности в генерации текста, суммаризации, вопросно-ответной системе и планировании. Несмотря на их универсальность, вопрос, который часто задают, касается плавной интеграции этих моделей с пользовательскими, частными или закрытыми данными.

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

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

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

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

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

По мере исследования таких техник сообщество обращает внимание на инструменты, такие как LlamaIndex.

Llama Index

LlamaIndex

Он был создан Джерри Лю, бывшим научным сотрудником Uber. Во время экспериментов с GPT-3 в прошлом году Лю заметил ограничения модели в работе с частными данными, такими как личные файлы. Это наблюдение привело к запуску проекта с открытым исходным кодом LlamaIndex.

Инициатива привлекла инвесторов, получив $8.5 млн в последнем раунде привлечения средств.

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

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

Высокоуровневые концепции и некоторые идеи

1. Расширенная генерация с помощью восстановления (RAG):

LlamaIndex RAG

LlamaIndex RAG

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

  • Этап индексирования: Это подготовительная фаза, где заложена основа для создания базы знаний.

LlamaIndex INDEXES

Индексирование LlamaIndex

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

LlamaIndex QUERY STAGE

Этап запроса LlamaIndex

Индексирование с помощью LlamaIndex:

  • Коннекторы данных: Подумайте о коннекторах данных как о паспорте вашего данных в LlamaIndex. Они помогают импортировать данные из разных источников и форматов, инкапсулируя их в простое представление «Документ». Коннекторы данных можно найти в LlamaHub, открытом репозитории, наполненном загрузчиками данных. Эти загрузчики созданы для простой интеграции и предоставляют опыт подключения и использования с любым приложением LlamaIndex.

Llama hub

Центр LlamaIndex (https://llamahub.ai/)

  • Документы/Узлы: Документ – это как универсальный чемодан, который может содержать различные типы данных – будь то PDF, вывод API или записи базы данных. С другой стороны, узел – это фрагмент или “кусочек” из документа, обогащенный метаданными и связями с другими узлами, обеспечивающий прочную основу для точного извлечения данных в дальнейшем.
  • Индексы данных: После ввода данных LlamaIndex помогает индексировать эти данные в формате, который можно извлекать. Внутри LlamaIndex он разбивает исходные документы на промежуточные представления, вычисляет векторные вложения и выясняет метаданные. Среди индексов часто используется «VectorStoreIndex».

Типы индексов в LlamaIndex: ключ к организованным данным

LlamaIndex предлагает различные типы индексов, каждый со своими особенностями и применением. В основе этих индексов лежат “узлы”, о которых мы уже говорили. Давайте попытаемся понять индексы LlamaIndex с их механикой и применением.

1. Индекс списка:

  • Механизм: Индекс списка выстраивает узлы последовательно, как список. После разделения входных данных на узлы они располагаются линейно и готовы к последовательному запросу или запросу по ключевым словам или вложениям.
  • Преимущество: Этот тип индекса отлично подходит для последовательного запроса. LlamaIndex обеспечивает использование всего ввода данных, даже если он превышает лимит токенов LLM, смарт-запрос текста из каждого узла и уточнение ответов по мере перехода по списку.

2. Индекс хранилища векторов:

  • Механизм: Здесь узлы превращаются в векторные вложения, которые хранятся локально или в специализированной векторной базе данных, такой как Milvus. При запросе он извлекает top_k наиболее похожих узлов и направляет их в синтезатор ответа.
  • Преимущество: Если ваш рабочий процесс зависит от сравнения текста с использованием семантической схожести через векторный поиск, можно использовать этот индекс.

3. Индекс дерева:

  • Механизм: В индексе дерева входные данные превращаются в структуру дерева, построенную снизу вверх от листовых узлов (исходные фрагменты данных). Родительские узлы появляются как сводки листовых узлов, созданные с использованием GPT. При запросе индекс дерева может проходить от корневого узла до листовых узлов или непосредственно формировать ответы из выбранных листовых узлов.
  • Преимущество: Использование индекса дерева позволяет более эффективно обрабатывать длинные фрагменты текста и упрощает извлечение информации из различных текстовых сегментов.

4. Индекс ключевых слов:

  • Механизм: Сердцем индекса ключевых слов является карта ключевых слов к узлам. При запросе ключевые слова выбираются из запроса, и в центр внимания привлекаются только сопоставленные узлы.
  • Преимущество: Когда у вас есть четкие запросы пользователей, можно использовать индекс ключевых слов. Например, просеивание медицинских документов становится более эффективным, когда вы сфокусированы только на документах, связанных с COVID-19.

Установка LlamaIndex

Установка LlamaIndex – это простой процесс. Вы можете выбрать установку прямо из Pip или из исходного кода. (Убедитесь, что на вашей системе установлен Python или вы можете использовать Google Colab)

1. Установка из Pip:

  • Выполните следующую команду:pip install llama-index
  • Примечание: Во время установки LlamaIndex может скачивать и сохранять локальные файлы для определенных пакетов, таких как NLTK и HuggingFace. Чтобы указать каталог для этих файлов, используйте переменную среды «LLAMA_INDEX_CACHE_DIR».

2. Установка из исходного кода:

  • Сначала клонируйте репозиторий LlamaIndex из GitHub:git clone https://github.com/jerryjliu/llama_index.git
  • После клонирования перейдите в директорию проекта.
  • Вам понадобится Poetry для управления зависимостями пакетов.
  • Теперь создайте виртуальное окружение с помощью Poetry:poetry shell
  • Наконец, установите требования основного пакета с помощью:poetry install

Настройка вашей среды для LlamaIndex

1. Настройка OpenAI:

  • По умолчанию LlamaIndex использует модель gpt-3.5-turbo от OpenAI для генерации текста и модель text-embedding-ada-002 для поиска и встраивания текста.
  • Для использования этой настройки вам понадобится ключ OPENAI_API_KEY. Получите его, зарегистрировавшись на сайте OpenAI и создав новый API-токен.
  • У вас есть гибкость настроить базовую модель большого языка (Large Language Model – LLM) в соответствии с потребностями вашего проекта. В зависимости от вашего поставщика LLM вам могут потребоваться дополнительные ключи и токены окружения.

2. Настройка локальной среды:

  • Если вы предпочитаете не использовать OpenAI, LlamaIndex автоматически переключается на локальные модели – LlamaCPP и llama2-chat-13B для генерации текста, а также BAAI/bge-small-en для поиска и встраивания текста.
  • Чтобы использовать LlamaCPP, следуйте предложенному руководству по установке. Убедитесь, что установлен пакет llama-cpp-python, лучше скомпилированный для поддержки вашей графической карты (GPU). Для этой настройки потребуется примерно 11.5 ГБ памяти на CPU и GPU.
  • Для локального встраивания выполните pip install sentence-transformers. Для этой локальной настройки потребуется примерно 500 МБ памяти.

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

Простой пример использования: поиск веб-страниц с помощью LlamaIndex и OpenAI

Вот простой скрипт на Python, который демонстрирует, как можно запрашивать определенные сведения с веб-страницы:

!pip install llama-index html2text
import osfrom llama_index import VectorStoreIndex, SimpleWebPageReader# Введите ваш ключ OpenAI ниже:os.environ["OPENAI_API_KEY"] = ""# URL, который вы хотите загрузить в векторное хранилище:url = "http://www.paulgraham.com/fr.html"# Загрузите URL в документы (возможна загрузка нескольких документов)documents = SimpleWebPageReader(html_to_text=True).load_data([url])# Создайте векторное хранилище из документовindex = VectorStoreIndex.from_documents(documents)# Создайте движок запросов, чтобы можно было задавать вопросы:query_engine = index.as_query_engine()# Задавайте вопросы загруженным данным сколько угодно раз:response = query_engine.query("Какие 3 лучших совета Пола по сбору средств?")print(response)
Три лучших совета от Пола о сборе средств:
1. Начните с низкой суммы при первоначальном сборе средств. Это позволит гибкость и увеличивает шансы на привлечение большего количества средств в будущем.
2. Старайтесь быть прибыльными, если возможно. Иметь план достижения прибыльности без зависимости от дополнительного финансирования делает стартап более привлекательным для инвесторов.
3. Не оптимизируйте для оценки. Хотя оценка имеет значение, она не является самым важным фактором в сборе средств. Сосредоточьтесь на получении необходимых средств и поиске хороших инвесторов вместо этого.

Блокнот Google Colab Llama Index

Блокнот Google Colab Llama Index

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

LlamaIndex против Langchain: выбор в зависимости от вашей цели

Ваш выбор между LlamaIndex и Langchain будет зависеть от цели вашего проекта. Если вы хотите разработать интеллектуальный поисковой инструмент, LlamaIndex – отличный выбор, блестящий как умный механизм хранения для извлечения данных. С другой стороны, если вы хотите создать систему, подобную ChatGPT с возможностью подключения плагинов, Langchain – это то, что вам нужно. Он не только облегчает использование нескольких экземпляров ChatGPT и LlamaIndex, но и расширяет функциональность, позволяя создавать мультитасковые агенты. Например, с помощью Langchain вы можете создавать агентов, способных выполнить код Python при одновременном выполнении поиска в Google. Вкратце, LlamaIndex превосходит в обработке данных, а Langchain организует несколько инструментов для предоставления комплексного решения.

Логотип LlamaIndex, созданный с использованием Midjourney

Логотип LlamaIndex, созданный с использованием Midjourney