Kako uporabljati Parent Document Retriever v LangChain?

Kako Uporabljati Parent Document Retriever V Langchain



Ogrodje LangChain razvijalcem omogoča izgradnjo velikih jezikovnih modelov, ki lahko razumejo in ustvarijo besedilo v naravnem jeziku. Modeli LangChain so usposobljeni za ogromno količino podatkov, tako da lahko model razume jezik s shranjevanjem podatkov v vektorskih shrambah. Prav tako uporabniku omogoča, da zgradi retrieverje, ki lahko ekstrahirajo podatke iz baze podatkov ali vektorskih shramb z vsemi podatki, shranjenimi za model.

Ta objava bo prikazala postopek uporabe nadrejenega pridobivalnika dokumentov v LangChain.

Kako v LangChainu uporabljati nadrejeni prenosnik dokumentov?

Pridobitelj nadrejenega dokumenta v LangChain se lahko uporablja tako, da se dokumenti razdelijo na manjše dele, tako da ne izgubijo svojega pomena v trenutkih vdelave. Za nadrejeni dokument lahko rečemo, da je celoten dokument ali večji kos, iz katerega so ekstrahirani manjši kosi.







Če želite izvedeti postopek uporabe nadrejenega pridobivalnika dokumentov v LangChain, si preprosto oglejte ta vodnik:



1. korak: Namestite module



Najprej začnite uporabljati nadrejeni pridobivalnik dokumentov z namestitvijo ogrodja LangChain z ukazom pip:





pip namestite langchain

Namestite modul baze podatkov Chroma, da shranite vdelave dokumenta in pridobite podatke iz njega:



pip namestite chromadb

Če želite namestiti tiktoken, ki je tokenizer, ki pridobi žetone dokumenta z ustvarjanjem majhnih kosov:

pip namestite tiktoken

Pridobite modul OpenAI tako, da izvedete naslednji ukaz v prenosnem računalniku Python, da pridobite njegove odvisnosti in knjižnice:

pip namestite openai

2. korak: Nastavite okolje in naložite podatke

Naslednji korak je nastavite okolje z uporabo ključa API iz računa OpenAI:

uvoz ti
uvoz getpass

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

Zdaj naložite dokumente iz lokalnega sistema po uvozu knjižnice datotek in nato pokličite metodo upload():

od google. ET AL uvoz datoteke
naloženo = datoteke. nalaganje ( )

3. korak: Uvozite knjižnice

Naslednji korak vsebuje kodo za uvoz zahtevanih knjižnic za uporabo nadrejenih pridobivalcev dokumentov z uporabo ogrodja LangChain:

od Langchain. prinašalci uvoz ParentDocumentRetriever
od Langchain. vektorske trgovine uvoz Chroma
od Langchain. vdelave uvoz OpenAIEmbeddings
od Langchain. razdelilnik besedila uvoz RecursiveCharacterTextSplitter
od Langchain. shranjevanje uvoz InMemoryStore
od Langchain. nalagalci_dokumentov uvoz TextLoader

Naložite dokument za gradnjo retrieverja z uporabo metod TextLoader() s potjo datotek:

nakladalci = [
TextLoader ( 'Data.txt' ) ,
TextLoader ( 'state_of_the_union.txt' ) ,
]
dokumenti = [ ]
za l v nakladalci:

4. korak: Pridobivanje celotnih dokumentov

Ko so dokumenti/datoteke naloženi v model, preprosto zgradite vdelave dokumentov in jih shranite v vektorske shrambe:

otrok_razdelilnik = RecursiveCharacterTextSplitter ( velikost_kosa = 400 )

vectorstore = Chroma (
ime_zbirke = 'polni_dokumenti' ,
funkcija_vdelave = OpenAIEmbeddings ( )
)

trgovina = InMemoryStore ( )
prinašalec = ParentDocumentRetriever (
vectorstore = vectorstore ,
docstore = trgovina ,
otrok_razdelilnik = otrok_razdelilnik ,
)

Zdaj pokličite metodo add_documents() z uporabo retrieverja, da spravite retriever v dokumente:

prinašalec. add_documents ( dokumenti , ids = Noben )

Naslednja koda ekstrahira vdelave dokumentov, ki so bili shranjeni v zbirki podatkov za naložene datoteke:

seznam ( trgovina. yield_keys ( ) )

Ko pridobite vdelave dokumentov, pokličite metodo similarity_search() s poizvedbo, da dobite majhne koščke iz dokumenta:

sub_docs = vectorstore. podobnost_iskanje ( 'pravosodje breyer' )

Pokličite metodo print(), da prikažete kose, poklicane v prejšnji kodi na podlagi poizvedbe:

tiskanje ( sub_docs [ 0 ] . page_content )

Pokličite popolno funkcijo retriever(), da dobite vse žetone, shranjene v bazi podatkov, z uporabo naslednje kode:

pridobljeni_dokumenti = prinašalec. get_relevant_documents ( 'pravosodje breyer' )

Tiskanje vseh dokumentov bi vzelo ogromno časa in procesorske moči, zato preprosto pridobite dolžino dokumentov, ki ste jih pridobili prej:

samo ( pridobljeni_dokumenti [ 0 ] . page_content )

5. korak: Pridobivanje večjih kosov

Ta korak ne bo zajel celotnega dokumenta; vendar bi iz dokumenta vzel večjo veverico in iz njega pridobil manjši kos:

parent_splitter = RecursiveCharacterTextSplitter ( velikost_kosa = 2000 )
otrok_razdelilnik = RecursiveCharacterTextSplitter ( velikost_kosa = 400 )
vectorstore = Chroma ( ime_zbirke = 'split_parents' , funkcija_vdelave = OpenAIEmbeddings ( ) )
trgovina = InMemoryStore ( )

Konfigurirajte prinašalnik, da pridobi manjši žeton iz velikega nabora podatkov, shranjenih v ' vectorstore ” spremenljivka:

prinašalec = ParentDocumentRetriever (
vectorstore = vectorstore ,
docstore = trgovina ,
otrok_razdelilnik = otrok_razdelilnik ,
parent_splitter = parent_splitter ,
)

Pokličite prinašalca, da pridobi večje kose iz vektorskih shramb z uporabo dokumenti spremenljivka v argumentu funkcije:

prinašalec. add_documents ( dokumenti )

Poiščite dolžino teh dokumentov pri dokumenti spremenljivko prek spodnjega ukaza:

samo ( seznam ( trgovina. yield_keys ( ) ) )

Preprosto vzemite manjši kos iz večjega, saj prejšnji posnetek zaslona prikazuje, da je v vektorski shrambi shranjenih 23 dokumentov. Poizvedba se uporablja za pridobivanje ustreznih podatkov z uporabo podobnost_iskanje() metoda za pridobivanje podatkov iz vektorske shrambe:

sub_docs = vectorstore. podobnost_iskanje ( 'pravosodje breyer' )

Natisnite manjše kose s poizvedbo, omenjeno v prejšnji kodi, da jih prikažete na zaslonu:

tiskanje ( sub_docs [ 0 ] . page_content )

Zdaj uporabite retriever na celotnem naboru podatkov, shranjenem v bazi podatkov, z uporabo poizvedbe kot argumenta funkcije:

pridobljeni_dokumenti = prinašalec. get_relevant_documents ( 'pravosodje breyer' )

Pridobite dolžino celotnih kosov, ustvarjenih in shranjenih v bazi podatkov:

samo ( pridobljeni_dokumenti [ 0 ] . page_content )

Ne moremo prikazati vseh kosov, vendar je prvi del z indeksno številko 0 prikazan z naslednjo kodo:

tiskanje ( pridobljeni_dokumenti [ 0 ] . page_content

To je vse o postopku uporabe nadrejenega pridobivalnika dokumentov v LangChainu.

Zaključek

Za uporabo nadrejenega pridobivalnika dokumentov v LangChain preprosto namestite module in nastavite okolje OpenAI z njegovim ključem API. Nato uvozite zahtevane knjižnice iz LangChaina za uporabo nadrejenega pridobivalnika dokumentov in nato naložite dokumente za model. Uporabnik lahko uporabi nadrejene dokumente kot celoten dokument ali velik del in s poizvedbo pridobi manjši del. Ta objava je podrobneje opisala postopek uporabe nadrejenega pridobivalnika dokumentov v LangChain.