Зв'язатися з нами

LlamaIndex: легко доповнюйте свої програми LLM за допомогою спеціальних даних

Штучний Інтелект

LlamaIndex: легко доповнюйте свої програми LLM за допомогою спеціальних даних

mm
CallIndex

Великі мовні моделі (LLM), такі як серія GPT OpenAI, були навчені на різноманітних загальнодоступних даних, демонструючи надзвичайні можливості у створенні тексту, резюмуванні, відповідях на запитання та плануванні. Незважаючи на їх універсальність, питання, яке часто ставлять, пов’язане з бездоганною інтеграцією цих моделей із користувальницькими, приватними чи закритими даними.

Компанії та окремі особи переповнені унікальними та спеціальними даними, які часто зберігаються в різних програмах, таких як Notion, Slack і Salesforce, або зберігаються в особистих файлах. Щоб використовувати LLM для цих конкретних даних, було запропоновано та експериментовано кілька методологій.

Тонка настройка представляє один із таких підходів, він полягає в коригуванні вагових коефіцієнтів моделі для включення знань із певних наборів даних. Однак цей процес не позбавлений труднощів. Це вимагає значних зусиль у підготовці даних у поєднанні зі складною процедурою оптимізації, що потребує певного рівня досвіду машинного навчання. Більше того, фінансові наслідки можуть бути значними, особливо при роботі з великими наборами даних.

Навчання в контексті з’явилося як альтернатива, приділяючи пріоритет створенню вхідних даних і підказок, щоб забезпечити LLM необхідним контекстом для генерації точних результатів. Цей підхід зменшує потребу в широкому перенавчанні моделі, пропонуючи більш ефективні та доступні засоби інтеграції особистих даних.

Але недоліком цього є його залежність від навичок і досвіду користувача оперативне проектування. Крім того, навчання в контексті не завжди може бути таким точним або надійним, як тонке налаштування, особливо при роботі з вузькоспеціалізованими або технічними даними. Попереднє навчання моделі на широкому діапазоні інтернет-тексту не гарантує розуміння конкретного жаргону чи контексту, що може призвести до неточних або нерелевантних результатів. Це особливо проблематично, коли приватні дані надходять із нішевого домену чи галузі.

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

Оскільки спільнота досліджує ці методи, такі інструменти, як CallIndex зараз привертають увагу.

Індекс лами

Індекс лами

Це було розпочато Джеррі Лю, колишній науковий співробітник Uber. Експериментуючи з GPT-3 минулої осені, Лю помітив обмеження моделі щодо обробки приватних даних, таких як особисті файли. Це спостереження призвело до запуску проекту з відкритим кодом LlamaIndex.

Ініціатива залучила інвесторів, забезпечивши $ 8.5 мільйонів в нещодавньому раунді початкового фінансування.

LlamaIndex полегшує доповнення LLM за допомогою користувацьких даних, усуваючи розрив між попередньо підготовленими моделями та користувацькими випадками використання даних. За допомогою LlamaIndex користувачі можуть використовувати свої власні дані за допомогою LLM, відкриваючи можливість генерувати знання та міркувати за допомогою персоналізованої інформації.

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

Концепції високого рівня та деякі ідеї

1. Доповнена генерація пошуку (RAG):

LlamaIndex RAG

LlamaIndex RAG

RAG — це подвійний процес, призначений для поєднання LLM із користувальницькими даними, таким чином підвищуючи здатність моделі надавати більш точні та обґрунтовані відповіді. Процес включає в себе:

  • Етап індексування: це підготовчий етап, на якому закладається основа для створення бази знань.
ІНДЕКСИ LlamaIndex

Індексація LlamaIndex

  • Стадія запиту: Тут базу знань шукають відповідний контекст, щоб допомогти магістрам у відповідях на запити.
ЕТАП ЗАПИТУ LlamaIndex

Етап запиту LlamaIndex

Подорож індексування з LlamaIndex:

  • Роз'єми даних: Думайте про з’єднувачі даних як про паспорт ваших даних до LlamaIndex. Вони допомагають імпортувати дані з різних джерел і форматів, інкапсулюючи їх у спрощене представлення «Документа». З’єднувачі даних можна знайти в LlamaHub, сховищі з відкритим кодом, наповненому завантажувачами даних. Ці завантажувачі створені для легкої інтеграції, що дозволяє працювати з будь-якою програмою LlamaIndex.
Вузол лами

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

  • Документи / Вузли: Документ схожий на звичайну валізу, яка може містити різні типи даних, будь то PDF, вихід API або записи бази даних. З іншого боку, вузол — це фрагмент або «фрагмент» документа, збагачений метаданими та зв’язками з іншими вузлами, що забезпечує надійну основу для точного отримання даних у майбутньому.
  • Індекси даних: Після прийому даних LlamaIndex допомагає індексувати ці дані у форматі, який можна отримати. За лаштунками він розділяє необроблені документи на проміжні представлення, обчислює векторні вбудовування та виводить метадані. Серед індексів часто вибирають «VectorStoreIndex».

Типи індексів у LlamaIndex: ключ до впорядкованих даних

LlamaIndex пропонує різні типи індексів, кожен для різних потреб і випадків використання. В основі цих індексів лежать «вузли», як обговорювалося вище. Давайте спробуємо зрозуміти індекси LlamaIndex з їхньою механікою та застосуванням.

1. Індекс списку:

  • Механізм: Індекс списку вирівнює вузли послідовно, як список. Після поділу вхідних даних на вузли, вони впорядковані лінійним чином, готові до запитів або послідовно, або через ключові слова чи вбудовування.
  • Перевага: цей тип індексу найкращий, коли потрібно виконувати послідовні запити. LlamaIndex забезпечує використання всіх ваших вхідних даних, навіть якщо вони перевищують ліміт токенів LLM, розумно запитуючи текст з кожного вузла та уточнюючи відповіді під час навігації вниз по списку.

2. Vector Store Index:

  • Механізм: Тут вузли перетворюються на векторні вбудовані елементи, які зберігаються локально або в спеціалізованій векторній базі даних, наприклад Мільвус. Під час запиту він отримує 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 використовує OpenAI gpt-3.5-turbo для створення тексту і text-embedding-ada-002 для пошуку та вбудовування.
  • Щоб використовувати це налаштування, вам потрібно мати OPENAI_API_KEY. Отримайте його, зареєструвавшись на веб-сайті OpenAI і створивши новий маркер API.
  • У вас є можливість налаштувати основну велику мовну модель (LLM) відповідно до потреб вашого проекту. Залежно від вашого постачальника LLM вам можуть знадобитися додаткові ключі та маркери середовища.

2. Налаштування локального середовища:

  • Якщо ви не бажаєте використовувати OpenAI, LlamaIndex автоматично перемикається на локальні моделі – LlamaCPP та llama2-chat-13B для створення тексту та BAAI/bge-small-en для пошуку та вбудовування.
  • використовувати LlamaCPP, дотримуйтеся наданого посібника зі встановлення. Переконайтесь у встановленні llama-cpp-python пакет, ідеально скомпільований для підтримки вашого GPU. Це налаштування використовуватиме близько 11.5 ГБ пам’яті для ЦП і ГП.
  • Для локальних вбудовувань виконайте pip install sentence-transformers. Це локальне налаштування використовуватиме близько 500 МБ пам’яті.

За допомогою цих налаштувань ви можете адаптувати своє середовище, щоб або використовувати потужність OpenAI, або запускати моделі локально відповідно до вимог вашого проекту та ресурсів.

Простий варіант використання: запит до веб-сторінок за допомогою LlamaIndex і OpenAI

Ось простий сценарій Python, щоб продемонструвати, як ви можете запитувати веб-сторінку для отримання певної інформації:

!pip install llama-index html2text

import os
from llama_index import VectorStoreIndex, SimpleWebPageReader

# Enter your OpenAI key below:
os.environ["OPENAI_API_KEY"] = ""

# URL you want to load into your vector store here:
url = "http://www.paulgraham.com/fr.html"

# Load the URL into documents (multiple documents possible)
documents = SimpleWebPageReader(html_to_text=True).load_data([url])

# Create vector store from documents
index = VectorStoreIndex.from_documents(documents)

# Create query engine so we can ask it questions:
query_engine = index.as_query_engine()

# Ask as many questions as you want against the loaded data:
response = query_engine.query("What are the 3 best advise by Paul to raise money?")
print(response)
The three best pieces of advice by Paul to raise money are:
1. Start with a low number when initially raising money. This allows for flexibility and increases the chances of raising more funds in the long run.
2. Aim to be profitable if possible. Having a plan to reach profitability without relying on additional funding makes the startup more attractive to investors.
3. Don't optimize for valuation. While valuation is important, it is not the most crucial factor in fundraising. Focus on getting the necessary funds and finding good investors instead.
Google Colab Llama Index Notebook

Google Colab Llama Index Notebook

За допомогою цього сценарію ви створили потужний інструмент для отримання конкретної інформації з веб-сторінки, просто поставивши запитання. Це лише проблиск того, чого можна досягти за допомогою LlamaIndex і OpenAI під час запиту веб-даних.

LlamaIndex проти Langchain: вибір на основі вашої цілі

Ваш вибір між LlamaIndex і Лангчейн залежатиме від мети вашого проекту. Якщо ви хочете розробити інтелектуальний інструмент пошуку, LlamaIndex є надійним вибором, оскільки він відмінно підходить як розумний механізм зберігання для пошуку даних. З іншого боку, якщо ви хочете створити систему на зразок ChatGPT із можливостями плагінів, Langchain — це ваш вибір. Це не тільки сприяє створенню кількох екземплярів ChatGPT і LlamaIndex, але й розширює функціональність, дозволяючи створювати багатозадачні агенти. Наприклад, за допомогою Langchain ви можете створювати агентів, здатних виконувати код Python, одночасно здійснюючи пошук у Google. Коротше кажучи, хоча LlamaIndex чудово справляється з обробкою даних, Langchain організовує кілька інструментів для надання цілісного рішення.

Ілюстрація логотипу LlamaIndex створена за допомогою Midjourney

Логотип LlamaIndex Ілюстрація, створена за допомогою Серед подорожі

Останні п’ять років я провів, занурюючись у захоплюючий світ машинного та глибокого навчання. Моя пристрасть і досвід допомогли мені внести свій внесок у понад 50 різноманітних проектів розробки програмного забезпечення, зосередивши особливу увагу на ШІ/ML. Моя постійна цікавість також привела мене до обробки природної мови, галузі, яку я хочу досліджувати далі.