Spojte se s námi

Umělá inteligence

LlamaIndex: Snadno rozšiřte své aplikace LLM o vlastní data

mm
CallIndex

Modely velkých jazyků (LLM), jako je série GPT od OpenAI, byly trénovány na široké škále veřejně dostupných dat a prokázaly pozoruhodné schopnosti v oblasti generování textu, sumarizace, odpovídání na otázky a plánování. Navzdory jejich všestrannosti se často klade otázka točí kolem bezproblémové integrace těchto modelů s vlastními, soukromými nebo proprietárními daty.

Firmy a jednotlivci jsou zaplaveni jedinečnými a vlastními daty, často uloženými v různých aplikacích, jako je Notion, Slack a Salesforce, nebo uloženými v osobních souborech. Pro využití LLM pro tato specifická data bylo navrženo a experimentováno několik metodologií.

Doladění představuje jeden takový přístup, spočívá v úpravě vah modelu tak, aby zahrnovaly znalosti z konkrétních datových sad. Tento proces však není bez problémů. Vyžaduje značné úsilí při přípravě dat, spolu se složitým optimalizačním postupem, což vyžaduje určitou úroveň odborných znalostí v oblasti strojového učení. Finanční důsledky mohou být navíc značné, zejména při práci s velkými datovými sadami.

Jako alternativa se objevilo kontextové učení, které upřednostňuje vytváření vstupů a podnětů, které LLM poskytují nezbytný kontext pro generování přesných výstupů. Tento přístup zmírňuje potřebu rozsáhlého přeškolování modelů a nabízí efektivnější a dostupnější prostředky pro integraci soukromých dat.

Nevýhodou je však spoléhání se na dovednosti a odbornost uživatele rychlé inženýrstvíUčení v kontextu navíc nemusí být vždy tak přesné nebo spolehlivé jako jemné ladění, zejména při práci s vysoce specializovanými nebo technickými daty. Předběžné trénování modelu na široké škále internetového textu nezaručuje pochopení specifického žargonu nebo kontextu, což může vést k nepřesným nebo irelevantním výstupům. To je obzvláště problematické, pokud soukromá data pocházejí z úzké oblasti nebo odvětví.

Navíc množství kontextu, které lze poskytnout v jedné výzvě, je omezené a výkon LLM se může zhoršovat, jak se zvyšuje složitost úlohy. Výzvou je také ochrana soukromí a zabezpečení dat, protože informace poskytnuté ve výzvě mohou být citlivé nebo důvěrné.

Jak komunita zkoumá tyto techniky, nástroje jako CallIndex nyní získávají pozornost.

Index lamy

Index lamy

Začalo to tím Jerry Liu, bývalý vědecký pracovník Uberu. Během experimentování s GPT-3 loni na podzim si Liu všiml omezení modelu týkajících se zpracování soukromých dat, jako jsou osobní soubory. Toto pozorování vedlo k zahájení open-source projektu LlamaIndex.

Iniciativa přilákala investory, zajištění 8.5 milionu $ v nedávném kole počátečního financování.

LlamaIndex usnadňuje rozšiřování LLM pomocí vlastních dat, čímž překlenuje propast mezi předem vyškolenými modely a případy použití vlastních dat. Prostřednictvím LlamaIndex mohou uživatelé využít svá vlastní data pomocí LLM, odemknout generování znalostí a uvažování s personalizovanými poznatky.

Uživatelé mohou bez problémů poskytovat LLM svá vlastní data, čímž podporují prostředí, kde je vytváření znalostí a uvažování hluboce personalizované a srozumitelné. LlamaIndex řeší omezení kontextového učení tím, že poskytuje uživatelsky přívětivější a bezpečnější platformu pro interakci s daty, která zajišťuje, že i ti s omezenými znalostmi strojového učení mohou využít plný potenciál LLM se svými soukromými daty.

Koncepty na vysoké úrovni a některé postřehy

1. Retrieval Augmented Generation (RAG):

LlamaIndex RAG

LlamaIndex RAG

RAG je dvojí proces, jehož cílem je propojit LLM s vlastními daty, a tím zvýšit schopnost modelu poskytovat přesnější a informovanější odpovědi. Proces zahrnuje:

  • Fáze indexování: Toto je přípravná fáze, kde jsou položeny základy pro vytvoření znalostní báze.
LlamaIndex INDEXY

Indexování LlamaIndex

  • Fáze dotazování: Zde je znalostní báze prohledána pro relevantní kontext, aby pomohla LLM odpovídat na dotazy.
FÁZE DOTAZU LlamaIndex

Fáze dotazu LlamaIndex

Indexování Journey s LlamaIndex:

  • Datové konektoryPředstavte si datové konektory jako datový pas pro LlamaIndex. Pomáhají s importem dat z různých zdrojů a formátů a zapouzdřují je do zjednodušené reprezentace „dokumentu“. Datové konektory lze nalézt v LlamaHub, open-source repozitáři plném datových zavaděčů. Tyto zavaděče jsou navrženy pro snadnou integraci a umožňují plug-and-play zážitek s jakoukoli aplikací LlamaIndex.
Lama centrum

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

  • Dokumenty / Uzly: Dokument je jako obecný kufr, který pojme různé typy dat – ať už jde o PDF, výstup API nebo záznamy v databázi. Na druhou stranu uzel je úryvek nebo „kus“ z dokumentu, obohacený o metadata a vztahy k jiným uzlům, což zajišťuje robustní základ pro pozdější přesné vyhledávání dat.
  • Datové indexyPo načtení dat LlamaIndex pomáhá s indexováním těchto dat do vyhledávacího formátu. V zákulisí rozkládá nezpracované dokumenty na mezilehlé reprezentace, počítá vnoření vektorů a odvodí metadata. Mezi indexy je častou volbou „VectorStoreIndex“.

Typy indexů v LlamaIndex: Klíč k organizovaným datům

LlamaIndex nabízí různé typy indexů, každý pro jiné potřeby a případy použití. Jádrem těchto indexů jsou „uzly“, jak bylo popsáno výše. Zkusme porozumět indexům LlamaIndex, jejich mechanismům a aplikacím.

1. Seznam indexů:

  • Mechanismus: Index seznamu zarovná uzly postupně jako seznam. Po rozdělení vstupních dat do uzlů jsou tyto uspořádány lineárním způsobem a připraveny k dotazování buď sekvenčně, nebo pomocí klíčových slov nebo vložení.
  • Výhoda: Tento typ indexu svítí, když je potřeba sekvenční dotazování. LlamaIndex zajišťuje využití všech vašich vstupních dat, i když překračuje limit tokenů LLM, inteligentním dotazováním na text z každého uzlu a zpřesňováním odpovědí při procházení seznamu.

2. Vektorový index obchodu:

  • Mechanismus: Zde se uzly transformují na vektorová vložení, uložená buď lokálně, nebo ve specializované vektorové databázi jako Milvus. Při dotazu načte top_k nejpodobnějších uzlů a nasměruje je do syntezátoru odpovědí.
  • Výhoda: Pokud váš pracovní postup závisí na sémantické podobnosti textu pomocí vektorového vyhledávání, lze použít tento index.

3. Index stromu:

  • Mechanismus: Ve stromovém indexu se vstupní data vyvinou do stromové struktury sestavené zdola nahoru z listových uzlů (původních datových bloků). Nadřazené uzly se objevují jako souhrny listových uzlů vytvořených pomocí GPT. Během dotazu může index stromu procházet z kořenového uzlu do koncových uzlů nebo vytvářet odpovědi přímo z vybraných koncových uzlů.
  • Výhoda: Se stromovým indexem je dotazování na dlouhé části textu efektivnější a extrahování informací z různých textových segmentů je zjednodušeno.

4. Rejstřík klíčových slov:

  • Mechanismus: Mapa klíčových slov k uzlům tvoří jádro indexu klíčových slov. Při dotazu jsou klíčová slova vybrána z dotazu a do centra pozornosti se dostanou pouze mapované uzly.
  • Výhoda: Když máte jasné uživatelské dotazy, lze použít index klíčových slov. Například prosévání zdravotních dokumentů se stává efektivnější, když nulujete pouze dokumenty týkající se COVID-19.

Instalace LlamaIndex

Instalace LlamaIndex je jednoduchý proces. Můžete si vybrat instalaci buď přímo z Pipu, nebo ze zdroje. (Ujistěte se, že máte v systému nainstalovaný python, nebo můžete použít Google Colab)

1. Instalace z Pip:

  • Proveďte následující příkaz:
    pip install llama-index
  • Hodnocení: Během instalace může LlamaIndex stahovat a ukládat místní soubory pro určité balíčky, jako je NLTK a HuggingFace. Chcete-li zadat adresář pro tyto soubory, použijte proměnnou prostředí „LLAMA_INDEX_CACHE_DIR“.

2. Instalace ze zdroje:

  • Nejprve naklonujte úložiště LlamaIndex z GitHubu:
    git clone https://github.com/jerryjliu/llama_index.git
  • Po naklonování přejděte do adresáře projektu.
  • Pro správu závislostí balíčků budete potřebovat Poetry.
  • Nyní vytvořte virtuální prostředí pomocí Poetry:
    poetry shell
  • Nakonec nainstalujte požadavky na základní balíček 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 vyhledávání a vkládání.
  • Abyste mohli toto nastavení použít, budete potřebovat OPENAI_API_KEYZískejte ho registrací na webových stránkách OpenAI a vytvořením nového API tokenu.
  • Máte možnost přizpůsobit si základní model velkého jazyka (LLM) podle potřeb vašeho projektu. V závislosti na poskytovateli LLM budete možná potřebovat další klíče a tokeny prostředí.

2. Nastavení místního prostředí:

  • Pokud nechcete používat OpenAI, LlamaIndex se automaticky přepne na místní modely – LlamaCPP si llama2-chat-13B pro generování textu a BAAI/bge-small-en pro vyhledávání a vkládání.
  • Chcete-li použít LlamaCPP, postupujte podle dodaného instalačního průvodce. Zajistěte instalaci llama-cpp-python balíček, ideálně zkompilovaný pro podporu vašeho GPU. Toto nastavení bude využívat přibližně 11.5 GB paměti napříč CPU a GPU.
  • Pro místní vložení proveďte pip install sentence-transformers. Toto místní nastavení bude používat asi 500 MB paměti.

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

Jednoduchý případ použití: Dotazování na webové stránky pomocí LlamaIndex a OpenAI

Zde je jednoduchý skript v Pythonu, který demonstruje, jak můžete dotazovat webovou stránku a získat konkrétní informace:

!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

Pomocí tohoto skriptu jste vytvořili výkonný nástroj pro extrahování konkrétních informací z webové stránky pouhým položením otázky. Toto je jen letmý pohled na to, čeho lze dosáhnout pomocí LlamaIndex a OpenAI při dotazování na webová data.

LlamaIndex vs Langchain: Výběr 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í volbou, která vyniká jako chytrý mechanismus ukládání pro vyhledávání dat. Na druhou stranu, pokud chcete vytvořit systém jako ChatGPT s pluginy, Langchain je pro vás tou správnou volbou. Nejenže usnadňuje více instancí ChatGPT a LlamaIndex, ale také rozšiřuje funkčnost tím, že umožňuje konstrukci multifunkčních agentů. Například s Langchainem můžete vytvářet agenty schopné spouštět kód Pythonu a zároveň provádět vyhledávání na Googlu. Stručně řečeno, zatímco LlamaIndex vyniká ve zpracování dat, Langchain kombinuje více nástrojů a poskytuje tak komplexní řešení.

LlamaIndex Logo Artwork vytvořený pomocí Midjourney

LlamaIndex Logo Artwork vytvořený pomocí Střední cesta

Posledních pět let jsem strávil ponořením se do fascinujícího světa strojového učení a hlubokého učení. Moje vášeň 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. Moje neustálá zvědavost mě také přivedla ke zpracování přirozeného jazyka, což je obor, který bych rád dále prozkoumal.