Kako koristiti Parent Document Retriever u LangChainu?

Kako Koristiti Parent Document Retriever U Langchainu



Okvir LangChain omogućuje razvojnim programerima izradu velikih jezičnih modela koji mogu razumjeti i generirati tekst na prirodnom jeziku. LangChain modeli treniraju se na ogromnoj količini podataka tako da model može razumjeti jezik pohranjujući podatke u vektorske pohrane. Također omogućuje korisniku da izgradi retrivere koji mogu izvući podatke iz baze podataka ili vektorskih pohrana sa svim podacima pohranjenim za model.

Ovaj će post demonstrirati postupak korištenja nadređenog programa za preuzimanje dokumenata u LangChainu.

Kako koristiti nadređeni Document Retriever u LangChainu?

Parent document retriever u LangChainu može se koristiti dijeljenjem dokumenata u manje dijelove kako ne bi izgubili svoje značenje u trenucima ugrađivanja. Može se reći da je nadređeni dokument cijeli dokument ili veći dio iz kojeg su izdvojeni manji dijelovi.







Kako biste naučili postupak korištenja nadređenog programa za preuzimanje dokumenata u LangChainu, jednostavno pogledajte ovaj vodič:



Korak 1: Instalirajte module



Najprije počnite koristiti nadređeni dohvaćač dokumenata instaliranjem okvira LangChain pomoću naredbe pip:





pip instalirati langchain

Instalirajte Chroma modul baze podataka da biste spremili ugradnje dokumenta i dohvatili podatke iz njega:



pip instaliraj chromadb

Da biste instalirali tiktoken koji je tokenizer koji dobiva tokene dokumenta stvaranjem malih dijelova:

pip instaliraj tiktoken

Nabavite OpenAI modul izvršavanjem sljedeće naredbe na Python prijenosnom računalu da biste dobili njegove ovisnosti i biblioteke:

pip instaliraj openai

Korak 2: Postavite okruženje i učitajte podatke

Sljedeći korak je da postaviti okruženje pomoću API ključa s OpenAI računa:

uvoz vas
uvoz getpass

vas . približno [ 'OPENAI_API_KEY' ] = getpass . getpass ( 'OpenAI API ključ:' )

Sada prenesite dokumente iz lokalnog sustava nakon uvoza biblioteke datoteka i zatim pozovite metodu upload():

iz google. ET AL uvoz datoteke
učitano = datoteke. Učitaj ( )

Korak 3: Uvezite biblioteke

Sljedeći korak sadrži kôd za uvoz potrebnih biblioteka za korištenje nadređenih preuzimatelja dokumenata pomoću okvira LangChain:

iz langchain. retriveri uvoz ParentDocumentRetriever
iz langchain. vektorske trgovine uvoz Chroma
iz langchain. ugradnje uvoz OpenAIEembeddings
iz langchain. razdjelnik_teksta uvoz RecursiveCharacterTextSplitter
iz langchain. skladištenje uvoz InMemoryStore
iz langchain. učitavači dokumenata uvoz TextLoader

Učitajte dokument za izradu retrivera koristeći TextLoader() metode s putanjom datoteka:

utovarivači = [
TextLoader ( 'Data.txt' ) ,
TextLoader ( 'state_of_the_union.txt' ) ,
]
dokumenti = [ ]
za l u utovarivači:

Korak 4: Dohvaćanje kompletnih dokumenata

Nakon što se dokumenti/datoteke učitaju u model, jednostavno napravite ugradnje dokumenata i pohranite ih u vektorska spremišta:

dijete_razdjelnik = RecursiveCharacterTextSplitter ( veličina_komadka = 400 )

vektorska trgovina = Chroma (
naziv_zbirke = 'puni_dokumenti' ,
funkcija_ugrađivanja = OpenAIEembeddings ( )
)

trgovina = InMemoryStore ( )
retriver = ParentDocumentRetriever (
vektorska trgovina = vektorska trgovina ,
docstore = trgovina ,
dijete_razdjelnik = dijete_razdjelnik ,
)

Sada pozovite metodu add_documents() koristeći retriver da dovedete retriver do dokumenata:

retriver. dodaj_dokumente ( dokumenti , ID-ovi = Nijedan )

Sljedeći kod izdvaja ugradnje dokumenata koji su pohranjeni u bazi podataka za učitane datoteke:

popis ( trgovina. ključevi_prinosa ( ) )

Nakon što dobijete ugradnje dokumenata, pozovite metodu similarity_search() s upitom da biste dobili male dijelove iz dokumenta:

pod_dokumenti = vektorska trgovina. traženje_sličnosti ( 'pravda breyer' )

Pozovite metodu print() za prikaz dijelova pozvanih u prethodnom kodu na temelju upita:

ispisati ( pod_dokumenti [ 0 ] . sadržaj_stranice )

Pozovite kompletnu funkciju retriever() da biste dobili sve tokene pohranjene u bazi podataka pomoću sljedećeg koda:

preuzeti_dokumenti = retriver. dobiti_relevantne_dokumente ( 'pravda breyer' )

Ispis svih dokumenata oduzeo bi puno vremena i procesorske snage, stoga jednostavno nabavite duljinu dokumenata koji su prethodno dohvaćeni:

samo ( preuzeti_dokumenti [ 0 ] . sadržaj_stranice )

Korak 5: Dohvaćanje većih dijelova

Ovaj korak neće uzeti cijeli dokument; međutim, uzeo bi veću vjevericu iz dokumenta i dohvatio manji dio iz njega:

nadređeni_razdjelnik = RecursiveCharacterTextSplitter ( veličina_komadka = 2000. godine )
dijete_razdjelnik = RecursiveCharacterTextSplitter ( veličina_komadka = 400 )
vektorska trgovina = Chroma ( naziv_zbirke = 'split_roditelji' , funkcija_ugrađivanja = OpenAIEembeddings ( ) )
trgovina = InMemoryStore ( )

Konfigurirajte retriver da dobije manji token iz ogromnog skupa podataka pohranjenih u ' vektorska trgovina ” varijabla:

retriver = ParentDocumentRetriever (
vektorska trgovina = vektorska trgovina ,
docstore = trgovina ,
dijete_razdjelnik = dijete_razdjelnik ,
nadređeni_razdjelnik = nadređeni_razdjelnik ,
)

Pozovite retrivera da uzme veće komade iz skladišta vektora pomoću dokumenti varijabla u argumentu funkcije:

retriver. dodaj_dokumente ( dokumenti )

Saznajte duljinu ovih dokumenata od dokumenti varijablu putem donje naredbe:

samo ( popis ( trgovina. ključevi_prinosa ( ) ) )

Jednostavno uzmite manji dio iz većeg jer prethodna snimka zaslona prikazuje da su u vektorskoj pohrani pohranjena 23 dokumenta. Upit se koristi za dobivanje relevantnih podataka pomoću sličnost_search() metoda za dohvaćanje podataka iz vektorske pohrane:

pod_dokumenti = vektorska trgovina. traženje_sličnosti ( 'pravda breyer' )

Ispišite manje dijelove pomoću upita spomenutog u prethodnom kodu da biste ih prikazali na zaslonu:

ispisati ( pod_dokumenti [ 0 ] . sadržaj_stranice )

Sada upotrijebite retriver na kompletnom skupu podataka pohranjenom u bazi podataka koristeći upit kao argument funkcije:

preuzeti_dokumenti = retriver. dobiti_relevantne_dokumente ( 'pravda breyer' )

Dohvatite duljinu kompletnih dijelova kreiranih i pohranjenih u bazi podataka:

samo ( preuzeti_dokumenti [ 0 ] . sadržaj_stranice )

Ne možemo prikazati sve dijelove, ali prvi dio s brojem indeksa 0 prikazuje se pomoću sljedećeg koda:

ispisati ( preuzeti_dokumenti [ 0 ] . sadržaj_stranice

To je sve o procesu korištenja nadređenog programa za preuzimanje dokumenata u LangChainu.

Zaključak

Za korištenje nadređenog programa za pronalaženje dokumenata u LangChainu, jednostavno instalirajte module i postavite OpenAI okruženje koristeći njegov API ključ. Nakon toga uvezite potrebne biblioteke iz LangChaina za korištenje nadređenog programa za preuzimanje dokumenata, a zatim učitajte dokumente za model. Korisnik može koristiti matične dokumente kao cijeli dokument ili veliki dio i dobiti manji dio pomoću upita. Ovaj post razradio je postupak korištenja nadređenog programa za preuzimanje dokumenata u LangChainu.