Umělá inteligence

LlamaIndex: Rozšiřte své LLM aplikace pomocí vlastních dat snadno

mm
LlamaIndex

Velké jazykové modely (LLM) jako série GPT od OpenAI byly školeny na široké škále veřejně dostupných dat a prokázaly pozoruhodné schopnosti v generování textu, souhrnech, odpovědích na otázky a plánování. Přestože jsou velmi univerzální, často kladenou otázkou je bezproblémová integrace těchto modelů s vlastními, soukromými nebo proprietárními daty.

Podniky a jednotlivci jsou zaplaveni jedinečnými a vlastními daty, často uloženými v různých aplikacích, jako jsou Notion, Slack a Salesforce, nebo uloženými v osobních souborech. Aby mohli využít LLM pro tato specifická data, byly navrženy a experimentovány s několika metodami.

Fine-tuning představuje jeden z takových přístupů, který spočívá v úpravě váh modelu pro zařazení znalostí z konkrétních datových sad. Tento proces však není bez svých výzev. Vyžaduje značné úsilí při přípravě dat, spojené s obtížným optimalizačním postupem, který vyžaduje určitou úroveň odborných znalostí v oblasti strojového učení. Kromě toho mohou být finanční důsledky značné, zejména při práci s velkými datovými sadami.

İn-kontextové učení se stalo alternativou, která se zaměřuje na vytváření vstupů a promptů pro poskytnutí LLM s nezbytným kontextem pro generování přesných výstupů. Tento přístup snižuje potřebu rozsáhlého přeškolování modelu a nabízí efektivnější a přístupnější způsob integrace soukromých dat.

Ale tato metoda má své nevýhody, jako je závislost na dovednostech a odbornosti uživatele v prompt engineering. Kromě toho může být in-kontextové učení méně přesné nebo spolehlivé než fine-tuning, zejména při práci s vysoce specializovanými nebo technickými daty. Předškolování modelu na široké škále internetového textu nezaručuje pochopení specifické terminologie nebo kontextu, což může vést k nepřesným nebo irelevantním výstupům. To je zvláště problematické, pokud jsou soukromá data z nízkého nebo odvětvového domény.

<p Navíc je omezena množství kontextu, které lze poskytnout v jednom promptu, a výkon LLM se může zhoršit se zvyšující se složitostí úkolu. Existuje také výzva spojená s ochranou soukromí a zabezpečením dat, protože informace poskytnuté v promptu mohou být potenciálně citlivé nebo důvěrné.

Zatímco komunita zkoumá tyto techniky, nástroje jako LlamaIndex získávají pozornost.

Llama Index

Llama Index

Byl zahájen Jerry Liuem, bývalým vědcem z Uberu. Zatímco experimentoval s GPT-3 minulý podzim, Liu si uvědomil omezení modelu při práci s soukromými daty, jako jsou osobní soubory. Tato pozorování vedla k zahájení open-source projektu LlamaIndex.

Iniciativa získala investory a zajistila $8,5 milionu v nedávném kole seed financování.

LlamaIndex usnadňuje rozšíření LLM o vlastní data, mostem mezi předškolovanými modely a vlastními datovými případy. Pomocí LlamaIndex mohou uživatelé využít svá vlastní data s LLM, odemykají tak generování znalostí a rozumné závěry s personalizovanými informacemi.

Uživatelé mohou snadno poskytnout LLM svým vlastním datům, vytvářejí tak prostředí, ve kterém je generování znalostí a rozumné závěry hluboce personalizovány a informovány. LlamaIndex řeší omezení in-kontextového učení poskytováním uživatelsky přívětivější a bezpečnější platformy pro interakci s daty, zajišťující, že i uživatelé s omezenými znalostmi strojového učení mohou využít plný potenciál LLM se svými soukromými daty.

High-Level Concepts & some Insights

1. Retrieval Augmented Generation (RAG):

LlamaIndex RAG

LlamaIndex RAG

RAG je dvojfázový proces navržen pro spojení LLM s vlastními daty, tím zlepšuje schopnost modelu poskytovat přesnější a informované odpovědi. Proces se skládá z:

  • Indexing Stage: Tato je přípravná fáze, ve které je vytvořen základ pro generování znalostí.
LlamaIndex INDEXES

LlamaIndex Indexing

  • Querying Stage: Zde je znalostní báze prohledávána pro relevantní kontext, který pomáhá LLM při odpovědích na dotazy.
LlamaIndex QUERY STAGE

LlamaIndex Query Stage

Indexing Journey with LlamaIndex:

  • Data Connectors: Data konektory lze považovat za “cestovní pas” vašich dat do LlamaIndex. Pomáhají importovat data z různých zdrojů a formátů, transformují je do jednoduchého “dokumentu”. Data konektory lze nalézt v LlamaHub, open-source repozitáři naplněném datovými loadery. Tyto loadery jsou navrženy pro snadnou integraci, umožňují “plug-and-play” zkušenost s jakoukoli aplikací LlamaIndex.
Llama hub

LlamaIndex hub (https://llamahub.ai/)

  • Dokumenty / Uzly: Dokument je jako univerzální kufr, který může obsahovat různé typy dat – zda je to PDF, výstup API nebo databázové záznamy. Na druhé straně je uzel částí dokumentu, obohacený metadaty a vztahy k jiným uzlům, zajišťující robustní základnu pro přesnou retrievaci dat později.
  • Data Indexy: Po ingestování dat LlamaIndex pomáhá indexovat tato data do formátu, který lze snadno načíst. Na pozadí rozděluje surová data na mezilehlé reprezentace, počítá vektorová vložení a odvozuje metadata. Mezi indexy je “VectorStoreIndex” často nejčastěji používanou volbou.

Typy Indexů v LlamaIndex: Klíč k Organizovaným Datům

LlamaIndex nabízí různé typy indexů, každý pro různé potřeby a použití. V jádru těchto indexů leží “uzly” diskutované výše. Pokusme se pochopit indexy LlamaIndex s jejich mechanikou a aplikacemi.

1. Seznamový Index:

  • Mechanika: Seznamový index řadí uzly sekvenčně jako seznam. Po rozdělení vstupních dat na uzly jsou uspořádány lineárně, připraveny k dotazování buď sekvenčně nebo pomocí klíčových slov nebo vektorových vložení.
  • Výhoda: Tento typ indexu vyniká, když je potřeba sekvenční dotazování. LlamaIndex zajišťuje využití celých vstupních dat, i když přesahují limit tokenů LLM, inteligentním dotazováním textu z každého uzlu a zpřesňováním odpovědí při procházení seznamu.

2. Vector Store Index:

  • Mechanika: Zde se uzly transformují na vektorová vložení, uložená buď lokálně nebo ve specializované vektorové databázi, jako je Milvus. Při dotazování jsou načteny top_k nejpodobnějších uzlů, směrované do syntetizátoru odpovědí.
  • Výhoda: Pokud váš pracovní postup závisí na textové komparaci pro semantickou podobnost pomocí vektorové vyhledávání, lze tento index použít.

3. Stromový Index:

  • Mechanika: V Stromovém Indexu se vstupní data transformují do stromové struktury, postavené odspodu z listových uzlů (originálních datových částí). Rodičovské uzly vznikají jako souhrny listových uzlů, vytvořené pomocí GPT. Při dotazování může stromový index procházet od kořenového uzlu k listovým uzlům nebo konstruovat odpovědi přímo z vybraných listových uzlů.
  • Výhoda: Se Stromovým Indexem se dotazování dlouhých textových částí stává efektivnějším a extrakce informací z různých textových segmentů je zjednodušena.

4. Klíčový Index:

  • Mechanika: Klíčový Index tvoří mapa klíčových slov na uzly. Při dotazování jsou klíčová slova vybrána z dotazu a pouze mapované uzly jsou zobrazeny.
  • Výhoda: Když máte jasný dotaz uživatele, lze použít Klíčový Index. Například procházení zdravotnických dokumentů se stává efektivnějším, pokud se zaměřujete pouze na dokumenty relevantní k COVID-19.

Instalace LlamaIndex

Instalace LlamaIndex je přímý proces. Můžete si vybrat, zda ji nainstalujete přímo z Pip nebo ze zdroje. (Ujistěte se, že máte nainstalovaný Python v systému nebo můžete použít Google Colab)

1. Instalace z Pip:

  • Spusťte následující příkaz:
    pip install llama-index
  • Poznámka: Během instalace může LlamaIndex stáhnout a uložit lokální soubory pro certain balíčky, jako jsou NLTK a HuggingFace. Chcete-li určit adresář pro tyto soubory, použijte proměnnou prostředí “LLAMA_INDEX_CACHE_DIR”.

2. Instalace ze Zdroje:

  • Nejprve naklonujte repozitář LlamaIndex z GitHubu:
    git clone https://github.com/jerryjliu/llama_index.git
  • Po naklonování přejděte do adresáře projektu.
  • Potřebujete Poetry pro správu závislostí balíčků.
  • Nyní vytvořte virtuální prostředí pomocí Poetry:
    poetry shell
  • Nakonec nainstalujte základní požadavky balíčku pomocí:
    poetry install

Nastavení Vašeho Prostředí pro LlamaIndex

1. Nastavení OpenAI:

  • Ve výchozím nastavení LlamaIndex využívá OpenAI gpt-3.5-turbo pro generování textu a text-embedding-ada-002 pro načítání a vložení.
  • Pro použití tohoto nastavení budete potřebovat OPENAI_API_KEY. Získejte ji zaregistrováním na webu OpenAI a vytvořením nového API tokenu.
  • Máte flexibilitu přizpůsobit základní Large Language Model (LLM) podle potřeb vašeho projektu. V závislosti na vašem poskytovateli LLM můžete potřebovat další klíče prostředí a tokeny.

2. Místní Nastavení Prostředí:

  • Pokud dáváte přednost nevyužívání OpenAI, LlamaIndex automaticky přepne na místní modely – LlamaCPP a llama2-chat-13B pro generování textu, a BAAI/bge-small-en pro načítání a vložení.
  • Pro použití LlamaCPP postupujte podle poskytnutého instalačního průvodce. Ujistěte se, že nainstalujete balíček llama-cpp-python, ideálně zkompilovaný pro podporu vašeho GPU. Tento setup bude vyžadovat přibližně 11,5 GB paměti napříč CPU a GPU.
  • Pro místní vložení spusťte pip install sentence-transformers. Tento místní setup bude vyžadovat přibližně 500 MB paměti.

S těmito nastaveními můžete přizpůsobit své prostředí tak, aby využilo buď sílu OpenAI nebo běžel modely lokálně, v souladu s požadavky a zdroji vašeho projektu.

Jednoduchý Případ Užití: Dotazování Webových Stránek s LlamaIndex a OpenAI

Zde je jednoduchý Python skript, který demonstruje, jak můžete dotazovat webovou stránku pro specifické informace:

!pip install llama-index html2text


<p>import os
from llama_index import VectorStoreIndex, SimpleWebPageReader</p>

<p># Zadejte svůj OpenAI klíč níže:
os.environ[&quot;OPENAI_API_KEY&quot;] = &quot;&quot;</p>

<p># URL, kterou chcete načíst do svého vektorového úložiště, zde:
url = &quot;http://www.paulgraham.com/fr.html&quot;</p>

<p># Načtěte URL do dokumentů (lze načíst více dokumentů)
documents = SimpleWebPageReader(html_to_text=True).load_data([url])</p>

<p># Vytvořte vektorové úložiště z dokumentů
index = VectorStoreIndex.from_documents(documents)</p>

<p># Vytvořte dotazovací stroj, abychom mohli klást otázky:
query_engine = index.as_query_engine()</p>

<p># Klaďte tolik otázek, kolik chcete, proti načteným datům:
response = query_engine.query(&quot;Jaká jsou tři nejlepší rady Paula pro získání peněz?&quot;)
print(response)
Tři nejlepší rady Paula pro získání peněz jsou:
1. Začněte s nízkým číslem, když poprvé získáte peníze. To umožňuje flexibilitu a zvyšuje šance na získání více peněz v dlouhodobém horizontu.
2. Snažte se být ziskoví, pokud je to možné. Mít plán, jak dosáhnout ziskovosti bez závislosti na dalších financích, činí startup více atraktivním pro investory.
3. Neoptimalizujte pro valuaci. Valuace je důležitá, ale není to nejdůležitější faktor při získávání peněz. Soustřeďte se na získání potřebných peněz a najděte dobré investory.
Google Colab Llama Index Notebook

Google Colab Llama Index Notebook

S tímto skriptem jste vytvořili mocný nástroj pro extrakci specifických informací z webové stránky jednoduchým položením otázky. To je jen náhled toho, co lze dosáhnout s LlamaIndex a OpenAI při dotazování webových dat.

LlamaIndex vs Langchain: Volba na základě Vašeho Cíle

Vaše volba mezi LlamaIndex a Langchain bude záviset na cíli vašeho projektu. Pokud chcete vyvinout inteligentní vyhledávací nástroj, LlamaIndex je solidní volba, vynikající jako chytrý mechanismus úložiště pro načítání dat. Na druhé straně, pokud chcete vytvořit systém jako ChatGPT s funkcemi pluginů, Langchain je vaší volbou. Nejenže usnadňuje více instancí ChatGPT a LlamaIndex, ale také rozšiřuje funkčnost umožněním konstrukce multi-úkolových agentů. Například s Langchain můžete vytvořit agenty schopné spouštět Python kód a současně provádět Google vyhledávání. Zkrátka, zatímco LlamaIndex vyniká v manipulaci s daty, Langchain orchestruje více nástrojů pro komplexní řešení.

LlamaIndex Logo Artwork created using Midjourney

LlamaIndex Logo Artwork created using Midjourney

Já pět let se ponořím do fascinujícího světa strojového učení a hlubokého učení. Mé vášně a odborné znalosti mě vedly k tomu, abych se podílel na více než 50 různých projektech softwarového inženýrství, se zvláštním zaměřením na AI/ML. Mé pokračující zvědavosti mě také přivedly k přirozenému jazykovému zpracování, oblasti, kterou jsem ochoten prozkoumat dále.