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 tiuvoz 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 datotekenalož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 ParentDocumentRetrieverod 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.