AI-modeller og plattformer

LlamaIndex: Utvid dine LLM-applikasjoner med tilpassede data enkelt

mm
Legg til Unite.AI blant dine foretrukne kilder pÃĨ Google

Store sprÃĨkmodeller (LLM) som OpenAIs GPT-serie er trent pÃĨ en mangfoldig rekke offentlig tilgjengelige data, og har vist bemerkelsesverdige evner i tekstgenerering, sammenfatting, spÃļrsmÃĨlssvar og planlegging. Til tross for deres fleksibilitet, er det ofte stilte spÃļrsmÃĨl om hvordan man kan integrere disse modellene med tilpassede, private eller proprietÃĶre data pÃĨ en effektiv mÃĨte.

Bedrifter og enkeltpersoner er oversvÃļmmet av unike og tilpassede data, ofte lagret i ulike applikasjoner som Notion, Slack og Salesforce (CRM ), eller lagret i personlige filer. For ÃĨ utnytte LLM-er for disse spesifikke dataene, er det blitt foreslÃĨtt og eksperimentert med flere metoder.

Fine-tuning er en slik tilnÃĶrming, som bestÃĨr i ÃĨ justere modellens vekter for ÃĨ inkorporere kunnskap fra bestemte datasamlinger. Imidlertid er denne prosessen ikke uten utfordringer. Den krever betydelig innsats i dataforberedning, kombinert med en vanskelig optimeringsprosess, som krever en viss grad av maskinlÃĶringskompetanse. I tillegg kan de finansielle implikasjonene vÃĶre betydelige, sÃĶrlig nÃĨr man har ÃĨ gjÃļre med store datasamlinger.

In-context learning har oppstÃĨtt som et alternativ, som prioriterer utforming av innledninger og promter for ÃĨ gi LLM-en den nÃļdvendige konteksten for ÃĨ generere nÃļyaktige utdata. Denne tilnÃĶrmingen eliminerer behovet for omfattende modell-omtrening, og tilbyr en mer effektiv og tilgjengelig mÃĨte ÃĨ integrere private data pÃĨ.

Men ulempen med denne tilnÃĶrmingen er dens avhengighet av brukerens ferdigheter og ekspertise i prompt-utforming. I tillegg kan in-context learning ikke alltid vÃĶre like nÃļyaktig eller pÃĨlitelig som fine-tuning, sÃĶrlig nÃĨr man har ÃĨ gjÃļre med hÃļyt spesialiserte eller tekniske data. Modellens pre-trening pÃĨ en bred rekke internett-tekst garanterer ikke forstÃĨelse av spesifikke jargon eller kontekst, noe som kan fÃļre til uaktuelle eller irrelevante utdata. Dette er sÃĶrlig problematisk nÃĨr de private dataene kommer fra en nisje-domene eller industri.

I tillegg er mengden kontekst som kan tilbys i en enkelt prompt begrenset, og LLM-ens ytelse kan forverres nÃĨr kompleksiteten i oppgaven Ãļker. Det er ogsÃĨ utfordringer knyttet til personvern og datasikkerhet, ettersom informasjonen som tilbys i prompten kan vÃĶre sensitiv eller konfidensiell.

Mens samfunnet utforsker disse teknikkene, er verktÃļy som LlamaIndex nÃĨ i fokus.

Llama Index

Llama Index

Det ble startet av Jerry Liu, en tidligere Uber-forsker. Mens han eksperimenterte med GPT-3 forrige hÃļst, la Liu merke til modellens begrensninger nÃĨr det gjaldt ÃĨ hÃĨndtere private data, som personlige filer. Denne observasjonen ledet til starten av det ÃĨpne prosjektet LlamaIndex.

Initiativet har tiltrekt investorer, og har sikret $8,5 millioner i en nylig seed-runde.

LlamaIndex muliggjÃļr utvidelse av LLM-er med tilpassede data, og broer gapet mellom forhÃĨndstrede modeller og tilpassede data-anvendelser. Med LlamaIndex kan brukerne utnytte sine egne data med LLM-er, og lÃĨse opp kunnskapsgenerering og resonnering med personlige innblikk.

Brukerne kan enkelt tilby LLM-ene sine egne data, og skape en miljÃļ hvor kunnskapsgenerering og resonnering er dypt personlige og innblikksgivende. LlamaIndex adresserer begrensningene i in-context learning ved ÃĨ tilby en mer brukervennlig og sikker plattform for datainteraksjon, og sikrer at selv de med begrensede maskinlÃĶringsferdigheter kan utnytte fullt potensialet i LLM-er med sine private data.

HÃļyere konsepter og noen innblikk

1. Henting og generering (RAG):

LlamaIndex RAG

LlamaIndex RAG

RAG er en todelt prosess som er designet for ÃĨ koble LLM-er med tilpassede data, og forbedre modellens evne til ÃĨ levere mer nÃļyaktige og informerte svar. Prosessen bestÃĨr av:

  • Indekseringsstadiet: Dette er forberedelsesfasen hvor grunnarbeidet for kunnskapsbasen blir lagt.
LlamaIndex INDEXES

LlamaIndex Indexing

  • SpÃļringsstadiet: Her blir kunnskapsbasen gjennomsÃļkt for relevante kontekster for ÃĨ hjelpe LLM-ene med ÃĨ svare pÃĨ spÃļrsmÃĨl.
LlamaIndex QUERY STAGE

LlamaIndex Query Stage

Indekseringsreisen med LlamaIndex:

  • Datakoblede: Datakoblede er som en pass for dine data til LlamaIndex. De hjelper med ÃĨ importere data fra ulike kilder og formater, og pakker dem inn i en enkel “Dokument”-representasjon. Datakoblede kan finnes i LlamaHub, et ÃĨpent repository fylt med data-lastere. Disse lasterne er designet for enkelt integrering, og gir en plug-and-play-erfaring med alle LlamaIndex-applikasjoner.
Llama hub

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

  • Dokumenter/Noder: Et Dokument er som en generisk koffert som kan holde ulike datatyper – enten det er en PDF, API-utdata eller database-innhold. PÃĨ den andre siden er en Node en snippet eller “chunk” fra et Dokument, beriket med metadata og relasjoner til andre noder, og sikrer en solid grunnlag for presis datahenting senere.
  • Data-indekser: Etter datainnsamling hjelper LlamaIndex med ÃĨ indekse disse dataene i en hentbar format. Bak kulissene dissekerer det rÃĨdokumenter til mellomliggende representasjoner, beregner vektor-embeddings og deduserer metadata. Blant indeksene er “VectorStoreIndex” ofte det foretrukne valget.

Typer av indekser i LlamaIndex: NÃļkkel til organisert data

LlamaIndex tilbyr ulike typer indekser, hver for ulike behov og anvendelser. I kjernen av disse indeksene ligger “noder” som diskutert ovenfor. La oss prÃļve ÃĨ forstÃĨ LlamaIndex-indekser med deres mekanismer og anvendelser.

1. Liste-indeks:

  • Mekanisme: En Liste-indeks stiller noder sekvensielt som en liste. Etter ÃĨ ha chunket inn-data til noder, stiller de seg i en lineÃĶr rekkefÃļlge, klar til ÃĨ bli spurt enten sekvensielt eller via nÃļkler eller embeddings.
  • Fordel: Denne indekstypen skinner nÃĨr det er behov for sekvensiell spÃļrring. LlamaIndex sikrer at hele inn-databasen blir utnyttet, selv om den overstiger LLM-ens token-grense, ved ÃĨ smarte spÃļr tekst fra hver node og finjustere svarene mens den navigerer nedover listen.

2. Vector Store-indeks:

  • Mekanisme: Her transformerer noder til vektor-embeddings, lagret enten lokalt eller i en spesialisert vektor-database som Milvus. NÃĨr det spÃļrres, henter det de topp_k mest liknende noder, og kanaliserer dem til svarsyntesen.
  • Fordel: Hvis arbeidsflyten din avhenger av tekst-sammenligning for semantisk likhet via vektor-sÃļk, kan denne indeksen brukes.

3. Tre-indeks:

  • Mekanisme: I en Tre-indeks utvikler inn-data til en tre-struktur, bygget opp fra blad-noder (de opprinnelige data-chunkene). Forelder-noder oppstÃĨr som summeringer av blad-noder, laget med GPT. Under en spÃļrring kan tre-indeksen traversere fra rotnoden til blad-noder eller konstruere svar direkte fra valgte blad-noder.
  • Fordel: Med en Tre-indeks blir spÃļrring av lange tekst-chunker mer effektiv, og uttrekk av informasjon fra ulike tekst-segmenter forenkles.

4. NÃļkkel-indeks:

  • Mekanisme: En NÃļkkel-indeks bestÃĨr av en kart over nÃļkler til noder. NÃĨr det spÃļrres, plukkes nÃļklene fra spÃļrringen, og bare de kartede nodene bringes inn i fokus.
  • Fordel: NÃĨr du har klare bruker-spÃļrsmÃĨl, kan en NÃļkkel-indeks brukes. For eksempel blir sÃļking i helse-dokumenter mer effektiv nÃĨr du bare fokuserer pÃĨ dokumenter relevante for COVID-19.

Installer LlamaIndex

Installer LlamaIndex er en enkel prosess. Du kan velge ÃĨ installere det enten direkte fra Pip eller fra kildekoden. (Sikre deg at du har Python installert pÃĨ systemet ditt eller at du kan bruke Google Colab)

1. Installer fra Pip:

  • KjÃļr fÃļlgende kommando:
    pip install llama-index
  • Merk: Under installering kan LlamaIndex laste ned og lagre lokale filer for bestemte pakker som NLTK og HuggingFace. For ÃĨ spesifisere en mappe for disse filene, bruk miljÃļvariabelen “LLAMA_INDEX_CACHE_DIR”.

2. Installer fra kildekoden:

  • FÃļrst, klon LlamaIndex-repositoriet fra GitHub:
    git clone https://github.com/jerryjliu/llama_index.git
  • NÃĨr det er klonet, naviger til prosjektmappen.
  • Du trenger Poetry for ÃĨ hÃĨndtere pakke-avhengigheter.
  • NÃĨ, opprett en virtuell miljÃļ med Poetry:
    poetry shell
  • Til slutt, installer kjerne-pakke-krav med:
    poetry install

Konfigurer din miljÃļ for LlamaIndex

1. OpenAI-konfigurasjon:

  • Som standard bruker LlamaIndex OpenAIs gpt-3.5-turbo for tekst-generering og text-embedding-ada-002 for henting og embeddings.
  • For ÃĨ bruke denne konfigurasjonen, mÃĨ du ha en OPENAI_API_KEY. FÃĨ en ved ÃĨ registrere deg pÃĨ OpenAIs nettsted og opprette en ny API-nÃļkkel.
  • Du har mulighet til ÃĨ tilpasse den underliggende store sprÃĨkmodellen (LLM) etter dine prosjekts behov. Avhengig av din LLM-leverandÃļr, kan du trenge ekstra miljÃļ-nÃļkler og token.

2. Lokal miljÃļ-konfigurasjon:

  • Hvis du foretrekker ikke ÃĨ bruke OpenAI, bytter LlamaIndex automatisk til lokale modeller – LlamaCPP og llama2-chat-13B for tekst-generering, og BAAI/bge-small-en for henting og embeddings.
  • For ÃĨ bruke LlamaCPP, fÃļlg den tilgjengelige installasjonsveiledningen. Sikre deg at du installerer llama-cpp-python-pakken, ideal sett sammen med stÃļtte for din GPU. Denne konfigurasjonen vil bruke omtrent 11,5 GB minne over CPU og GPU.
  • For lokale embeddings, kjÃļr pip install sentence-transformers. Denne lokale konfigurasjonen vil bruke omtrent 500 MB minne.

Med disse konfigurasjonene kan du tilpasse din miljÃļ til ÃĨ enten utnytte OpenAIs kraft eller kjÃļre modeller lokalt, i samsvar med dine prosjekts krav og ressurser.

En enkel brukstilfelle: SpÃļr web-sider med LlamaIndex og OpenAI

Her er et enkelt Python-skript for ÃĨ demonstrere hvordan du kan spÃļrre en web-side for bestemte innblikk:

!pip install llama-index html2text


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

<p># Skriv inn din OpenAI-nÃļkkel under:
os.environ["OPENAI_API_KEY"] = ""</p>

<p># URL du Ãļnsker ÃĨ laste inn i din vektor-lagre her:
url = "http://www.paulgraham.com/fr.html"</p>

<p># Last inn URL-en til dokumenter (flere dokumenter mulig)
dokumenter = SimpleWebPageReader(html_to_text=True).load_data([url])</p>

<p># Opprett vektor-lagre fra dokumenter
indeks = VectorStoreIndex.from_documents(dokumenter)</p>

<p># Opprett spÃļrings-motor sÃĨ du kan stille spÃļrsmÃĨl:
spÃļrings_motor = indeks.as_query_engine()</p>

<p># Stille sÃĨ mange spÃļrsmÃĨl du Ãļnsker mot de lastede dataene:
svar = spÃļrings_motor.query("Hva er de tre beste rÃĨdene fra Paul for ÃĨ samle inn penger?")
print(svar)
De tre beste rÃĨdene fra Paul for ÃĨ samle inn penger er:
1. Start med et lavt tall nÃĨr du fÃļrst samler inn penger. Dette gir fleksibilitet og Ãļker sjansen for ÃĨ samle inn mer penger pÃĨ lengre sikt.
2. Sikre deg at du er lÃļnnsom hvis mulig. Å ha en plan for ÃĨ nÃĨ lÃļnnsomhet uten ÃĨ avhenge av ytterligere finansiering gjÃļr bedriften mer attraktiv for investorer.
3. Ikke optimÃĐr for verdi. Selv om verdi er viktig, er det ikke det viktigste i finansiering. Fokus pÃĨ ÃĨ fÃĨ de nÃļdvendige midler og finne gode investorer i stedet.
Google Colab Llama Index Notebook

Google Colab Llama Index Notebook

Med dette skriptet har du skapt et kraftig verktÃļy for ÃĨ trekke ut bestemte informasjon fra en web-side ved ÃĨ stille et spÃļrsmÃĨl. Dette er bare et glimt av hva som kan oppnÃĨs med LlamaIndex og OpenAI nÃĨr du spÃļr web-data.

LlamaIndex vs Langchain: Velg basert pÃĨ ditt mÃĨl

Ditt valg mellom LlamaIndex og Langchain vil avhenge av ditt prosjekts mÃĨl. Hvis du Ãļnsker ÃĨ utvikle et intelligent sÃļk-verktÃļy, er LlamaIndex et solid valg, og utmerker seg som en smart lagrings-mekanisme for data-henting. PÃĨ den andre siden, hvis du Ãļnsker ÃĨ skape et system som ChatGPT med plugin-kapasiteter, er Langchain ditt valg. Det ikke bare muliggjÃļr flere instanser av ChatGPT og LlamaIndex, men utvider ogsÃĨ funksjonaliteten ved ÃĨ tillate konstruksjon av multi-oppgave-agenter. For eksempel, med Langchain, kan du skape agenter som kan kjÃļre Python-kode samtidig som de utfÃļrer en Google-sÃļk. Kort sagt, mens LlamaIndex utmerker seg i data-hÃĨndtering, orkestrerer Langchain flere verktÃļy for ÃĨ levere en helhetlig lÃļsning.

Jeg har brukt de siste fem ÃĨrene pÃĨ ÃĨ dykke ned i den fasiniserende verden av MaskinlÃĶring og Dypt LÃĶring. Min lidenskap og ekspertise har ledet meg til ÃĨ bidra til over 50 ulike programvareprosjekter, med sÃĶrlig fokus pÃĨ AI/ML. Min pÃĨgÃĨende nysgjÃļrhet har ogsÃĨ trukket meg mot Naturlig SprÃĨkbehandling, et felt jeg er ivrig etter ÃĨ utforske videre.