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ť vyimportovať 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úborynahrané = 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ť ParentDocumentRetrieverod 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.