stub LlamaIndex: Udvid dine LLM-applikationer nemt med tilpassede data - Unite.AI
Følg os

Kunstig intelligens

LlamaIndex: Udvid dine LLM-applikationer nemt med tilpassede data

mm
Opdateret on
Lamaindeks

Store sprogmodeller (LLM'er) som OpenAI's GPT-serie er blevet trænet i en bred vifte af offentligt tilgængelige data, som viser bemærkelsesværdige evner inden for tekstgenerering, opsummering, besvarelse af spørgsmål og planlægning. På trods af deres alsidighed drejer et ofte stillet spørgsmål sig om den sømløse integration af disse modeller med brugerdefinerede, private eller proprietære data.

Virksomheder og enkeltpersoner er oversvømmet med unikke og tilpassede data, ofte placeret i forskellige applikationer såsom Notion, Slack og Salesforce, eller gemt i personlige filer. For at udnytte LLM'er til disse specifikke data er flere metoder blevet foreslået og eksperimenteret med.

Finjustering repræsenterer en sådan tilgang, den består i justering af modellens vægte for at inkorporere viden fra bestemte datasæt. Denne proces er dog ikke uden sine udfordringer. Det kræver en betydelig indsats i dataforberedelse, kombineret med en vanskelig optimeringsprocedure, hvilket kræver et vist niveau af maskinlæringsekspertise. Desuden kan de økonomiske konsekvenser være betydelige, især når der er tale om store datasæt.

Indlæring i kontekst er dukket op som et alternativ, der prioriterer udarbejdelsen af ​​input og prompter for at give LLM den nødvendige kontekst til at generere nøjagtige output. Denne tilgang afbøder behovet for omfattende modelomskoling og tilbyder en mere effektiv og tilgængelig måde at integrere private data på.

Men ulempen ved dette er dens afhængighed af brugerens dygtighed og ekspertise hurtig ingeniørarbejde. Derudover er læring i kontekst muligvis ikke altid lige så præcis eller pålidelig som finjustering, især når man har at gøre med højt specialiserede eller tekniske data. Modellens fortræning på en bred vifte af internettekster garanterer ikke en forståelse af specifik jargon eller kontekst, hvilket kan føre til unøjagtige eller irrelevante output. Dette er især problematisk, når de private data er fra et nichedomæne eller en industri.

Desuden er mængden af ​​kontekst, der kan leveres i en enkelt prompt, begrænset, og LLM'ens ydeevne kan forringes, efterhånden som opgavens kompleksitet øges. Der er også udfordringen med privatliv og datasikkerhed, da oplysningerne i prompten potentielt kan være følsomme eller fortrolige.

Mens fællesskabet udforsker disse teknikker, vil værktøjer som f.eks Lamaindeks får nu opmærksomhed.

Lama-indeks

Lama-indeks

Det blev startet af Jerry Liu, en tidligere Uber-forsker. Mens han eksperimenterede rundt med GPT-3 sidste efterår, bemærkede Liu modellens begrænsninger med hensyn til håndtering af private data, såsom personlige filer. Denne observation førte til starten af ​​open source-projektet LlamaIndex.

Initiativet har tiltrukket investorer, sikre $ 8.5 millioner i en nylig seed-finansieringsrunde.

LlamaIndex letter udvidelsen af ​​LLM'er med brugerdefinerede data, og bygger bro mellem forudtrænede modeller og brugertilpassede databrugssager. Gennem LlamaIndex kan brugere udnytte deres egne data med LLM'er, og låse op for videngenerering og ræsonnement med personlig indsigt.

Brugere kan problemfrit forsyne LLM'er med deres egne data, hvilket fremmer et miljø, hvor videngenerering og ræsonnement er dybt personliggjort og indsigtsfuldt. LlamaIndex adresserer begrænsningerne ved in-context learning ved at tilbyde en mere brugervenlig og sikker platform for datainteraktion, hvilket sikrer, at selv dem med begrænset maskinlæringsekspertise kan udnytte det fulde potentiale af LLM'er med deres private data.

Koncepter på højt niveau og nogle indsigter

1. Retrieval Augmented Generation (RAG):

LamaIndex RAG

LamaIndex RAG

RAG er en todelt proces designet til at koble LLM'er med brugerdefinerede data og derved forbedre modellens kapacitet til at levere mere præcise og informerede svar. Processen omfatter:

  • Indekseringsstadiet: Dette er den forberedende fase, hvor grundlaget for skabelse af videnbase er lagt.
LamaIndex INDEKSER

LamaIndex-indeksering

  • Forespørgselsstadie: Her gennemsøges videnbasen for relevant kontekst for at hjælpe LLM'er med at besvare forespørgsler.
LlamaIndex FORESPØRG STADIUM

LamaIndex-forespørgselsstadiet

Indekseringsrejse med LlamaIndex:

  • Edb-stik: Tænk på dataforbindelser som dine datas pas til LlamaIndex. De hjælper med at importere data fra forskellige kilder og formater og indkapsler dem i en forenklet 'Dokument'-repræsentation. Dataforbindelser kan findes i LlamaHub, et open source-lager fyldt med dataindlæsere. Disse læssere er lavet til nem integration, hvilket muliggør en plug-and-play-oplevelse med enhver LlamaIndex-applikation.
Lama-hub

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

  • Dokumenter / Noder: Et dokument er som en generisk kuffert, der kan indeholde forskellige datatyper - det være sig en PDF, API-output eller databaseposter. På den anden side er en node et uddrag eller "chunk" fra et dokument, beriget med metadata og relationer til andre noder, hvilket sikrer et robust grundlag for præcis datahentning senere.
  • Dataindekser: Efter dataindtagelse hjælper LlamaIndex med at indeksere disse data til et genfindbart format. Bag kulisserne dissekerer den rå dokumenter til mellemrepræsentationer, beregner vektorindlejringer og udleder metadata. Blandt indekserne er 'VectorStoreIndex' ofte det bedste valg.

Typer af indekser i LlamaIndex: Nøgle til organiserede data

LlamaIndex tilbyder forskellige typer indeks, hver for forskellige behov og anvendelsestilfælde. Kernen i disse indekser ligger "knudepunkter" som diskuteret ovenfor. Lad os prøve at forstå LlamaIndex-indekser med deres mekanik og applikationer.

1. Liste indeks:

  • Mechanism: Et listeindeks justerer noder sekventielt som en liste. Efter chunking af inputdataene i noder er de arrangeret på en lineær måde, klar til at blive forespurgt enten sekventielt eller via nøgleord eller indlejringer.
  • Advantage: Denne indekstype lyser, når behovet er for sekventiel forespørgsel. LlamaIndex sikrer udnyttelse af alle dine inputdata, selvom de overskrider LLM's token-grænse, ved smart at forespørge tekst fra hver node og forfine svarene, mens den navigerer ned ad listen.

2. Vector butiksindeks:

  • Mechanism: Her transformeres noder til vektorindlejringer, gemt enten lokalt eller i en specialiseret vektordatabase som f.eks Milvus. Når der forespørges, henter den top_k mest lignende noder, kanaliserer dem til responssynthesizeren.
  • Advantage: Hvis din arbejdsgang afhænger af tekstsammenligning for semantisk lighed via vektorsøgning, kan dette indeks bruges.

3. Træindeks:

  • Mechanism: I et træindeks udvikler inputdataene sig til en træstruktur, bygget nedefra og op fra bladknuder (de originale datastykker). Overordnede noder dukker op som opsummeringer af bladknuder, lavet ved hjælp af GPT. Under en forespørgsel kan træindekset krydse fra rodknudepunktet til bladknudepunkter eller konstruere svar direkte fra udvalgte bladknuder.
  • Advantage: Med et træindeks bliver det mere effektivt at forespørge efter lange tekststykker, og udtrækning af information fra forskellige tekstsegmenter er forenklet.

4. Søgeordsindeks:

  • Mechanism: Et kort over nøgleord til noder danner kernen i et søgeordsindeks. Ved forespørgsel plukkes nøgleord fra forespørgslen, og kun de tilknyttede noder bringes i søgelyset.
  • Advantage: Når du har en klar brugerforespørgsel, kan et søgeordsindeks bruges. For eksempel bliver det mere effektivt at gennemsøge sundhedsdokumenter, når man kun nulstiller på dokumenter, der er relevante for COVID-19.

Installation af LlamaIndex

Installation af LlamaIndex er en ligetil proces. Du kan vælge at installere det enten direkte fra Pip eller fra kilden. (Sørg for at have python installeret på dit system, eller du kan bruge Google Colab)

1. Installation fra Pip:

  • Udfør følgende kommando:
    pip install llama-index
  • Bemærk: Under installationen kan LlamaIndex downloade og gemme lokale filer til visse pakker som NLTK og HuggingFace. Brug miljøvariablen "LLAMA_INDEX_CACHE_DIR" for at angive en mappe for disse filer.

2. Installation fra kilde:

  • Først skal du klone LlamaIndex-depotet fra GitHub:
    git clone https://github.com/jerryjliu/llama_index.git
  • Når du er klonet, skal du navigere til projektbiblioteket.
  • Du skal bruge Poetry til at administrere pakkeafhængigheder.
  • Opret nu et virtuelt miljø ved hjælp af Poetry:
    poetry shell
  • Til sidst skal du installere kernepakkekravene med:
    poetry install

Opsætning af dit miljø til LlamaIndex

1. OpenAI opsætning:

  • Som standard bruger LlamaIndex OpenAI'er gpt-3.5-turbo til tekstgenerering og text-embedding-ada-002 til genfinding og indlejringer.
  • For at bruge denne opsætning skal du have en OPENAI_API_KEY. Få en ved at registrere dig på OpenAIs hjemmeside og oprette et nyt API-token.
  • Du har fleksibiliteten til at tilpasse den underliggende Large Language Model (LLM) efter dit projektbehov. Afhængigt af din LLM-udbyder har du muligvis brug for yderligere miljønøgler og tokens.

2. Opsætning af lokalmiljø:

  • Hvis du foretrækker ikke at bruge OpenAI, skifter LlamaIndex automatisk til lokale modeller – LlamaCPP , llama2-chat-13B til tekstgenerering, og BAAI/bge-small-en til genfinding og indlejringer.
  • At bruge LlamaCPP, følg den medfølgende installationsvejledning. Sørg for at installere llama-cpp-python pakke, ideelt kompileret til at understøtte din GPU. Denne opsætning vil bruge omkring 11.5 GB hukommelse på tværs af CPU'en og GPU'en.
  • For lokale indlejringer, udfør pip install sentence-transformers. Denne lokale opsætning vil bruge omkring 500 MB hukommelse.

Med disse opsætninger kan du skræddersy dit miljø til enten at udnytte kraften i OpenAI eller køre modeller lokalt, tilpasset dine projektkrav og ressourcer.

En simpel Usecase: Forespørgsel på websider med LlamaIndex og OpenAI

Her er et simpelt Python-script til at demonstrere, hvordan du kan forespørge på en webside for at få specifik indsigt:

!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 Lama Index notesbog

Google Colab Lama Index notesbog

Med dette script har du skabt et kraftfuldt værktøj til at udtrække specifik information fra en webside ved blot at stille et spørgsmål. Dette er blot et glimt af, hvad der kan opnås med LlamaIndex og OpenAI, når der forespørges på webdata.

LlamaIndex vs Langchain: Valg baseret på dit mål

Dit valg mellem LlamaIndex og Langkæde vil afhænge af dit projekts mål. Hvis du ønsker at udvikle et intelligent søgeværktøj, er LlamaIndex et solidt valg, der udmærker sig som en smart lagringsmekanisme til datahentning. På bagsiden, hvis du vil oprette et system som ChatGPT med plugin-funktioner, er Langchain din go-to. Det letter ikke kun flere forekomster af ChatGPT og LlamaIndex, men udvider også funktionaliteten ved at tillade konstruktion af multi-task agenter. For eksempel kan du med Langchain oprette agenter, der er i stand til at udføre Python-kode, mens du udfører en Google-søgning samtidigt. Kort sagt, mens LlamaIndex udmærker sig ved datahåndtering, orkestrerer Langchain flere værktøjer til at levere en holistisk løsning.

LlamaIndex Logo Artwork oprettet ved hjælp af Midjourney

LamaIndex Logo Artwork oprettet ved hjælp af midt på rejsen

Jeg har brugt de sidste fem år på at fordybe mig i den fascinerende verden af ​​Machine Learning og Deep Learning. Min passion og ekspertise har ført mig til at bidrage til over 50 forskellige software engineering projekter, med særligt fokus på AI/ML. Min vedvarende nysgerrighed har også trukket mig hen imod Natural Language Processing, et felt jeg er ivrig efter at udforske yderligere.