Modele și platforme AI

LlamaIndex: Îmbunătățiți aplicațiile dvs. LLM cu date personalizate ușor

mm
Adaugă Unite.AI la sursele tale preferate pe Google

Modelele de limbaj mare (LLM) precum seria GPT de la OpenAI au fost antrenate pe o varietate de date accesibile public, demonstrând capacități remarcabile în generarea de text, rezumare, răspuns la întrebări și planificare. În ciuda versatilității lor, o întrebare frecventă se învârte în jurul integrării fără probleme a acestor modele cu date personalizate, private sau de proprietate.

Întreprinderile și persoanele fizice sunt inundate cu date unice și personalizate, adesea stocate în diverse aplicații precum Notion, Slack și Salesforce (CRM ), sau păstrate în fișiere personale. Pentru a valorifica LLM-urile pentru aceste date specifice, au fost propuse și experimentate diverse metodologii.

Reglarea fină reprezintă o astfel de abordare, care constă în ajustarea greutăților modelului pentru a încorpora cunoștințe din anumite seturi de date. Cu toate acestea, acest proces nu este lipsit de provocări. Cer efort substanțial în pregătirea datelor, împerecheat cu o procedură de optimizare dificilă, care necesită un anumit nivel de expertiză în învățarea automată. Mai mult, implicațiile financiare pot fi semnificative, în special atunci când se lucrează cu seturi de date mari.

Învățarea în context a apărut ca o alternativă, prioritară pentru crearea de intrări și prompturi care să furnizeze LLM-ului contextul necesar pentru a genera ieșiri precise. Această abordare reduce nevoia de reantrenare extinsă a modelului, oferind o cale mai eficientă și accesibilă de integrare a datelor private.

Dar dezavantajul acestei abordări este dependența sa de abilitățile și expertiza utilizatorului în proiectarea prompturilor. În plus, învățarea în context poate să nu fie întotdeauna la fel de precisă sau de fiabilă ca reglarea fină, mai ales atunci când se lucrează cu date foarte specializate sau tehnice. Antrenamentul prealabil al modelului pe o gamă largă de texte de pe internet nu garantează o înțelegere a jargonului specific sau a contextului, ceea ce poate duce la ieșiri inexacte sau irelevante. Acest lucru este deosebit de problematic atunci când datele private provin dintr-un domeniu de nișă sau industrie.

Mai mult, cantitatea de context care poate fi furnizată într-un singur prompt este limitată, iar performanța LLM-ului poate scădea pe măsură ce crește complexitatea sarcinii. Există, de asemenea, provocarea confidențialității și a securității datelor, deoarece informațiile furnizate în prompt pot fi potențial sensibile sau confidențiale.

Pe măsură ce comunitatea explorează aceste tehnici, unelte precum LlamaIndex atrag atenția.

Llama Index

Llama Index

A fost inițiat de Jerry Liu, un fost om de știință la Uber. În timp ce experimenta cu GPT-3 în toamna trecută, Liu a observat limitările modelului în ceea ce privește manipularea datelor private, cum ar fi fișierele personale. Această observație a condus la începerea proiectului open-source LlamaIndex.

Inițiativa a atras investitori, obținând $8,5 milioane într-o rundă recentă de finanțare inițială.

LlamaIndex facilitează îmbunătățirea LLM-urilor cu date personalizate, podind golul dintre modelele preantrenate și cazurile de utilizare a datelor personalizate. Prin LlamaIndex, utilizatorii pot valorifica propriile date cu LLM-urile, deblocând generarea de cunoștințe și raționamentul cu insight-uri personalizate.

Utilizatorii pot furniza LLM-urilor propriile date în mod fluent, creând un mediu în care generarea de cunoștințe și raționamentul sunt profund personalizate și informative. LlamaIndex abordează limitările învățării în context, oferind o platformă mai prietenoasă și mai sigură pentru interacțiunea cu datele, asigurând că chiar și cei cu expertiză limitată în învățarea automată pot valorifica pe deplin potențialul LLM-urilor cu datele lor private.

Concepte de nivel înalt și câteva insight-uri

1. Generare augmentată de recuperare (RAG):

LlamaIndex RAG

LlamaIndex RAG

RAG este un proces în două etape conceput pentru a cupla LLM-urile cu date personalizate, îmbunătățind astfel capacitatea modelului de a oferi răspunsuri mai precise și mai informate. Procesul constă în:

  • Etapa de indexare: Aceasta este faza pregătitoare în care se pun bazele creării unei baze de cunoștințe.
LlamaIndex INDEXES

LlamaIndex Indexing

  • Etapa de interogare: Aici, baza de cunoștințe este căutată pentru a găsi contextul relevant care să ajute LLM-urile să răspundă la întrebări.
LlamaIndex QUERY STAGE

LlamaIndex Query Stage

Călătoria de indexare cu LlamaIndex:

  • Conectoare de date: Conectoarele de date pot fi văzute ca pașaportul datelor dvs. către LlamaIndex. Ele ajută la importarea datelor din surse și formate diverse, încapsulându-le într-o reprezentare simplă de “Document”. Conectoarele de date pot fi găsite în LlamaHub, un depozit open-source plin de încărcătoare de date. Aceste încărcătoare sunt create pentru o integrare ușoară, permițând o experiență de “plug-and-play” cu orice aplicație LlamaIndex.
Llama hub

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

  • Documente / Noduri: Un Document este ca o valiză generică care poate conține diverse tipuri de date – fie că este vorba de un PDF, de ieșiri API sau de intrări din baze de date. Pe de altă parte, un Nod este un fragment sau “bucățică” dintr-un Document, îmbogățit cu metadate și relații cu alte noduri, asigurând o bază solidă pentru recuperarea precisă a datelor mai târziu.
  • Indici de date: După ingestia datelor, LlamaIndex ajută la indexarea acestor date într-un format recuperabil. În spatele cortinei, el descompune documentele brute în reprezentări intermediare, calculează încorporări vectoriale și deduce metadate. Printre indici, ‘VectorStoreIndex’ este adesea alegerea principală.

Tipuri de indici în LlamaIndex: Cheia pentru date organizate

LlamaIndex oferă diverse tipuri de indici, fiecare pentru nevoi și cazuri de utilizare diferite. La baza acestor indici se află “nodurile” discutate anterior. Să încercăm să înțelegem indicii LlamaIndex cu mecanismele și aplicațiile lor.

1. Index de listă:

  • Mecanism: Un Index de listă aliniază nodurile în mod secvențial, ca o listă. După ce datele de intrare sunt fragmentate în noduri, acestea sunt aranjate în mod liniar, gata de a fi interogate fie secvențial, fie prin cuvinte cheie sau încorporări.
  • Avantaj: Acest tip de index strălucește atunci când este nevoie de interogări secvențiale. LlamaIndex asigură utilizarea întregului dvs. set de date de intrare, chiar și dacă depășește limita de token a LLM-ului, prin interogarea inteligentă a textului din fiecare nod și rafinarea răspunsurilor pe măsură ce navighează în josul listei.

2. Index de magazin de vectori:

  • Mecanism: Aici, nodurile se transformă în încorporări vectoriale, stocate fie local, fie într-o bază de date vectorială specializată, cum ar fi Milvus. Atunci când se efectuează o interogare, aceasta recuperează nodurile top_k cele mai asemănătoare, canalizându-le către sintetizatorul de răspuns.
  • Avantaj: Dacă fluxul de lucru depinde de compararea textului pentru similaritate semantică prin căutare vectorială, acest index poate fi utilizat.

3. Index de arbore:

  • Mecanism: Într-un Index de arbore, datele de intrare evoluează într-o structură arborescentă, construită de jos în sus din noduri inițiale (bucățelele originale de date). Nodurile părinte apar ca rezumat al nodurilor inițiale, create folosind GPT. În timpul unei interogări, indexul arborescent poate traversa de la nodul rădăcină la nodurile inițiale sau poate construi răspunsuri direct din nodurile inițiale selectate.
  • Avantaj: Cu un Index de arbore, interogarea bucăților lungi de text devine mai eficientă, iar extragerea informațiilor din diverse segmente de text este simplificată.

4. Index de cuvinte cheie:

  • Mecanism: O hartă a cuvintelor cheie la noduri formează nucleul unui Index de cuvinte cheie. Atunci când se efectuează o interogare, cuvintele cheie sunt extrase din interogare, iar doar nodurile asociate sunt aduse în lumină.
  • Avantaj: Când aveți interogări clare de la utilizator, un Index de cuvinte cheie poate fi utilizat. De exemplu, căutarea în documente de sănătate devine mai eficientă atunci când vă concentrați doar pe documentele pertinente pentru COVID-19.

Instalarea LlamaIndex

Instalarea LlamaIndex este un proces direct. Puteți alege să o instalați fie direct de la Pip, fie de la sursă. (Asigurați-vă că aveți Python instalat în sistem sau puteți utiliza Google Colab)

1. Instalare de la Pip:

  • Executați următoarea comandă:
    pip install llama-index
  • Notă: În timpul instalării, LlamaIndex poate descărca și stoca fișiere locale pentru anumite pachete precum NLTK și HuggingFace. Pentru a specifica un director pentru aceste fișiere, utilizați variabila de mediu “LLAMA_INDEX_CACHE_DIR”.

2. Instalare de la sursă:

  • Mai întâi, clonați depozitul LlamaIndex de pe GitHub:
    git clone https://github.com/jerryjliu/llama_index.git
  • Odată clonat, navigați către directorul proiectului.
  • Vei avea nevoie de Poetry pentru gestionarea dependențelor de pachete.
  • Același lucru, creați un mediu virtual folosind Poetry:
    poetry shell
  • În cele din urmă, instalați cerințele de bază ale pachetului cu:
    poetry install

Configurarea mediului dvs. pentru LlamaIndex

1. Configurarea OpenAI:

  • În mod implicit, LlamaIndex utilizează gpt-3.5-turbo de la OpenAI pentru generarea de text și text-embedding-ada-002 pentru recuperare și încorporări.
  • Pentru a utiliza această configurare, veți avea nevoie de o cheie API OPENAI_API_KEY. Obțineți una înregistrându-vă pe site-ul OpenAI și creând un nou token API.
  • Aveți flexibilitatea de a personaliza modelul LLM subiacent în funcție de nevoile proiectului dvs. În funcție de furnizorul dvs. de LLM, este posibil să aveți nevoie de chei și tokeni de mediu suplimentare.

2. Configurarea mediului local:

  • Dacă preferați să nu utilizați OpenAI, LlamaIndex se comută automat la modele locale – LlamaCPP și llama2-chat-13B pentru generarea de text, și BAAI/bge-small-en pentru recuperare și încorporări.
  • Pentru a utiliza LlamaCPP, urmați ghidul de instalare furnizat. Asigurați-vă că instalați pachetul llama-cpp-python, ideal compilat pentru a suporta GPU-ul dvs. Această configurare va utiliza aproximativ 11,5 GB de memorie pe CPU și GPU.
  • Pentru încorporări locale, executați pip install sentence-transformers. Această configurare locală va utiliza aproximativ 500 MB de memorie.

Cu aceste configurări, puteți adapta mediul dvs. pentru a valorifica puterea OpenAI sau pentru a rula modele local, aliniindu-vă cu nevoile și resursele proiectului.

Un caz de utilizare simplu: Interogarea paginilor web cu LlamaIndex și OpenAI

Iată un script Python simplu pentru a demonstra cum puteți interoga o pagină web pentru insight-uri specifice:

!pip install llama-index html2text


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

<p># Introduceți cheia dvs. OpenAI mai jos:
os.environ["OPENAI_API_KEY"] = ""</p>

<p># URL-ul pe care doriți să îl încărcați în magazinul dvs. de vectori aici:
url = "http://www.paulgraham.com/fr.html"</p>

<p># Încărcați URL-ul în documente (posibile multiple documente)
documents = SimpleWebPageReader(html_to_text=True).load_data([url])</p>

<p># Creați un magazin de vectori din documente
index = VectorStoreIndex.from_documents(documents)</p>

<p># Creați un motor de interogare pentru a putea pune întrebări
query_engine = index.as_query_engine()</p>

<p># Puteți pune câte întrebări doriți împotriva datelor încărcate:
response = query_engine.query("Care sunt cele 3 sfaturi principale ale lui Paul pentru a strânge bani?")
print(response)
Cele 3 sfaturi principale ale lui Paul pentru a strânge bani sunt:
1. Începeți cu un număr mic atunci când strângeți bani pentru prima dată. Acest lucru vă permite flexibilitate și crește șansele de a strânge mai mulți bani pe termen lung.
2. Încercați să fiți profitabili, dacă este posibil. A avea un plan pentru a ajunge la profitabilitate fără a depinde de finanțări suplimentare face startup-ul mai atractiv pentru investitori.
3. Nu vă concentrați pe valoarea de piață. Deși valoarea de piață este importantă, nu este cel mai important factor în strângerea de fonduri. Concentrați-vă pe obținerea fondurilor necesare și găsirea unor investitori buni.
Google Colab Llama Index Notebook

Google Colab Llama Index Notebook

Cu acest script, ați creat un instrument puternic pentru a extrage informații specifice de pe o pagină web prin simpla punere a unei întrebări. Acesta este doar un exemplu al a ceea ce se poate realiza cu LlamaIndex și OpenAI atunci când se interoghează date web.

LlamaIndex vs Langchain: Alegerea în funcție de obiectivul dvs.

Alegerea dvs. între LlamaIndex și Langchain va depinde de obiectivul proiectului dvs. Dacă doriți să dezvoltați un instrument de căutare inteligent, LlamaIndex este o alegere solidă, excelând ca mecanism de stocare inteligent pentru recuperarea datelor. Pe de altă parte, dacă doriți să creați un sistem precum ChatGPT cu capacități de plugin, Langchain este alegerea dvs. Nu numai că facilitează multiple instanțe de ChatGPT și LlamaIndex, dar extinde și funcționalitatea prin permiterea construirii de agenți multi-task. De exemplu, cu Langchain, puteți crea agenți capabili să execute cod Python în timp ce efectuează o căutare Google. În sinteză, în timp ce LlamaIndex excelează în manipularea datelor, Langchain orchestrează multiple unelte pentru a oferi o soluție holistică.

Am petrecut ultimii cinci ani scufundându-mă în lumea fascinantă a Machine Learning și Deep Learning. Pasinea și expertiza mea m-au condus să contribui la peste 50 de proiecte diverse de inginerie software, cu un focus deosebit pe AI/ML. Curiozitatea mea în continuare m-a atras și spre Natural Language Processing, un domeniu pe care sunt dornic să îl explorez mai departe.