See postitus demonstreerib põhidokumendi retriiveri kasutamise protsessi LangChainis.
Kuidas kasutada vanemdokumendi retriiverit LangChainis?
LangChaini põhidokumentide otsijat saab kasutada, kui jagate dokumendid väiksemateks tükkideks, et need ei kaotaks manustamise hetkel oma tähendust. Eeldokumendiks võib öelda, et see on kogu dokument või suurem osa, millest eraldatakse väiksemad osad.
LangChainis põhidokumendi retriiveri kasutamise protsessi tundmaõppimiseks lugege lihtsalt seda juhendit:
1. samm: installige moodulid
Kõigepealt alustage vanemdokumendi retriiveri kasutamist, installides LangChaini raamistiku, kasutades käsku pip:
pip install langchain
Paigaldage Chroma andmebaasimoodul, et salvestada dokumendi manustused ja sealt andmeid hankida.
pip install chromadb
Tiktokeni installimiseks, mis on tokenisaator, mis hangib dokumendi märgid, luues väikesed jupid:
pip install tiktoken
Hankige OpenAI moodul, käivitades Pythoni märkmikus selle sõltuvuste ja teekide hankimiseks järgmise käsu:
pip install openai
2. samm: keskkonna seadistamine ja andmete üleslaadimine
Järgmine samm on seada keskkonda kasutades OpenAI konto API-võtit:
importida sinaimportida saada pass
sina . umbes [ 'OPENAI_API_KEY' ] = saada pass . saada pass ( 'OpenAI API võti:' )
Nüüd laadige dokumendid üles kohalikust süsteemist pärast failiteegi importimist ja seejärel kutsuge üles üleslaadimismeetod ():
alates google. ET AL importida failidüles laaditud = failid. Laadi üles ( )
3. samm: importige teegid
Järgmine samm sisaldab koodi vajalike teekide importimiseks, et kasutada LangChaini raamistikku kasutavaid emadokumendi otsijaid:
alates langchain. retriiverid importida ParentDocumentRetriiveralates langchain. vektorpoed importida Chroma
alates langchain. manused importida OpenAIEembeddings
alates langchain. teksti_jagaja importida Recursive CharacterTextSplitter
alates langchain. ladustamine importida InMemoryStore
alates langchain. document_loaders importida TextLoader
Laadige dokument, et luua retriiver, kasutades TextLoader() meetodeid koos failide teega:
laadurid = [TextLoader ( 'Data.txt' ) ,
TextLoader ( 'liit_riik.txt' ) ,
]
dok = [ ]
jaoks l sisse laadurid:
4. samm: täielike dokumentide toomine
Kui dokumendid/failid on mudelisse laaditud, looge lihtsalt dokumentide manused ja salvestage need vektorpoodidesse:
laps_jagaja = Recursive CharacterTextSplitter ( tüki_suurus = 400 )vektorpood = Chroma (
kollektsiooni_nimi = 'täielikud_dokumendid' ,
manustamise_funktsioon = OpenAIEembeddings ( )
)
poodi = InMemoryStore ( )
retriiver = ParentDocumentRetriiver (
vektorpood = vektorpood ,
arstipood = poodi ,
laps_jagaja = laps_jagaja ,
)
Nüüd kutsuge retriiveri abil meetod add_documents(), et tuua retriiver dokumentide juurde:
retriiver. lisa_dokumendid ( dok , ID-d = Mitte ühtegi )Järgmine kood ekstraheerib üleslaaditud failide andmebaasi salvestatud dokumentide manused:
nimekirja ( poodi. saagi_võtmed ( ) )
Pärast dokumentide manustamist kutsuge päringuga välja meetod Sarnasus_search(), et saada dokumendist väikesed osad:
alam_dokumendid = vektorpood. sarnasuse_otsing ( 'Õigluse breyer' )Eelmises koodis päringu põhjal kutsutud tükkide kuvamiseks kutsuge print() meetod:
printida ( alam_dokumendid [ 0 ] . page_content )
Kutsuge täielik funktsioon retriever(), et saada kõik andmebaasi salvestatud märgid järgmise koodi abil:
allalaaditud_dokumendid = retriiver. hankige_asjakohased_dokumendid ( 'Õigluse breyer' )Kõigi dokumentide printimine võtaks tohutult aega ja töötlemisvõimsust, nii et hankige lihtsalt varem hangitud dokumentide pikkus:
ainult ( allalaaditud_dokumendid [ 0 ] . page_content )
5. samm: suuremate tükkide hankimine
See samm ei hõlma kogu dokumenti; aga see võtaks dokumendist suurema tüki ja tooks sealt välja väiksema tüki:
vanem_jagaja = Recursive CharacterTextSplitter ( tüki_suurus = 2000 )laps_jagaja = Recursive CharacterTextSplitter ( tüki_suurus = 400 )
vektorpood = Chroma ( kollektsiooni_nimi = 'eraldi_vanemad' , manustamise_funktsioon = OpenAIEembeddings ( ) )
poodi = InMemoryStore ( )
Seadistage retriiver nii, et see saaks väiksemat märki tohutust andmekogumist, mis on salvestatud ' vektorpood ” muutuja:
retriiver = ParentDocumentRetriiver (vektorpood = vektorpood ,
arstipood = poodi ,
laps_jagaja = laps_jagaja ,
vanem_jagaja = vanem_jagaja ,
)
Helistage retriiverile, et hankida vektorpoodidest suuremad tükid, kasutades dok muutuja funktsiooni argumendis:
retriiver. lisa_dokumendid ( dok )Hankige nende dokumentide pikkus aadressilt dok muutuja alloleva käsu kaudu:
ainult ( nimekirja ( poodi. saagi_võtmed ( ) ) )
Võtke lihtsalt suuremast väiksem tükk, kuna eelmine ekraanipilt näitab, et vektorite poes on salvestatud 23 dokumenti. Päringut kasutatakse asjakohaste andmete hankimiseks, kasutades Sarnasuse_otsing() meetod andmete hankimiseks vektorite salvest:
alam_dokumendid = vektorpood. sarnasuse_otsing ( 'Õigluse breyer' )Printige väiksemad osad ekraanil kuvamiseks, kasutades eelmises koodis mainitud päringut:
printida ( alam_dokumendid [ 0 ] . page_content )
Nüüd kasutage retriiverit kogu andmebaasi salvestatud andmekogumis, kasutades funktsiooni argumendina päringut:
allalaaditud_dokumendid = retriiver. hankige_asjakohased_dokumendid ( 'Õigluse breyer' )Hankige andmebaasis loodud ja salvestatud täielike tükkide pikkus:
ainult ( otsitud_dokumendid [ 0 ] . page_content )
Me ei saa kõiki tükke kuvada, kuid esimene osa indeksinumbriga 0 kuvatakse järgmise koodi abil:
printida ( otsitud_dokumendid [ 0 ] . page_content
See on kõik, mis puudutab põhidokumendi otsija kasutamist LangChainis.
Järeldus
LangChainis emadokumendi retriiveri kasutamiseks installige lihtsalt moodulid ja seadistage OpenAI keskkond, kasutades selle API-võtit. Pärast seda importige LangChainist vajalikud teegid põhidokumendi taastaja kasutamiseks ja laadige seejärel mudeli dokumendid. Kasutaja saab kasutada põhidokumente kogu dokumendina või suure osana ja saada päringu abil väiksema osa. Selles postituses on käsitletud põhidokumendi retriiveri kasutamise protsessi LangChainis.