Tekoäly
LlamaIndex: Laajenna LLM-sovelluksesi omalla datalla helposti

Suurten kielen mallien (LLM) kaltaiset OpenAI:n GPT-sarjan mallit on koulutettu monipuolisesti julkaistuista tiedoista, osoittaen merkittäviä kykyjä tekstin luomisessa, yhteenvetossa, kysymyksiin vastaamisessa ja suunnittelussa. Vaikka niillä on monia kykyjä, usein esitetty kysymys liittyy näiden mallien helppoon integrointiin mukautettuihin, yksityisiin tai omistajiin liittyviin tietoihin.
Yritykset ja yksityishenkilöt ovat tulvassa ainutlaatuisia ja mukautettuja tietoja, usein sijoitettuna erilaisiin sovelluksiin, kuten Notion, Slack ja Salesforce, tai tallennettuna henkilökohtaisiin tiedostoihin. Käyttääkseen LLM:itä näiden tietojen kanssa, on ehdotettu ja kokeiltu useita menetelmiä.
Fine-tuning edustaa yhtä tällaista lähestymistapaa, jossa mallin painoarvoja muokataan sisällyttämällä tietoa tietystä tietokannasta. Tämä prosessi ei kuitenkaan ole ilman haasteitaan. Se vaatii merkittävää työtä tiedon valmistelussa, yhdistettynä haasteelliseen optimointimenettelyyn, joka edellyttää tietyn tason koneoppimisen asiantuntemusta. Lisäksi taloudelliset vaikutukset voivat olla merkittäviä, erityisesti suurten tietokantojen käsittelyssä.
Kontekstin oppiminen on noussut vaihtoehtoiseksi. Se priorisoi syötteen ja ohjelmistojen muokkaamista antaakseen LLM:ille tarvittavan kontekstin tarkkojen tulosten tuottamiseksi. Tämä lähestymistapa vähentää laajan mallin uudelleenkoulutuksen tarvetta, tarjoamalla tehokkaamman ja helpomman tavan integroida yksityisiä tietoja.
Sen sijaan, tämän menetelmän heikkous on sen riippuvuus käyttäjän taidosta ja asiantuntemuksesta ohjelmistojen suunnittelussa. Lisäksi kontekstin oppiminen ei aina ole yhtä tarkkaa tai luotettavaa kuin fine-tuning, erityisesti silloin, kun on kyse erittäin erikoistuneista tai teknisistä tiedoista. Mallin esikoulutus laajasta internet-tekstistä ei takaa ymmärrystä tietyistä jargoneista tai konteksteista, mikä voi johtaa epätarkoihin tai asiattomiin tuloksiin. Tämä on erityisen ongelmallista, kun yksityiset tiedot ovat niukasta alasta tai teollisuudesta.
Lisäksi, kontekstin määrä, joka voidaan antaa yhdessä syötteessä, on rajoitettu, ja LLM:n suorituskyky voi heiketä, kun tehtävän monimutkaisuus lisääntyy. On myös haasteita yksityisyyden ja tietoturvan suhteen, koska syötteessä annettava tieto voi olla arkaluontoista tai luottamuksellista.
Kun yhteisö tutkii näitä tekniikoita, työkalut kuten LlamaIndex saavat lisää huomiota.
Sen perusti Jerry Liu, entinen Uberin tutkija. Kokeillessaan GPT-3:aa edellisenä syksynä, Liu huomasi mallin rajoitukset yksityisten tietojen, kuten henkilökohtaisten tiedostojen, käsittelyssä. Tämä havainto johti avoimen lähdekoodin projekti LlamaIndexin aloittamiseen.
Projekti on houkutellut sijoittajia ja kerännyt 8,5 miljoonan dollarin rahoituksen viimeisimmässä siemensijoituskaudessa.
LlamaIndex mahdollistaa LLM-mallien laajentamisen mukautetuilla tiedoilla, siltaamalla kuilun valmiiden mallien ja mukautettujen tietokäyttötapauksien välillä. LlamaIndexin avulla käyttäjät voivat hyödyntää omia tietojaan LLM-mallien kanssa, lukitsemalla tietojen luomisen ja päättelyn henkilökohtaisilla näkemyksillä. Käyttäjät voivat tarjota LLM-malleille omat tiedot sujuvasti, luojaan ympäristön, jossa tietojen luominen ja päättely ovat syvälti henkilökohtaisia ja tarkoituksenmukaisia. LlamaIndex vastaa kontekstin oppimisen rajoituksia tarjoamalla käyttäjäystävällisemmän ja turvallisemman alustan tietojen vuorovaikutukseen, varmistamalla, että myös rajoitetulla koneoppimisen asiantuntemuksella varustetut voivat hyödyntää LLM-mallien täydellistä potentiaalia yksityisten tietojensa kanssa.
Yleiset käsitteet ja joitakin oivalluksia
1. Hakijan avustettu generointi (RAG):
RAG on kaksivaiheinen prosessi, joka yhdistää LLM-mallit mukautettuihin tietoihin, parantaen mallin kykyä tuottaa tarkempia ja perusteltuja vastauksia. Prosessi koostuu:
- Indeksointivaihe: Tämä on valmisteluvaihe, jossa tiedon perustan luominen aloitetaan.
- Kyselyvaihe: Tässä vaiheessa tietopohja etsitään relevantteja konteksteja avustamaan LLM-malleja kysymyksiin vastaamisessa.
LlamaIndexin indeksointimatka:
- Tietoliittymät: Tietoliittymät ovat datan “passi” LlamaIndexiin. Ne auttavat tuomassa tietoja eri lähteistä ja muotoista ja pakkaavat ne yksinkertaiseen “dokumentti”-esitysmuotoon. Tietoliittymät löytyvät LlamaHubista, joka on avoimen lähdekoodin repositorio, joka sisältää tietoladattajia. Nämä ladattajat on suunniteltu helppokäyttöisiksi ja mahdollistavat “plug-and-play”-kokemuksen minkä tahansa LlamaIndex-sovelluksen kanssa.
- Dokumentit/Solmut: Dokumentti on kuin yleinen matkalaukku, joka voi sisältää erilaisia tietotyyppejä – voivat olla PDF-tiedostot, API-tulokset tai tietokantatiedot. Toisaalta, solmu on palanen tai “pala” dokumentista, joka on rikastettu metadataa ja suhteita muihin solmuihin, varmistamalla vankkan perustan tarkalle tiedonhaun vuoksi myöhemmin.
- Tietoindeksejä: Tiedon imuroinnin jälkeen LlamaIndex auttaa indeksoimassa tietoja haettavassa muodossa. Taustalla se hajottaa raakadokumentit välimuotoon, laskee vektoriupotukset ja johtaa metatiedot. Indekseistä “VectorStoreIndex” on usein valittu vaihtoehto.
LlamaIndexin indeksityypit: Avain järjestettyihin tietoihin
LlamaIndex tarjoaa erilaisia indeksityyppejä, kullekin omiin tarpeisiin ja käyttötarkoituksiin. Näiden indeksien ytimessä ovat “solmut”, kuten aiemmin mainittiin. Yritetään ymmärtää LlamaIndexin indeksejä niiden mekaniikkaa ja soveltamista.
1. Luettelo-indeksi:
- Mekanismi: Luettelo-indeksi järjestää solmut peräkkäin luettelona. Dokumenttien paloittamisen jälkeen ne järjestetään lineaarisesti, valmiina kyselyyn joko peräkkäin tai avainsanojen tai upotusten kautta.
- Etuoikeus: Tämä indeksityyppi loistaa, kun on tarve peräkkäiseen kyselyyn. LlamaIndex varmistaa, että kaikki syötetiedot käytetään, vaikka ne ylittävät LLM:n token-rajan, älykkäästi kysymällä tekstiä kustakin solmusta ja tarkentamalla vastauksia siirtymisen aikana luettelon läpi.
2. VEKTORISÄILYMÄINDEKSI:
- Mekanismi: Tässä solmut muuttuvat vektoriupotuksiksi, jotka tallennetaan joko paikallisesti tai erityisessä vektoritietokannassa, kuten Milvus. Kun kysely tehdään, se hakee top_k samankaltaisia solmuja ja ohjaa ne vastausyhteenvedon syntetisoijalle.
- Etuoikeus: Jos työsi riippuu tekstin vertailusta semanttisen samankaltaisuuden kautta vektorigaistuksella, tämä indeksi voidaan käyttää.
3. Puu-indeksi:
- Mekanismi: Puu-indeksissä syötetiedot kehittyvät puurakenteeksi, joka rakennetaan alhaalta ylöspäin lehtisolmuista (alkuperäisistä tietopaloista). Ylempien solmujen vanhemmat solmut syntyvät lehtisolmujen yhteenvetoista, jotka on luotu GPT:llä. Kyselyssä puu-indeksi voi kulkea juurisolmusta lehtisolmuihin tai rakentaa vastauksia valituista lehtisolmuista.
- Etuoikeus: Puu-indeksin avulla pitkien tekstipalojen kysely tulee tehokkaammaksi, ja tietojen poistaminen eri tekstijaksoista yksinkertaistuu.
4. Avainsana-indeksi:
- Mekanismi: Avainsana-indeksin ydin on avainsanojen kartta solmuun. Kun kysely tehdään, avainsanat poimitaan kyselystä, ja vain kartatut solmut tuodaan esiin.
- Etuoikeus: Kun on selkeä käyttäjän kysely, avainsana-indeksi voidaan käyttää. Esimerkiksi terveydenhuollon asiakirjojen läpikäynti tulee tehokkaammaksi, kun keskitytään vain asiakirjoihin, jotka liittyvät COVID-19:ään.
LlamaIndexin asentaminen
LlamaIndexin asentaminen on suoraviivainen prosessi. Voit valita asentamisen suoraan Pipistä tai lähdekoodista. (Varmista, että sinulla on Python asennettuna järjestelmääsi tai voit käyttää Google Colabia)
1. Asentaminen Pipistä:
- Suorita seuraava komento:
pip install llama-index
- Huomautus: Asennuksen aikana LlamaIndex voi ladata ja tallentaa paikallisia tiedostoja tiettyjen pakettien, kuten NLTK ja HuggingFace, osalta. Määrittääksesi hakemiston näille tiedostoille, käytä “LLAMA_INDEX_CACHE_DIR” -ympäristömuuttujaa.
2. Asentaminen lähdekoodista:
- Ensisijaisesti, kloonaa LlamaIndexin repositorio GitHubista:
git clone https://github.com/jerryjliu/llama_index.git
- Kun klooni on tehty, siirry projektiin.
- Tarvitset Poetry-paketti-riippuvuuksien hallintaan.
- Luo virtuaalinen ympäristö Poetrylla:
poetry shell - Lopuksi, asenna ydinpakettivaatimukset Poetrylla:
poetry install
Ympäristön määrittäminen LlamaIndexille
1. OpenAI-asetukset:
- Oletuksena LlamaIndex käyttää OpenAI:n
gpt-3.5-turbo-tekstin luomiseen jatext-embedding-ada-002-hakua ja upotuksia varten. - Käyttääksesi tämän asetusten, sinun tarvitsee
OPENAI_API_KEY. Hae se rekisteröitymällä OpenAI:n verkkosivuille ja luomalla uuden API-avaimen. - Sinulla on joustavuus mukauttaa perustuvaa suurta kielen mallia projektiisi sopivaksi. Riippuen LLM-toimittajasta, sinun saattaa tarvita lisää ympäristöavaimia ja tunnuksia.
2. Paikallisen ympäristön asetukset:
- Jos et halua käyttää OpenAI:ta, LlamaIndex vaihtaa automaattisesti paikallisiin malleihin –
LlamaCPPjallama2-chat-13Btekstin luomiseen, jaBAAI/bge-small-enhakua ja upotuksia varten. LlamaCPP:n asentamiseen, seuraa annettua asennusoppasta. Varmista, että asennatllama-cpp-python-paketin, joka on käännetyksi tukemaan GPU:ta. Tämä asetus vaatii noin 11,5 GB muistia CPU:lla ja GPU:lla.- Paikallisten upotuksien asentamiseen, suorita
pip install sentence-transformers. Tämä paikallinen asetus käyttää noin 500 MB muistia.
Näiden asetusten avulla voit mukauttaa ympäristöäsi joko hyödyntämään OpenAI:n voimaa tai ajamaan malleja paikallisesti, sopeuttaen projektiisi ja resursseihisi.
Yksinkertainen käyttötapa: Kysely verkkosivuilla LlamaIndexillä ja OpenAI:lla
Tässä on yksinkertainen Python-koodi, joka osoittaa, miten voit kysyä verkkosivuilta tiettyjä oivalluksia:
!pip install llama-index html2text
<p>import os
from llama_index import VectorStoreIndex, SimpleWebPageReader</p>
<p># Anna OpenAI-avain alla:
os.environ["OPENAI_API_KEY"] = ""</p>
<p># URL, jonka haluat ladata vektorigaistiin:
url = "http://www.paulgraham.com/fr.html"</p>
<p># Lataa URL dokumentteihin (useita dokumentteja mahdollista)
documents = SimpleWebPageReader(html_to_text=True).load_data([url])</p>
<p># Luo vektorigaisti dokumenteista
index = VectorStoreIndex.from_documents(documents)</p>
<p># Luo kyselymoottori, jotta voimme kysyä kysymyksiä:
query_engine = index.as_query_engine()</p>
<p># Kysy niin monta kysymystä kuin haluat ladataan tietojen perusteella:
response = query_engine.query("Mitkä ovat Paulin kolme parasta neuvontaa rahoituksen keräämiseksi?")
print(response)
Paulin kolme parasta neuvontaa rahoituksen keräämiseksi ovat: 1. Aloita alhaisella luvulla, kun keräät rahoitusta ensimmäistä kertaa. Tämä antaa joustavuutta ja lisää mahdollisuuksia kerätä enemmän varoja pitkällä aikavälillä. 2. Pyri voittoon, jos mahdollista. Olla suunnitelma, jolla voidaan saavuttaa voitto ilman lisärahoitusta, tekee startupin houkuttelevammaksi sijoittajille. 3. Älä optimoi arvoa. Vaikka arvo on tärkeä, se ei ole tärkein tekijä rahoituksen keräämisessä. Keskity keräämään tarvittavat varat ja löytämään hyvät sijoittajat sen sijaan.
Tällä koodilla olet luonut voimakkaan työkalun, jolla voit hakea tiettyjä oivalluksia verkkosivuilta yksinkertaisesti kysymällä. Tämä on vain yksi esimerkki siitä, mitä voidaan saavuttaa LlamaIndexillä ja OpenAI:lla, kun haetaan verkkotietoja.
LlamaIndex vs Langchain: Valinta perustuu tavoitteisiisi
Valintasi LlamaIndexin ja Langchainin välillä riippuu projektiisi. Jos haluat kehittää älykkään hakutyökalun, LlamaIndex on vahva valinta, erinomaisena tietojen tallennusmekanismina tietojen hakua varten. Toisaalta, jos haluat luoda järjestelmän, kuten ChatGPT, jonka laajennusmahdollisuudet, Langchain on valintasi. Se ei ainoastaan mahdollista useita ChatGPT- ja LlamaIndex-ekземпляреja, vaan myös laajentaa toiminnallisuutta salliessaan monitehtävisten agenttien rakentamisen. Esimerkiksi Langchainilla voit luoda agenteja, jotka voivat suorittaa Python-koodia samalla, kun suorittavat Google-haun. Lyhyesti sanottuna, kun LlamaIndex erinomaisesti hallitsee tietoja, Langchain orkesteroi useita työkaluja tarjoamaan kokonaisvaltaisen ratkaisun.

LlamaIndex Logo Artwork created using Midjourney


















