AI-modellen en platforms
LlamaIndex: Verhoog uw LLM-toepassingen met aangepaste gegevens gemakkelijk
Grote taalmodellen (LLM’s) zoals OpenAI’s GPT-serie zijn getraind op een diverse reeks openbaar toegankelijke gegevens en hebben opmerkelijke capaciteiten getoond in tekstgeneratie, samenvatting, vraagbeantwoording en planning. Ondanks hun veelzijdigheid wordt er vaak een vraag gesteld over de naadloze integratie van deze modellen met aangepaste, privé- of eigendomsgegevens.
Bedrijven en individuen worden overspoeld met unieke en aangepaste gegevens, die vaak zijn ondergebracht in verschillende toepassingen zoals Notion, Slack en Salesforce (CRM ), of zijn opgeslagen in persoonlijke bestanden. Om LLM’s te gebruiken voor deze specifieke gegevens, zijn verschillende methoden voorgesteld en geëxperimenteerd.
Fine-tuning is een van deze benaderingen, het bestaat uit het aanpassen van de gewichten van het model om kennis van specifieke datasets op te nemen. Echter, dit proces is niet zonder uitdagingen. Het vereist aanzienlijke inspanning in datapreparatie, gecombineerd met een moeilijke optimalisatieprocedure, waardoor een bepaald niveau van machine learning-expertise nodig is. Bovendien kunnen de financiële gevolgen aanzienlijk zijn, vooral bij het omgaan met grote datasets.
In-context learning is opgekomen als een alternatief, waarbij de focus ligt op het creëren van invoer en prompts om de LLM te voorzien van de nodige context voor het genereren van nauwkeurige uitvoer. Deze benadering vermindert de noodzaak voor uitgebreide modelhertraining, waardoor een meer efficiënte en toegankelijke manier ontstaat om privégegevens te integreren.
Maar het nadeel hiervan is de afhankelijkheid van de vaardigheid en expertise van de gebruiker in prompt engineering. Bovendien kan in-context learning niet altijd zo nauwkeurig of betrouwbaar zijn als fine-tuning, vooral bij het omgaan met zeer gespecialiseerde of technische gegevens. De pre-training van het model op een breed scala aan internettekst garandeert niet noodzakelijkerwijs een begrip van specifieke jargon of context, wat kan leiden tot onnauwkeurige of irrelevante uitvoer. Dit is vooral problematisch wanneer de privégegevens afkomstig zijn uit een niche-domein of -industrie.
Daarnaast is de hoeveelheid context die kan worden verstrekt in een enkele prompt beperkt, en de prestaties van de LLM kunnen afnemen naarmate de complexiteit van de taak toeneemt. Er is ook de uitdaging van privacy en gegevensbeveiliging, aangezien de informatie die in de prompt wordt verstrekt, potentieel gevoelig of vertrouwelijk kan zijn.
Terwijl de gemeenschap deze technieken verkent, krijgen tools zoals LlamaIndex nu aandacht.
Het is gestart door Jerry Liu, een voormalig Uber-onderzoeker. Terwijl hij experimenteerde met GPT-3 vorig najaar, merkte Liu de beperkingen van het model op bij het omgaan met privégegevens, zoals persoonlijke bestanden. Deze observatie leidde tot het starten van het open-sourceproject LlamaIndex.
Het initiatief heeft investeerders aangetrokken en heeft $8,5 miljoen opgehaald in een recente seed-financieringsronde.
LlamaIndex vergemakkelijkt het uitbreiden van LLM’s met aangepaste gegevens, waardoor de kloof tussen vooraf getrainde modellen en aangepaste gegevensgebruikscases wordt overbrugd. Met LlamaIndex kunnen gebruikers hun eigen gegevens gebruiken met LLM’s, waardoor kennisgeneratie en redenering met persoonlijke inzichten mogelijk worden.
Gebruikers kunnen LLM’s naadloos hun eigen gegevens verstrekken, waardoor een omgeving ontstaat waarin kennisgeneratie en redenering diep persoonlijk en inzichtelijk zijn. LlamaIndex adresseert de beperkingen van in-context learning door een meer gebruikersvriendelijke en beveiligde platform voor gegevensinteractie te bieden, waardoor zelfs gebruikers met beperkte machine learning-expertise de volle potentie van LLM’s met hun privégegevens kunnen benutten.
Hoofdconcepten en enkele inzichten
1. Retrieval Augmented Generation (RAG):
RAG is een tweeledig proces ontworpen om LLM’s te koppelen aan aangepaste gegevens, waardoor de capaciteit van het model om nauwkeurige en geïnformeerde antwoorden te geven, wordt verbeterd. Het proces bestaat uit:
- Indexeringsfase: Dit is de voorbereidingsfase waarin de basis voor kennisbasiscreatie wordt gelegd.
- Queryfase: Hier wordt de kennisbasis doorzocht naar relevante context om LLM’s te helpen bij het beantwoorden van vragen.
Indexeerreis met LlamaIndex:
- Gegevensconnectors: Denk aan gegevensconnectors als het paspoort van uw gegevens naar LlamaIndex. Ze helpen bij het importeren van gegevens uit verschillende bronnen en formaten, en verpakken ze in een eenvoudige ‘Document’-weergave. Gegevensconnectors kunnen worden gevonden in LlamaHub, een open-source repository met gegevensloaders. Deze loaders zijn ontworpen voor eenvoudige integratie, waardoor een plug-and-play-ervaring met elke LlamaIndex-toepassing mogelijk wordt.
- Documenten / Knopen: Een Document is als een universele koffer die verschillende gegevenstypen kan bevatten – of het nu een PDF, API-uitvoer of database-entries zijn. Aan de andere kant is een Knop een stukje of “chunk” van een Document, verrijkt met metadata en relaties met andere knopen, waardoor een solide basis voor nauwkeurige gegevensopname later mogelijk wordt.
- Gegevensindexen: Na gegevensinname helpt LlamaIndex bij het indexeren van deze gegevens in een opvraagbare formaat. Achter de schermen ontleedt het ruwe documenten in tussenliggende representaties, berekent vector-embeddings en leidt metadata af. Onder de indexen is ‘VectorStoreIndex’ vaak de voorkeur.
Soorten indexen in LlamaIndex: Sleutel tot georganiseerde gegevens
LlamaIndex biedt verschillende soorten index, elk voor verschillende behoeften en gebruikscases. Aan de basis van deze indices liggen “knopen” zoals eerder besproken. Laten we proberen om LlamaIndex-indices te begrijpen met hun mechanismen en toepassingen.
1. Lijstindex:
- Mechanisme: Een Lijstindex ordent knopen sequentieel als een lijst. Na het opsplitsen van de invoergegevens in knopen, worden ze in een lineaire volgorde gerangschikt, klaar om te worden opgevraagd, hetzij sequentieel of via trefwoorden of embeddings.
- Voordelen: Dit type index blinkt uit wanneer er een behoefte is aan sequentiële opvraging. LlamaIndex zorgt ervoor dat uw hele invoergegevens worden gebruikt, zelfs als deze de tokenlimiet van de LLM overschrijden, door slim tekst uit elk knooppunt op te vragen en antwoorden te verfijnen terwijl het door de lijst navigeert.
2. Vector Store Index:
- Mechanisme: Hier worden knopen getransformeerd in vector-embeddings, die lokaal of in een gespecialiseerde vector-database zoals Milvus worden opgeslagen. Wanneer opgevraagd, haalt het de top_k meest vergelijkbare knopen op en leidt deze naar de respons-synthesizer.
- Voordelen: Als uw workflow afhankelijk is van tekstvergelijking voor semantische gelijkenis via vector-zoekopdracht, kan deze index worden gebruikt.
3. Boomindex:
- Mechanisme: In een Boomindex evolueert de invoergegevens in een boomstructuur, opgebouwd van onder naar boven vanaf bladknopen (de oorspronkelijke gegevenschunks). Ouder knopen ontstaan als samenvattingen van bladknopen, gemaakt met GPT. Tijdens een opvraag kan de boomindex van de rootknoop naar bladknopen navigeren of antwoorden rechtstreeks uit geselecteerde bladknopen construeren.
- Voordelen: Met een Boomindex wordt het opvragen van lange tekstchunks efficiënter, en het extraheren van informatie uit verschillende tekstsegmenten wordt vereenvoudigd.
4. Trefwoordindex:
- Mechanisme: Een kaart van trefwoorden naar knopen vormt de kern van een Trefwoordindex. Wanneer opgevraagd, worden trefwoorden uit de opvraag gehaald, en alleen de toegewezen knopen worden in de spotlight gezet.
- Voordelen: Wanneer u duidelijke gebruikersopvragen heeft, kan een Trefwoordindex worden gebruikt. Bijvoorbeeld, doorzoeken van gezondheidsdocumenten wordt efficiënter wanneer u alleen documenten gericht op COVID-19 inzoomt.
Installeren van LlamaIndex
Het installeren van LlamaIndex is een eenvoudig proces. U kunt ervoor kiezen om het rechtstreeks vanuit Pip te installeren of vanuit de bron. (Zorg ervoor dat u Python geïnstalleerd heeft in uw systeem of u kunt Google Colab gebruiken)
1. Installatie vanuit Pip:
- Voer de volgende opdracht uit:
pip install llama-index
- Opmerking: Tijdens de installatie kan LlamaIndex lokale bestanden downloaden en opslaan voor bepaalde pakketten zoals NLTK en HuggingFace. Om een directory voor deze bestanden op te geven, gebruikt u de omgevingsvariabele “LLAMA_INDEX_CACHE_DIR”.
2. Installatie vanuit de bron:
- Clone eerst het LlamaIndex-repository van GitHub:
git clone https://github.com/jerryjliu/llama_index.git
- Als het is gekloond, navigeert u naar het projectdirectory.
- U heeft Poetry nodig voor het beheren van pakketafhankelijkheden.
- Maak nu een virtuele omgeving met Poetry:
poetry shell - Tenslotte installeert u de core-pakketvereisten met:
poetry install
Uw omgeving instellen voor LlamaIndex
1. OpenAI-instelling:
- Standaard gebruikt LlamaIndex OpenAI’s
gpt-3.5-turbovoor tekstgeneratie entext-embedding-ada-002voor opvraging en embeddings. - Om deze instelling te gebruiken, moet u een
OPENAI_API_KEYhebben. Krijg er een door u aan te melden op de website van OpenAI en een nieuwe API-sleutel te maken. - U heeft de flexibiliteit om de onderliggende Large Language Model (LLM) aan te passen aan uw projectbehoeften. Afhankelijk van uw LLM-aanbieder, moet u mogelijk extra omgevingssleutels en tokens hebben.
2. Lokale omgevingsinstelling:
- Als u OpenAI niet wilt gebruiken, schakelt LlamaIndex automatisch over naar lokale modellen –
LlamaCPPenllama2-chat-13Bvoor tekstgeneratie, enBAAI/bge-small-envoor opvraging en embeddings. - Om
LlamaCPPte gebruiken, volgt u de installatiehandleiding. Zorg ervoor dat u hetllama-cpp-python-pakket installeert, ideaal samengesteld om GPU-ondersteuning te bieden. Deze instelling zal ongeveer 11,5 GB aan geheugen gebruiken over CPU en GPU. - Voor lokale embeddings, voer
pip install sentence-transformersuit. Deze lokale instelling zal ongeveer 500 MB aan geheugen gebruiken.
Met deze instellingen kunt u uw omgeving aanpassen om hetzij de kracht van OpenAI te benutten of modellen lokaal uit te voeren, afhankelijk van uw projectbehoeften en middelen.
Een eenvoudig gebruikscase: Opvragen van webpagina’s met LlamaIndex en OpenAI
Hier is een eenvoudig Python-script om te demonstreren hoe u een webpagina kunt opvragen voor specifieke inzichten:
!pip install llama-index html2text
<p>import os from llama_index import VectorStoreIndex, SimpleWebPageReader</p> <p># Voer uw OpenAI-sleutel in hieronder: os.environ["OPENAI_API_KEY"] = ""</p> <p># URL die u wilt laden in uw vector-opslag hier: url = "http://www.paulgraham.com/fr.html"</p> <p># Laad de URL in documenten (meerdere documenten mogelijk) documents = SimpleWebPageReader(html_to_text=True).load_data([url])</p> <p># Maak een vector-opslag vanuit documenten index = VectorStoreIndex.from_documents(documents)</p> <p># Maak een query-engine zodat u vragen kunt stellen: query_engine = index.as_query_engine()</p> <p># Stel zoveel vragen als u wilt tegen de geladen gegevens: response = query_engine.query("Wat zijn de 3 beste adviezen van Paul om geld op te halen?") print(response)
De drie beste adviezen van Paul om geld op te halen zijn: 1. Begin met een laag aantal wanneer u voor het eerst geld ophaalt. Dit biedt flexibiliteit en verhoogt de kans om meer fondsen te verzamelen op lange termijn. 2. Streef naar winstgevendheid waar mogelijk. Het hebben van een plan om winstgevend te worden zonder afhankelijk te zijn van extra financiering, maakt het startup-attractiever voor investeerders. 3. Optimaliseer niet voor waardering. Hoewel waardering belangrijk is, is het niet het meest cruciale aspect bij het ophalen van fondsen. Richt u op het verkrijgen van de benodigde fondsen en het vinden van goede investeerders.
Met dit script hebt u een krachtig hulpmiddel gemaakt om specifieke informatie uit een webpagina te extraheren door eenvoudigweg een vraag te stellen. Dit is slechts een glimp van wat kan worden bereikt met LlamaIndex en OpenAI bij het opvragen van webgegevens.
LlamaIndex vs Langchain: Kiezen op basis van uw doel
Uw keuze tussen LlamaIndex en Langchain zal afhangen van het doel van uw project. Als u een slimme zoektool wilt ontwikkelen, is LlamaIndex een solide keuze, uitblinkend als een slimme opslagmechanisme voor gegevensopvraging. Aan de andere kant, als u een systeem zoals ChatGPT met plugin-mogelijkheden wilt maken, is Langchain uw keuze. Het faciliteert niet alleen meerdere instanties van ChatGPT en LlamaIndex, maar breidt ook de functionaliteit uit door de constructie van multi-task agents mogelijk te maken. Bijvoorbeeld, met Langchain kunt u agents maken die Python-code kunnen uitvoeren terwijl ze gelijktijdig een Google-zoekopdracht uitvoeren. Kortom, terwijl LlamaIndex uitblinkt in gegevensbeheer, orkestreert Langchain meerdere tools om een holistische oplossing te bieden.

LlamaIndex Logo Artwork created using Midjourney


















