кочан LlamaIndex: Увеличете вашите LLM приложения с персонализирани данни лесно - Unite.AI
Свържете се с нас

Изкуствен интелект

LlamaIndex: Увеличете вашите LLM приложения с персонализирани данни лесно

mm
Обновено on
CallIndex

Големите езикови модели (LLM) като серията GPT на OpenAI са обучени на разнообразна гама от публично достъпни данни, демонстрирайки забележителни способности при генериране на текст, обобщаване, отговаряне на въпроси и планиране. Въпреки тяхната гъвкавост, често задаваният въпрос се върти около безпроблемната интеграция на тези модели с персонализирани, частни или патентовани данни.

Бизнесите и физическите лица са наводнени с уникални и персонализирани данни, които често се съхраняват в различни приложения като Notion, Slack и Salesforce или се съхраняват в лични файлове. За да се използват LLMs за тези специфични данни, бяха предложени и експериментирани няколко методологии.

Фина настройка представлява един такъв подход, той се състои в коригиране на теглата на модела, за да се включат знания от конкретни набори от данни. Този процес обаче не е без предизвикателства. Това изисква значителни усилия при подготовката на данни, съчетано с трудна процедура за оптимизация, изискваща определено ниво на опит в машинното обучение. Освен това финансовите последици могат да бъдат значителни, особено когато се работи с големи набори от данни.

Обучението в контекст се появи като алтернатива, приоритизирайки изработването на входове и подкани, за да предостави на LLM необходимия контекст за генериране на точни резултати. Този подход смекчава необходимостта от широко преквалификация на модела, като предлага по-ефективни и достъпни средства за интегриране на лични данни.

Но недостатъкът за това е разчитането му на уменията и опита на потребителя бърз инженеринг. Освен това обучението в контекст може да не винаги е толкова прецизно или надеждно, колкото фината настройка, особено когато се работи с високоспециализирани или технически данни. Предварителното обучение на модела върху широк набор от интернет текстове не гарантира разбиране на конкретен жаргон или контекст, което може да доведе до неточни или неуместни резултати. Това е особено проблематично, когато личните данни са от нишов домейн или индустрия.

Освен това количеството контекст, който може да бъде предоставен в единична подкана, е ограничено и производителността на LLM може да се влоши с увеличаване на сложността на задачата. Съществува и предизвикателството на поверителността и сигурността на данните, тъй като информацията, предоставена в подканата, може потенциално да бъде чувствителна или поверителна.

Докато общността изследва тези техники, инструменти като CallIndex сега привличат вниманието.

Индекс на лама

Индекс на лама

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

Инициативата е привлякла инвеститори, осигурявайки 8.5 милиона долара в скорошен кръг за начално финансиране.

LlamaIndex улеснява разширяването на LLM с персонализирани данни, преодолявайки празнината между предварително обучени модели и случаи на използване на персонализирани данни. Чрез LlamaIndex потребителите могат да използват собствените си данни с LLM, отключвайки генерирането на знания и разсъжденията с персонализирани прозрения.

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

Концепции от високо ниво и някои прозрения

1. Разширено генериране на извличане (RAG):

LlamaIndex RAG

LlamaIndex RAG

RAG е двустранен процес, предназначен да свързва LLM с персонализирани данни, като по този начин подобрява капацитета на модела да предоставя по-прецизни и информирани отговори. Процесът включва:

  • Етап на индексиране: Това е подготвителната фаза, в която се полага основата за създаване на база от знания.
ИНДЕКСИТЕ на LlamaIndex

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

  • Етап на запитване: Тук базата от знания се претърсва за подходящ контекст, за да помогне на LLM при отговарянето на запитвания.
ЕТАП НА ЗАЯВКА НА LlamaIndex

Етап на заявка за LlamaIndex

Индексиране на пътуване с LlamaIndex:

  • Съединители за данни: Мислете за конекторите за данни като за паспорт на вашите данни към LlamaIndex. Те помагат при импортирането на данни от различни източници и формати, капсулирайки ги в опростено представяне на „Документ“. Конекторите за данни могат да бъдат намерени в LlamaHub, хранилище с отворен код, пълно с устройства за зареждане на данни. Тези зареждащи устройства са създадени за лесна интеграция, което позволява plug-and-play изживяване с всяко приложение на 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 GB памет в CPU и GPU.
  • За локални вграждания, изпълнете pip install sentence-transformers. Тази локална настройка ще използва около 500 MB памет.

С тези настройки можете да приспособите вашата среда, за да използвате силата на 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 и Langchain ще зависи от целта на вашия проект. Ако искате да разработите интелигентен инструмент за търсене, LlamaIndex е солиден избор, отличен като интелигентен механизъм за съхранение за извличане на данни. От друга страна, ако искате да създадете система като ChatGPT с възможности за плъгини, Langchain е вашият избор. Той не само улеснява множество екземпляри на ChatGPT и LlamaIndex, но също така разширява функционалността, като позволява изграждането на многозадачни агенти. Например с Langchain можете да създавате агенти, способни да изпълняват код на Python, докато едновременно с това извършвате търсене в Google. Накратко, докато LlamaIndex превъзхожда обработката на данни, Langchain организира множество инструменти, за да предостави холистично решение.

Произведение на логото на LlamaIndex, създадено с помощта на Midjourney

Лого на LlamaIndex Произведения на изкуството, създадени с помощта на По средата на пътуването

Прекарах последните пет години, потапяйки се в завладяващия свят на машинното обучение и дълбокото обучение. Моята страст и опит ме накараха да допринеса за над 50 различни проекта за софтуерно инженерство, със специален фокус върху AI/ML. Продължаващото ми любопитство също ме насочи към обработката на естествен език, област, която нямам търпение да проуча по-нататък.