Liity verkostomme!

Tekoäly

LlamaIndex: Laajenna LLM-sovelluksiasi helposti mukautetuilla tiedoilla

mm
Puheluindeksi

Suuria kielimalleja (LLM), kuten OpenAI:n GPT-sarjaa, on koulutettu monenlaisilla julkisesti saatavilla olevilla tiedoilla, ja ne ovat osoittaneet merkittäviä kykyjä tekstin luomisessa, yhteenvetojen tekemisessä, kysymyksiin vastaamisessa ja suunnittelussa. Monipuolisuudestaan ​​huolimatta usein esitetty kysymys liittyy näiden mallien saumattomaan integrointiin mukautettuun, yksityiseen tai suljetun datan kanssa.

Yritykset ja yksityishenkilöt ovat täynnä ainutlaatuisia ja mukautettuja tietoja, jotka usein sijaitsevat eri sovelluksissa, kuten Notionissa, Slackissa ja Salesforcessa, tai ne on tallennettu henkilökohtaisiin tiedostoihin. LLM:ien hyödyntämiseksi näille tiedoille on ehdotettu ja kokeiltu useita menetelmiä.

Hienosäätö edustaa yhtä tällaista lähestymistapaa, ja se koostuu mallin painojen säätämisestä tiettyjen tietojoukkojen tiedon sisällyttämiseksi. Tässä prosessissa on kuitenkin omat haasteensa. Se vaatii huomattavaa vaivaa tiedon valmistelussa ja vaikean optimointimenettelyn, mikä edellyttää tietyn tason koneoppimisosaamista. Lisäksi taloudelliset vaikutukset voivat olla merkittäviä, erityisesti käsiteltäessä suuria tietojoukkoja.

Kontekstin sisäinen oppiminen on noussut esiin vaihtoehtona, jossa etusijalle asetetaan syötteiden ja kehotteiden luominen tarjotakseen LLM:lle tarvittavat kontekstit tarkkojen tulosten luomiseen. Tämä lähestymistapa vähentää laajan mallin uudelleenkoulutuksen tarvetta ja tarjoaa tehokkaamman ja helpomman tavan integroida yksityisiä tietoja.

Mutta tämän haittapuolena on sen riippuvuus käyttäjän taidoista ja asiantuntemuksesta nopea suunnitteluLisäksi kontekstissa tapahtuva oppiminen ei välttämättä ole aina yhtä tarkkaa tai luotettavaa kuin hienosäätö, varsinkin kun käsitellään erittäin erikoistunutta tai teknistä dataa. Mallin esikoulutus laajalla internet-tekstivalikoimalla ei takaa tietyn ammattikielen tai kontekstin ymmärrystä, mikä voi johtaa epätarkkoihin tai epäolennaisiin tuloksiin. Tämä on erityisen ongelmallista, kun yksityinen data on peräisin tietyltä alalta tai toimialalta.

Lisäksi yhdessä kehotteessa tarjottavan kontekstin määrä on rajoitettu, ja LLM:n suorituskyky voi heiketä tehtävän monimutkaisuuden kasvaessa. Haasteena on myös yksityisyys ja tietoturva, koska kehotteessa annetut tiedot voivat olla arkaluonteisia tai luottamuksellisia.

Kun yhteisö tutkii näitä tekniikoita, työkalut, kuten Puheluindeksi saavat nyt huomiota.

Laama-indeksi

Laama-indeksi

Sen aloitti Jerry Liu, entinen Uber-tutkija. Kokeillessaan GPT-3:lla viime syksynä Liu huomasi mallin rajoitukset yksityisten tietojen, kuten henkilökohtaisten tiedostojen, käsittelyssä. Tämä havainto johti avoimen lähdekoodin LlamaIndex-projektin käynnistämiseen.

Aloite on houkutellut sijoittajia turvaamalla $ 8.5 euroa äskettäisellä siemenrahoituskierroksella.

LlamaIndex helpottaa LLM-yritysten lisäämistä mukautetuilla tiedoilla ja kurottaa umpeen esikoulutettujen mallien ja mukautetun datan käyttötapausten välistä kuilua. LlamaIndexin kautta käyttäjät voivat hyödyntää omia tietojaan LLM:ien kanssa, mikä vapauttaa tiedon luomisen ja päättelyn henkilökohtaisten oivallusten avulla.

Käyttäjät voivat tarjota LLM:ille saumattomasti omia tietojaan, mikä edistää ympäristöä, jossa tiedon tuottaminen ja perustelut ovat syvästi henkilökohtaisia ​​ja oivaltavia. LlamaIndex puuttuu kontekstin sisäisen oppimisen rajoituksiin tarjoamalla käyttäjäystävällisemmän ja turvallisemman alustan tietojen vuorovaikutukseen ja varmistaa, että jopa ne, joilla on rajoitettu koneoppimisen asiantuntemus, voivat hyödyntää LLM-yritysten koko potentiaalia yksityisillä tiedoillaan.

Korkean tason käsitteitä ja joitain oivalluksia

1. Retrieval Augmented Generation (RAG):

LlamaIndex RAG

LlamaIndex RAG

RAG on kaksiosainen prosessi, jonka tarkoituksena on yhdistää oikeustieteen mallit (LLM) mukautettuun dataan, mikä parantaa mallin kykyä tuottaa tarkempia ja tietoisempia vastauksia. Prosessi käsittää seuraavat:

  • Indeksointivaihe: Tämä on valmisteluvaihe, jossa luodaan pohja tietopohjan luomiselle.
LlamaIndex INDEKSET

LlamaIndex-indeksointi

  • Kyselyvaihe: Tässä tietokannasta tutkitaan asiaankuuluvaa kontekstia, jotta LLM:itä voidaan auttaa vastaamaan kyselyihin.
LlamaIndex KYSELYVAIHE

LlamaIndex-kyselyvaihe

Indeksointimatka LlamaIndexin avulla:

  • DataliittimetAjattele dataliittimiä datasi passina LlamaIndexiin. Ne auttavat tuomaan dataa eri lähteistä ja muodoista ja kapseloimaan sen yksinkertaiseen "dokumentti"-esitykseen. Dataliittimet löytyvät LlamaHubista, avoimen lähdekoodin tietovarastosta, joka on täynnä datalataajia. Nämä latausohjelmat on suunniteltu helppoa integrointia varten, mikä mahdollistaa plug-and-play-kokemuksen minkä tahansa LlamaIndex-sovelluksen kanssa.
Laaman keskus

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

  • Asiakirjat / solmut: Asiakirja on kuin yleinen matkalaukku, johon mahtuu erilaisia ​​tietotyyppejä – olipa kyseessä PDF, API-tuloste tai tietokantamerkinnät. Toisaalta solmu on katkelma tai "pala" asiakirjasta, joka on rikastettu metatiedoilla ja suhteilla muihin solmuihin, mikä varmistaa vankan perustan tarkalle tiedonhaulle myöhemmin.
  • TietoindeksitTiedon syöttämisen jälkeen LlamaIndex auttaa indeksoimaan tämän tiedon haettavaan muotoon. Kulissien takana se jakaa raakadokumentit välimuotoihin, laskee vektorien upotukset ja päättelee metatiedot. Indekseistä 'VectorStoreIndex' on usein ensisijainen valinta.

LlamaIndexin indeksityypit: Järjestäytyneen tiedon avain

LlamaIndex tarjoaa erityyppisiä indeksejä, joista jokainen on tarkoitettu erilaisiin tarpeisiin ja käyttötapauksiin. Näiden indeksien ytimessä ovat edellä käsitellyt "solmut". Yritetään ymmärtää LlamaIndex-indeksejä, niiden mekaniikkaa ja sovelluksia.

1. Listahakemisto:

  • Mekanismi: Luetteloindeksi kohdistaa solmut peräkkäin kuten luettelo. Kun syöttötiedot on jaettu solmuihin, ne järjestetään lineaarisesti, valmiina kyselyyn joko peräkkäin tai avainsanojen tai upotusten kautta.
  • Advantage: Tämä indeksityyppi loistaa, kun tarvitaan peräkkäistä kyselyä. LlamaIndex varmistaa koko syötetietosi hyödyntämisen, vaikka se ylittäisikin LLM:n token-rajan, etsimällä älykkäästi tekstiä kustakin solmusta ja tarkentamalla vastauksia listaa alaspäin navigoidessaan.

2. Vektorimyymälähakemisto:

  • Mekanismi: Tässä solmut muuntuvat vektori upotuksiksi, jotka on tallennettu joko paikallisesti tai erikoistuneeseen vektoritietokantaan, kuten Milvus. Kysyttäessä se hakee top_k samankaltaisinta solmua ja kanavoi ne vastaussyntetisaattorille.
  • Advantage: Jos työnkulkusi riippuu tekstin vertailusta semanttisen samankaltaisuuden saamiseksi vektorihaun avulla, tätä hakemistoa voidaan käyttää.

3. Puun indeksi:

  • Mekanismi: Puuindeksissä syöttötiedot kehittyvät puurakenteeksi, joka on rakennettu alhaalta ylöspäin lehtien solmuista (alkuperäiset datapalat). Pääsolmut syntyvät lehtisolmujen yhteenvedoksi, jotka on muotoiltu GPT:llä. Kyselyn aikana puuindeksi voi kulkea juurisolmusta lehtisolmuihin tai rakentaa vastauksia suoraan valituista lehtisolmuista.
  • Advantage: Puuhakemiston avulla pitkien tekstipalojen kyselystä tulee tehokkaampaa ja tiedon poimiminen eri tekstisegmenteistä yksinkertaistuu.

4. Avainsanahakemisto:

  • Mekanismi: Avainsanojen kartta solmuihin muodostaa avainsanahakemiston ytimen. Kun avainsanat kysytään, avainsanat poimitaan kyselystä ja vain yhdistetyt solmut tuodaan valokeilaan.
  • Advantage: Kun sinulla on selkeät käyttäjäkyselyt, voit käyttää avainsanahakemistoa. Esimerkiksi terveydenhuollon asiakirjojen seulomisesta tulee tehokkaampaa, kun nollataan vain COVID-19:aan liittyvät asiakirjat.

LlamaIndexin asentaminen

LlamaIndexin asentaminen on suoraviivainen prosessi. Voit asentaa sen joko suoraan Pipistä tai lähteestä. (Varmista, että järjestelmässäsi on asennettuna python tai voit käyttää Google Colabia)

1. Asennus Pipistä:

  • Suorita seuraava komento:
    pip install llama-index
  • Huomautuksia: Asennuksen aikana LlamaIndex voi ladata ja tallentaa paikallisia tiedostoja tietyille paketeille, kuten NLTK ja HuggingFace. Jos haluat määrittää hakemiston näille tiedostoille, käytä ympäristömuuttujaa "LLAMA_INDEX_CACHE_DIR".

2. Asennus lähteestä:

  • Kloonaa ensin LlamaIndex-arkisto GitHubista:
    git clone https://github.com/jerryjliu/llama_index.git
  • Kun olet kloonattu, siirry projektihakemistoon.
  • Tarvitset Poetryn pakettiriippuvuuksien hallintaan.
  • Luo nyt virtuaaliympäristö Poetryn avulla:
    poetry shell
  • Asenna lopuksi paketin ydinvaatimukset:
    poetry install

Ympäristön määrittäminen LlamaIndexille

1. OpenAI-asennus:

  • Oletusarvoisesti LlamaIndex käyttää OpenAI:ta gpt-3.5-turbo tekstin luomiseen ja text-embedding-ada-002 hakua ja upottamista varten.
  • Tämän asetuksen käyttämiseen tarvitset OPENAI_API_KEYHanki sellainen rekisteröitymällä OpenAI:n verkkosivustolle ja luomalla uusi API-tunnus.
  • Voit muokata taustalla olevaa Large Language Model (LLM) -mallia joustavasti projektisi tarpeiden mukaan. LLM-palveluntarjoajasta riippuen saatat 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 – LlamaCPP ja llama2-chat-13B tekstin luomiseen ja BAAI/bge-small-en hakua ja upottamista varten.
  • Käyttää LlamaCPP, noudata toimitettua asennusopasta. Varmista, että asennat llama-cpp-python paketti, joka on ihanteellisesti käännetty tukemaan GPU:ta. Tämä asennus käyttää noin 11.5 Gt muistia prosessorin ja GPU:n välillä.
  • Suorita paikallisille upotuksille pip install sentence-transformers. Tämä paikallinen asennus käyttää noin 500 Mt muistia.

Näillä asetuksilla voit räätälöidä ympäristösi joko hyödyntämään OpenAI:n tehoa tai ajamaan malleja paikallisesti projektisi vaatimusten ja resurssien mukaan.

Yksinkertainen käyttötapa: Verkkosivujen kysely LlamaIndexillä ja OpenAI:lla

Tässä on yksinkertainen Python-skripti, joka havainnollistaa, miten voit hakea verkkosivulta tiettyjä tietoja:

!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 -hakemistomuistikirja

Google Colab Lama -hakemistomuistikirja

Tämän skriptin avulla olet luonut tehokkaan työkalun tiettyjen tietojen poimimiseen verkkosivulta esittämällä kysymyksen. Tämä on vain välähdys siitä, mitä voidaan saavuttaa LlamaIndexillä ja OpenAI:lla, kun haetaan verkkotietoja.

LlamaIndex vs Langchain: Valinta tavoitteesi perusteella

Valitsemasi LlamaIndex ja Langchain riippuu projektisi tavoitteesta. Jos haluat kehittää älykkään hakutyökalun, LlamaIndex on vankka valinta, sillä se toimii erinomaisesti älykkäänä tallennusmekanismina tiedonhaulle. Toisaalta, jos haluat luoda ChatGPT:n kaltaisen järjestelmän, jossa on laajennusominaisuuksia, Langchain on oikea valinta. Se ei ainoastaan ​​mahdollista useiden ChatGPT- ja LlamaIndex-instanssien käyttöä, vaan myös laajentaa toiminnallisuutta mahdollistamalla moniagenttien rakentamisen. Esimerkiksi Langchainin avulla voit luoda agentteja, jotka pystyvät suorittamaan Python-koodia samalla kun ne tekevät Google-haun. Lyhyesti sanottuna, kun taas LlamaIndex on erinomainen tiedonkäsittelyssä, Langchain yhdistää useita työkaluja kokonaisvaltaisen ratkaisun tarjoamiseksi.

Midjourneylla luotu LlamaIndex-logokuva

LlamaIndex-logokuva, joka on luotu käyttämällä Keskimatka

Olen viettänyt viimeiset viisi vuotta uppoutuen koneoppimisen ja syväoppimisen kiehtovaan maailmaan. Intohimoni ja asiantuntemukseni ovat saaneet minut osallistumaan yli 50:een erilaiseen ohjelmistosuunnitteluprojektiin keskittyen erityisesti tekoälyyn/ML:ään. Jatkuva uteliaisuuteni on myös vetänyt minut kohti luonnollisen kielen käsittelyä, alaa, jota olen innokas tutkimaan lisää.