Ako používať Parent Document Retriever v LangChain?

Ako Pouzivat Parent Document Retriever V Langchain



Rámec LangChain umožňuje vývojárom vytvárať veľké jazykové modely, ktoré dokážu porozumieť a generovať text v prirodzenom jazyku. Modely LangChain sú trénované na veľkom množstve údajov, takže model dokáže porozumieť jazyku ukladaním údajov do vektorových obchodov. Umožňuje tiež používateľovi zostavovať retrievery, ktoré dokážu extrahovať údaje z databázy alebo vektorových úložísk so všetkými údajmi uloženými pre model.

Tento príspevok bude demonštrovať proces používania nadradeného nástroja na vyhľadávanie dokumentov v LangChain.

Ako používať rodičovský dokumentový retriever v LangChain?

Nadradený nástroj na vyhľadávanie dokumentov v LangChain možno použiť tak, že dokumenty rozdelíte na menšie časti, aby nestratili svoj význam v momente vloženia. O rodičovskom dokumente možno povedať, že je to celý dokument alebo väčšia časť, z ktorej sa extrahujú menšie časti.







Ak sa chcete naučiť proces používania nadradeného nástroja na vyhľadávanie dokumentov v LangChain, jednoducho si pozrite túto príručku:



Krok 1: Nainštalujte moduly



Najprv začnite používať nadradený nástroj na vyhľadávanie dokumentov inštaláciou rámca LangChain pomocou príkazu pip:





pip install langchain

Nainštalujte databázový modul Chroma na uloženie vloženia dokumentu a načítanie údajov z neho:



pip install chromadb

Ak chcete nainštalovať tiktoken, čo je tokenizér, ktorý získava tokeny dokumentu vytvorením malých častí:

pip nainštalovať tiktoken

Získajte modul OpenAI vykonaním nasledujúceho príkazu na notebooku Python, aby ste získali jeho závislosti a knižnice:

pip install openai

Krok 2: Nastavenie prostredia a odovzdanie údajov

Ďalším krokom je nastaviť prostredie pomocou kľúča API z účtu OpenAI:

importovať vy
importovať getpass

vy . približne [ 'OPENAI_API_KEY' ] = getpass . getpass ( 'OpenAI API Key:' )

Teraz nahrajte dokumenty z lokálneho systému po importovaní knižnice súborov a potom zavolajte metódu upload():

od google. ET AL importovať súbory
nahrané = súbory. nahrať ( )

Krok 3: Importujte knižnice

Ďalší krok obsahuje kód na import požadovaných knižníc na používanie nadradených nástrojov na vyhľadávanie dokumentov pomocou rámca LangChain:

od langchain. retrieverov importovať ParentDocumentRetriever
od langchain. vectorstores importovať Chroma
od langchain. vsadenia importovať OpenAIEmbeddings
od langchain. text_splitter importovať RecursiveCharacterTextSplitter
od langchain. skladovanie importovať InMemoryStore
od langchain. nakladače dokumentov importovať TextLoader

Načítajte dokument na vytvorenie retrievera pomocou metód TextLoader() s cestou k súborom:

nakladače = [
TextLoader ( 'Data.txt' ) ,
TextLoader ( 'state_of_the_union.txt' ) ,
]
dokumenty = [ ]
pre l v nakladače:

Krok 4: Získanie kompletných dokumentov

Po načítaní dokumentov/súborov do modelu jednoducho vytvorte vloženia dokumentov a uložte ich do vektorových úložísk:

child_splitter = RecursiveCharacterTextSplitter ( chunk_size = 400 )

vectorstore = Chroma (
názov_kolekcie = 'full_documents' ,
embedding_function = OpenAIEmbeddings ( )
)

obchod = InMemoryStore ( )
retriever = ParentDocumentRetriever (
vectorstore = vectorstore ,
lekáreň = obchod ,
child_splitter = child_splitter ,
)

Teraz zavolajte metódu add_documents() pomocou retrievera, aby ste ho dostali k dokumentom:

retriever. pridať_dokumenty ( dokumenty , ids = žiadne )

Nasledujúci kód extrahuje vloženie dokumentov, ktoré boli uložené v databáze pre nahrané súbory:

zoznam ( obchod. výnos_kľúče ( ) )

Po získaní vložených dokumentov zavolajte metódu podobnosti_search() s dotazom, aby ste získali malé časti z dokumentu:

sub_docs = vectorstore. podobnosti_vyhľadávanie ( 'spravodlivosť Breyer' )

Zavolaním metódy print() zobrazíte časti volané v predchádzajúcom kóde na základe dotazu:

vytlačiť ( sub_docs [ 0 ] . obsah_stránky )

Zavolaním funkcie complete retriever() získate všetky tokeny uložené v databáze pomocou nasledujúceho kódu:

retrieved_docs = retriever. získať_relevantné_dokumenty ( 'spravodlivosť Breyer' )

Tlač všetkých dokumentov by zabrala obrovský čas a výkon spracovania, takže jednoducho získajte dĺžku predtým získaných dokumentov:

len ( retrieved_docs [ 0 ] . obsah_stránky )

Krok 5: Získanie väčších kusov

Tento krok nezaberie celý dokument; avšak z dokumentu by sa vybral väčší veverička a načítal by sa z neho menší kus:

parent_splitter = RecursiveCharacterTextSplitter ( chunk_size = 2000 )
child_splitter = RecursiveCharacterTextSplitter ( chunk_size = 400 )
vectorstore = Chroma ( názov_kolekcie = 'split_parents' , embedding_function = OpenAIEmbeddings ( ) )
obchod = InMemoryStore ( )

Nakonfigurujte retriever tak, aby získal menší token z obrovského súboru údajov uložených v „ vectorstore ” premenná:

retriever = ParentDocumentRetriever (
vectorstore = vectorstore ,
lekáreň = obchod ,
child_splitter = child_splitter ,
parent_splitter = parent_splitter ,
)

Zavolajte retrievera, aby ste získali väčšie kusy z vektorových skladov pomocou dokumenty premenná v argumente funkcie:

retriever. pridať_dokumenty ( dokumenty )

Získajte dĺžku týchto dokumentov z dokumenty premennej pomocou nižšie uvedeného príkazu:

len ( zoznam ( obchod. výnos_kľúče ( ) ) )

Jednoducho získajte menší kus z väčšieho, pretože predchádzajúca snímka obrazovky ukazuje, že vo vektorovom obchode je uložených 23 dokumentov. Dotaz sa používa na získanie relevantných údajov pomocou podobnosti_vyhľadávanie() metóda na získanie údajov z vektorového úložiska:

sub_docs = vectorstore. podobnosti_vyhľadávanie ( 'spravodlivosť Breyer' )

Vytlačte menšie kúsky pomocou dotazu uvedeného v predchádzajúcom kóde, aby ste ich zobrazili na obrazovke:

vytlačiť ( sub_docs [ 0 ] . obsah_stránky )

Teraz použite retriever na kompletnú množinu údajov uloženú v databáze pomocou dotazu ako argumentu funkcie:

retrieved_docs = retriever. získať_relevantné_dokumenty ( 'spravodlivosť Breyer' )

Získajte dĺžku úplných častí vytvorených a uložených v databáze:

len ( retrieved_docs [ 0 ] . obsah_stránky )

Nemôžeme zobraziť všetky bloky, ale prvý blok s indexovým číslom 0 sa zobrazí pomocou nasledujúceho kódu:

vytlačiť ( retrieved_docs [ 0 ] . obsah_stránky

To je všetko o procese používania nadradeného nástroja na vyhľadávanie dokumentov v LangChain.

Záver

Ak chcete použiť nadradený nástroj na vyhľadávanie dokumentov v LangChain, jednoducho nainštalujte moduly a nastavte prostredie OpenAI pomocou jeho kľúča API. Potom naimportujte potrebné knižnice z LangChain na používanie nadradeného nástroja na vyhľadávanie dokumentov a potom načítajte dokumenty pre model. Používateľ môže použiť nadradené dokumenty ako celý dokument alebo ako veľkú časť a pomocou dotazu získať menšiu časť. Tento príspevok rozpracoval proces používania nadradeného nástroja na vyhľadávanie dokumentov v LangChain.