AI-modeller og plattformer
LlamaIndex: Utvid dine LLM-applikasjoner med tilpassede data enkelt
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.
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):
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.
- Spøringsstadiet: Her blir kunnskapsbasen gjennomsøkt for relevante kontekster for å hjelpe LLM-ene med å svare på spørsmål.
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.
- 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-turbofor tekst-generering ogtext-embedding-ada-002for 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 –
LlamaCPPogllama2-chat-13Bfor tekst-generering, ogBAAI/bge-small-enfor henting og embeddings. - For å bruke
LlamaCPP, følg den tilgjengelige installasjonsveiledningen. Sikre deg at du installererllama-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.
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.


















