Kaip naudoti tėvų dokumentų retriverį „LangChain“?

Kaip Naudoti Tevu Dokumentu Retriveri Langchain



„LangChain“ sistema leidžia kūrėjams kurti didelius kalbos modelius, kurie gali suprasti ir generuoti tekstą natūralia kalba. „LangChain“ modeliai yra apmokyti naudotis didžiuliu duomenų kiekiu, todėl modelis gali suprasti kalbą, saugodamas duomenis vektorių parduotuvėse. Tai taip pat leidžia vartotojui sukurti retriverius, kurie gali išgauti duomenis iš duomenų bazės arba vektorinių saugyklų su visais modelio duomenimis.

Šis įrašas parodys pagrindinio dokumentų retriverio naudojimo procesą „LangChain“.

Kaip naudoti tėvų dokumentų retriverį „LangChain“?

Parent Document Retriever LangChain gali būti naudojamas suskaidant dokumentus į mažesnius gabalus, kad jie neprarastų savo reikšmės įdėjus. Galima sakyti, kad pirminis dokumentas yra visas dokumentas arba didesnė dalis, iš kurios išgaunami mažesni dokumentai.





Norėdami sužinoti, kaip naudoti pirminio dokumento retriveris „LangChain“, tiesiog peržiūrėkite šį vadovą:



1 veiksmas: įdiekite modulius



Pirmiausia pradėkite naudoti pirminį dokumentų retriverį, įdiegdami LangChain sistemą naudodami pip komandą:





pip įdiegti langchain

Įdiekite „Chroma“ duomenų bazės modulį, kad išsaugotumėte dokumento įterpimus ir iš jo gautumėte duomenis:



pip įdiegti chromadb

Norėdami įdiegti tikttoken, kuris yra žetonų įtaisas, kuris gauna dokumento žetonus sukurdamas mažus gabalus:

pip įdiegti tiktoken

Gaukite OpenAI modulį vykdydami šią komandą Python nešiojamajame kompiuteryje, kad gautumėte jo priklausomybes ir bibliotekas:

pip install openai

2 veiksmas: nustatykite aplinką ir įkelkite duomenis

Kitas žingsnis yra sutvarkyti aplinką naudojant API raktą iš OpenAI paskyros:

importuoti tu
importuoti gauti pasą

tu . maždaug [ „OPENAI_API_KEY“ ] = gauti pasą . gauti pasą ( „OpenAI API raktas“: )

Dabar, importavę failų biblioteką, įkelkite dokumentus iš vietinės sistemos ir iškvieskite įkėlimo () metodą:

google. ET AL importuoti failus
įkeltas = failus. įkelti ( )

3 veiksmas: importuokite bibliotekas

Kitame žingsnyje yra kodas, skirtas importuoti reikalingas bibliotekas, kad būtų galima naudoti pirminius dokumentų retriverius naudojant „LangChain“ sistemą:

langchain. retriveriai importuoti ParentDocumentRetriveris
langchain. vektorių parduotuvės importuoti Chroma
langchain. įterpimai importuoti OpenAIEmbeddings
langchain. text_splitter importuoti RecursiveCharacterTextSplitter
langchain. saugykla importuoti „InMemoryStore“.
langchain. document_loaders importuoti TextLoader

Įkelkite dokumentą, kad sukurtumėte retriverį naudodami TextLoader() metodus su failų keliu:

krautuvai = [
TextLoader ( „Data.txt“ ) ,
TextLoader ( 'state_of_the_union.txt' ) ,
]
dok = [ ]
dėl l in krautuvai:

4 veiksmas: gaukite visus dokumentus

Kai dokumentai / failai bus įkelti į modelį, tiesiog sukurkite dokumentų įterpimus ir saugokite juos vektorinėse parduotuvėse:

vaikas_skirstytojas = RecursiveCharacterTextSplitter ( gabalo_dydis = 400 )

vektorių saugykla = Chroma (
kolekcijos_pavadinimas = 'visi_dokumentai' ,
įterpimo_funkcija = OpenAIEmbeddings ( )
)

parduotuvė = „InMemoryStore“. ( )
retriveris = ParentDocumentRetriveris (
vektorių saugykla = vektorių saugykla ,
daktaras = parduotuvė ,
vaikas_skirstytojas = vaikas_skirstytojas ,
)

Dabar iškvieskite metodą add_documents() naudodami retriverį, kad retriveris patektų į dokumentus:

retriveris. add_documents ( dok , id = Nė vienas )

Šis kodas ištraukia dokumentų, kurie buvo saugomi įkeltų failų duomenų bazėje, įterpimus:

sąrašą ( parduotuvė. išeigos_raktai ( ) )

Gavę dokumentų įterpimus, iškvieskite panašumo_search() metodą su užklausa, kad iš dokumento gautumėte mažus gabalus:

sub_docs = vektorių saugykla. panašumo_paieška ( 'teisingumo breyer' )

Iškvieskite print() metodą, kad pagal užklausą būtų rodomi ankstesniame kode vadinami gabalai:

spausdinti ( sub_docs [ 0 ] . puslapio_turinys )

Iškvieskite užbaigtą retriverio () funkciją, kad visi žetonai būtų saugomi duomenų bazėje naudojant šį kodą:

gauti_dokumentai = retriveris. gauti_relevant_documents ( 'teisingumo breyer' )

Visų dokumentų spausdinimas užtruktų daug laiko ir apdorojimo galios, todėl tiesiog gaukite anksčiau gautų dokumentų ilgį:

tik ( gauti_dokumentai [ 0 ] . puslapio_turinys )

5 veiksmas: didesnių gabalų gavimas

Šis veiksmas neatims viso dokumento; tačiau iš dokumento būtų paimtas didesnis burundukas ir iš jo būtų atimta mažesnė dalis:

tėvų_skirstytojas = RecursiveCharacterTextSplitter ( gabalo_dydis = 2000 m )
vaikas_skirstytojas = RecursiveCharacterTextSplitter ( gabalo_dydis = 400 )
vektorių saugykla = Chroma ( kolekcijos_pavadinimas = „padalinti_tėvai“ , įterpimo_funkcija = OpenAIEmbeddings ( ) )
parduotuvė = „InMemoryStore“. ( )

Sukonfigūruokite retriverį, kad gautumėte mažesnį prieigos raktą iš didžiulio duomenų telkinio, saugomo „ vektorių saugykla “ kintamasis:

retriveris = ParentDocumentRetriveris (
vektorių saugykla = vektorių saugykla ,
daktaras = parduotuvė ,
vaikas_skirstytojas = vaikas_skirstytojas ,
tėvų_skirstytojas = tėvų_skirstytojas ,
)

Paskambinkite retriveriui, kad gautumėte didesnius gabalus iš vektorių parduotuvių naudodami dok kintamasis funkcijos argumente:

retriveris. add_documents ( dok )

Gaukite šių dokumentų ilgį iš dok kintamasis naudojant toliau pateiktą komandą:

tik ( sąrašą ( parduotuvė. išeigos_raktai ( ) ) )

Tiesiog paimkite mažesnę dalį iš didesnės, nes ankstesnėje ekrano kopijoje rodoma, kad vektorių saugykloje yra 23 dokumentai. Užklausa naudojama norint gauti atitinkamus duomenis naudojant panašumo_paieška() būdas gauti duomenis iš vektorių saugyklos:

sub_docs = vektorių saugykla. panašumo_paieška ( 'teisingumo breyer' )

Atspausdinkite mažesnius gabalus naudodami užklausą, paminėtą ankstesniame kode, kad jie būtų rodomi ekrane:

spausdinti ( sub_docs [ 0 ] . puslapio_turinys )

Dabar naudokite retriverį visame duomenų rinkinyje, saugomame duomenų bazėje, naudodami užklausą kaip funkcijos argumentą:

gauti_dokumentai = retriveris. gauti_relevant_documents ( 'teisingumo breyer' )

Gaukite visų sukurtų ir duomenų bazėje saugomų dalių ilgį:

tik ( gauti_dokumentai [ 0 ] . puslapio_turinys )

Negalime rodyti visų dalių, bet pirmoji dalis su indekso numeriu 0 rodoma naudojant šį kodą:

spausdinti ( gauti_dokumentai [ 0 ] . puslapio_turinys

Tai viskas apie pagrindinio dokumentų retriverio naudojimo procesą „LangChain“.

Išvada

Norėdami naudoti pirminį dokumentų nuskaitymo įrenginį „LangChain“, tiesiog įdiekite modulius ir nustatykite OpenAI aplinką naudodami API raktą. Po to importuokite reikalingas bibliotekas iš „LangChain“, kad galėtumėte naudoti pirminį dokumentų atranką, tada įkelkite modelio dokumentus. Vartotojas gali naudoti pirminius dokumentus kaip visą dokumentą arba didelę dalį ir gauti mažesnę dalį naudodamas užklausą. Šiame įraše išsamiai aprašomas pagrindinio dokumentų retriverio naudojimo „LangChain“ procesas.