Inteligența artificială
LlamaIndex: Creșteți-vă aplicațiile LLM cu date personalizate cu ușurință

Modelele lingvistice mari (LLM), precum seria GPT a OpenAI, au fost antrenate pe o gamă diversă de date accesibile publicului, demonstrând capacități remarcabile în generarea de text, rezumare, răspunsuri la întrebări și planificare. În ciuda versatilității lor, o întrebare frecvent adresată se învârte în jurul integrării perfecte a acestor modele cu date personalizate, private sau proprietare.
Companiile și persoanele fizice sunt inundate cu date unice și personalizate, adesea găzduite în diverse aplicații, cum ar fi Notion, Slack și Salesforce, sau stocate în fișiere personale. Pentru a folosi LLM-urile pentru aceste date specifice, au fost propuse și experimentate mai multe metodologii.
Reglaj fin Reprezintă o astfel de abordare, constând în ajustarea ponderilor modelului pentru a încorpora cunoștințe din anumite seturi de date. Cu toate acestea, acest proces nu este lipsit de provocări. Necesită un efort substanțial în pregătirea datelor, împreună cu o procedură de optimizare dificilă, necesitând 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ă, prioritizează elaborarea de intrări și solicitări pentru a oferi LLM contextul necesar pentru generarea de rezultate precise. Această abordare atenuează nevoia de recalificare extinsă a modelului, oferind un mijloc mai eficient și mai accesibil de integrare a datelor private.
Dar dezavantajul acestui lucru este dependența sa de aptitudinile și expertiza utilizatorului în inginerie promptăÎn plus, învățarea în context poate să nu fie întotdeauna la fel de precisă sau fiabilă ca ajustarea fină, mai ales atunci când se lucrează cu date extrem de specializate sau tehnice. Pre-antrenamentul modelului pe o gamă largă de texte de pe internet nu garantează înțelegerea jargonului sau contextului specific, ceea ce poate duce la rezultate inexacte sau irelevante. Acest lucru este problematic în special atunci când datele private provin dintr-un domeniu sau o industrie de nișă.
Mai mult, cantitatea de context care poate fi furnizată într-un singur prompt este limitată, iar performanța LLM se poate degrada pe măsură ce complexitatea sarcinii crește. Există, de asemenea, provocarea confidențialității și a securității datelor, deoarece informațiile furnizate în prompt ar putea fi sensibile sau confidențiale.
Pe măsură ce comunitatea explorează aceste tehnici, instrumente precum CallIndex acum captează atenția.
A fost început de Jerry Liu, un fost cercetător Uber. În timp ce experimenta cu GPT-3 toamna trecută, Liu a observat limitările modelului în ceea ce privește gestionarea datelor private, cum ar fi fișierele personale. Această observație a dus la lansarea proiectului open-source LlamaIndex.
Inițiativa a atras investitori, asigurându-se $ 8.5 de milioane de într-o rundă recentă de finanțare de început.
LlamaIndex facilitează creșterea LLM-urilor cu date personalizate, reducând decalajul dintre modelele pre-instruite și cazurile de utilizare a datelor personalizate. Prin LlamaIndex, utilizatorii își pot folosi propriile date cu LLM-uri, deblocând generarea de cunoștințe și raționamentul cu informații personalizate.
Utilizatorii pot oferi fără întreruperi LLM-urilor propriile lor date, promovând un mediu în care generarea de cunoștințe și raționamentul sunt profund personalizate și perspicace. LlamaIndex abordează limitările învățării în context, oferind o platformă mai ușor de utilizat și mai sigură pentru interacțiunea datelor, asigurându-se că chiar și cei cu experiență limitată în învățarea automată pot valorifica întregul potențial al LLM-urilor cu datele lor private.
Concepte la nivel înalt și câteva perspective
1. Recuperare Augmented Generation (RAG):
RAG este un proces dublu conceput pentru a combina LLM-urile cu date personalizate, sporind astfel capacitatea modelului de a oferi răspunsuri mai precise și mai informate. Procesul cuprinde:
- Etapa de indexare: Aceasta este faza pregătitoare în care se pun bazele pentru crearea bazei de cunoștințe.
- Etapa de interogare: Aici, baza de cunoștințe este căutată în contextul relevant pentru a-i ajuta pe LLM să răspundă la întrebări.
Indexarea călătoriei cu LlamaIndex:
- Conectori de dateGândiți-vă la conectorii de date ca la pașaportul datelor dvs. către LlamaIndex. Aceștia ajută la importul de date din diverse surse și formate, încapsulându-le într-o reprezentare simplistă de tip „document”. Conectorii de date pot fi găsiți în LlamaHub, un depozit open-source plin de încărcătoare de date. Aceste încărcătoare sunt concepute pentru o integrare ușoară, permițând o experiență plug-and-play cu orice aplicație LlamaIndex.
- 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șire API sau de intrări de bază de date. Pe de altă parte, un Nod este un fragment sau „buncătură” dintr-un Document, îmbogățit cu metadate și relații cu alte noduri, asigurând o bază solidă pentru o recuperare precisă a datelor ulterioară.
- Indici de dateDupă ingerarea datelor, LlamaIndex ajută la indexarea acestor date într-un format recuperabil. În culise, disecă documentele brute în reprezentări intermediare, calculează încorporări vectoriale și deduce metadate. Printre indexuri, „VectorStoreIndex” este adesea alegerea preferată.
Tipuri de indici în LlamaIndex: cheia datelor organizate
LlamaIndex oferă diferite tipuri de indici, fiecare pentru nevoi și cazuri de utilizare diferite. În centrul acestor indici se află „nodurile”, așa cum s-a discutat mai sus. Să încercăm să înțelegem indicii LlamaIndex cu mecanismele și aplicațiile lor.
1. Indexul listei:
- Mecanism: Un index de listă aliniază nodurile secvenţial ca o listă. După fragmentarea datelor de intrare în noduri, acestea sunt aranjate într-o manieră liniară, gata să fie interogate fie secvenţial, fie prin cuvinte cheie sau înglobări.
- Avantaj : Acest tip de index strălucește atunci când este nevoie de interogare secvențială. LlamaIndex asigură utilizarea tuturor datelor de intrare, chiar dacă depășește limita de simboluri LLM, interogând inteligent textul de la fiecare nod și rafinând răspunsurile pe măsură ce navighează în listă.
2. Vector Store Index:
- Mecanism: Aici, nodurile se transformă în înglobări vectoriale, stocate fie local, fie într-o bază de date vectorială specializată, cum ar fi Milvus. Când este interogat, preia cele mai asemănătoare noduri top_k, canalizându-le către sintetizatorul de răspuns.
- Avantaj : Dacă fluxul dvs. de lucru depinde de compararea textului pentru similitudinea semantică prin căutarea vectorială, acest index poate fi utilizat.
3. Indexul arborelui:
- Mecanism: Într-un index arbore, datele de intrare evoluează într-o structură arborescentă, construită de jos în sus din nodurile frunzelor (bunurile de date originale). Nodurile părinte apar ca rezumate ale nodurilor frunză, create folosind GPT. În timpul unei interogări, indexul arborelui poate traversa de la nodul rădăcină la nodurile frunză sau poate construi răspunsuri direct de la nodurile frunză selectate.
- Avantaj : Cu un index arbore, interogarea fragmentelor lungi de text devine mai eficientă, iar extragerea informațiilor din diferite segmente de text este simplificată.
4. Indexul cuvintelor cheie:
- Mecanism: O hartă a cuvintelor cheie către noduri formează nucleul unui index de cuvinte cheie. Când sunt interogate, cuvintele cheie sunt scoase din interogare și numai nodurile mapate sunt aduse în centrul atenției.
- Avantaj : Când aveți interogări clare de utilizator, poate fi folosit un index de cuvinte cheie. De exemplu, examinarea documentelor de asistență medicală devine mai eficientă atunci când se concentrează doar asupra documentelor relevante pentru COVID-19.
Instalarea LlamaIndex
Instalarea LlamaIndex este un proces simplu. Puteți alege să îl instalați fie direct din Pip, fie din sursă. (Asigurați-vă că aveți instalat python în sistemul dvs. sau puteți utiliza Google Colab)
1. Instalare de la Pip:
- Executați următoarea comandă:
pip install llama-index
- notițe: Î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 din sursă:
- Mai întâi, clonează depozitul LlamaIndex din GitHub:
git clone https://github.com/jerryjliu/llama_index.git
- Odată clonat, navigați la directorul proiectului.
- Veți avea nevoie de Poetry pentru gestionarea dependențelor pachetelor.
- Acum, 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 pentru LlamaIndex
1. Configurare OpenAI:
- În mod implicit, LlamaIndex utilizează OpenAI
gpt-3.5-turbo
pentru generarea de text șitext-embedding-ada-002
pentru recuperare și înglobare. - Pentru a utiliza această configurație, va trebui să aveți un
OPENAI_API_KEY
Obțineți unul înregistrându-vă pe site-ul OpenAI și creând un nou token API. - Aveți flexibilitatea de a personaliza modelul de limbă mare (LLM) subiacent în funcție de nevoile proiectului dumneavoastră. În funcție de furnizorul dvs. de LLM, este posibil să aveți nevoie de chei și simboluri de mediu suplimentare.
2. Configurarea mediului local:
- Dacă preferați să nu utilizați OpenAI, LlamaIndex trece automat la modelele locale -
LlamaCPP
șillama2-chat-13B
pentru generarea de text șiBAAI/bge-small-en
pentru recuperare și înglobare. - A folosi
LlamaCPP
, urmați ghidul de instalare furnizat. Asigurați-vă că instalațillama-cpp-python
pachet, compilat în mod ideal pentru a vă sprijini GPU. Această configurare va folosi aproximativ 11.5 GB de memorie pe CPU și GPU. - Pentru înglobările locale, executați
pip install sentence-transformers
. Această configurare locală va folosi aproximativ 500 MB de memorie.
Cu aceste setări, vă puteți personaliza mediul fie pentru a profita de puterea OpenAI, fie pentru a rula modele la nivel local, aliniindu-vă cerințelor și resurselor 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 informații specifice:
!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.
Cu acest script, ați creat un instrument puternic pentru a extrage informații specifice dintr-o pagină web prin simpla întrebare. Aceasta este doar o privire a ceea ce se poate realiza cu LlamaIndex și OpenAI atunci când interogând datele web.
LlamaIndex vs Langchain: alegerea în funcție de obiectivul dvs
Alegerea dvs. între LlamaIndex și Langchain va depinde de obiectivul proiectului tău. Dacă dorești să dezvolți un instrument inteligent de căutare, LlamaIndex este o alegere solidă, excelând ca mecanism inteligent de stocare pentru recuperarea datelor. Pe de altă parte, dacă dorești să creezi un sistem precum ChatGPT cu capabilități de plugin-uri, Langchain este alegerea ta preferată. Nu numai că facilitează instanțe multiple ale ChatGPT și LlamaIndex, dar extinde și funcționalitatea permițând construirea de agenți multi-task. De exemplu, cu Langchain, poți crea agenți capabili să execute cod Python în timp ce efectuează simultan o căutare pe Google. Pe scurt, în timp ce LlamaIndex excelează la gestionarea datelor, Langchain orchestrează mai multe instrumente pentru a oferi o soluție holistică.

Logo LlamaIndex Operă de artă creată folosind Mijlocul călătoriei