Jak používat Parent Document Retriever v LangChain?

Jak Pouzivat Parent Document Retriever V Langchain



Framework LangChain umožňuje vývojářům vytvářet velké jazykové modely, které dokážou porozumět a generovat text v přirozeném jazyce. Modely LangChain jsou trénovány na obrovském množství dat, takže model může porozumět jazyku uložením dat do vektorových úložišť. Umožňuje také uživateli vytvářet retrievery, které mohou extrahovat data z databáze nebo vektorových úložišť se všemi daty uloženými pro model.

Tento příspěvek demonstruje proces použití nadřazeného vyhledávání dokumentů v LangChain.

Jak používat rodičovský dokument Retriever v LangChain?

Nadřazený nástroj pro vyhledávání dokumentů v LangChain lze použít rozdělením dokumentů na menší části, aby neztratily svůj význam v okamžicích vkládání. O nadřazeném dokumentu lze říci, že je to celý dokument nebo větší část, ze které jsou extrahovány menší části.







Chcete-li se naučit proces používání nadřazeného nástroje pro vyhledávání dokumentů v LangChain, podívejte se na tuto příručku:



Krok 1: Nainstalujte moduly



Nejprve začněte používat nadřazený nástroj pro získávání dokumentů instalací rámce LangChain pomocí příkazu pip:





pip install langchain

Nainstalujte si databázový modul Chroma pro uložení vložení dokumentu a načtení dat z něj:



pip install chromadb

Chcete-li nainstalovat tiktoken, což je tokenizér, který získává tokeny dokumentu vytvářením malých částí:

pip nainstalovat tiktoken

Získejte modul OpenAI spuštěním následujícího příkazu na notebooku Python, abyste získali jeho závislosti a knihovny:

pip install openai

Krok 2: Nastavení prostředí a nahrání dat

Dalším krokem je nastavit prostředí pomocí klíče API z účtu OpenAI:

import vy
import getpass

vy . přibližně [ 'OPENAI_API_KEY' ] = getpass . getpass ( 'Klíč OpenAI API:' )

Nyní po importu knihovny souborů nahrajte dokumenty z místního systému a poté zavolejte metodu upload():

z Google. ET AL import soubory
nahráno = soubory. nahrát ( )

Krok 3: Import knihoven

Další krok obsahuje kód pro import požadovaných knihoven pro použití nadřazených retrieverů dokumentů pomocí frameworku LangChain:

z langchain. retrívři import ParentDocumentRetriever
z langchain. vectorstores import Chroma
z langchain. vložení import OpenAIEmbeddings
z langchain. text_splitter import RecursiveCharacterTextSplitter
z langchain. úložný prostor import InMemoryStore
z langchain. nakladače dokumentů import TextLoader

Načtěte dokument a vytvořte retriever pomocí metod TextLoader() s cestou k souborům:

nakladače = [
TextLoader ( 'data.txt' ) ,
TextLoader ( 'state_of_the_union.txt' ) ,
]
docs = [ ]
pro l v nakladače:

Krok 4: Načtení kompletních dokumentů

Jakmile jsou dokumenty/soubory načteny do modelu, jednoduše vytvořte vložení dokumentů a uložte je do vektorových úložišť:

child_splitter = RecursiveCharacterTextSplitter ( chunk_size = 400 )

vectorstore = Chroma (
název_kolekce = 'full_documents' ,
funkce vkládání = OpenAIEmbeddings ( )
)

obchod = InMemoryStore ( )
retriever = ParentDocumentRetriever (
vectorstore = vectorstore ,
lékárna = obchod ,
child_splitter = child_splitter ,
)

Nyní zavolejte metodu add_documents() pomocí retrieveru, aby se retriever dostal do dokumentů:

retriever. přidat_dokumenty ( docs , ids = Žádný )

Následující kód extrahuje vložení dokumentů, které byly uloženy v databázi pro nahrané soubory:

seznam ( obchod. výnos_klíče ( ) )

Po získání vložení dokumentů zavolejte metodu podobnosti_search() s dotazem, abyste získali malé kousky z dokumentu:

sub_docs = vectorstore. podobnostní_hledání ( 'spravedlnost breyer' )

Voláním metody print() zobrazíte bloky volané v předchozím kódu na základě dotazu:

tisk ( sub_docs [ 0 ] . obsah_stránky )

Voláním funkce complete retriever() získáte všechny tokeny uložené v databázi pomocí následujícího kódu:

retrieved_docs = retriever. získat_relevantní_dokumenty ( 'spravedlnost breyer' )

Tisk všech dokumentů by zabral obrovský čas a výpočetní výkon, takže jednoduše získejte délku dříve načtených dokumentů:

jen ( retrieved_docs [ 0 ] . obsah_stránky )

Krok 5: Načítání větších kusů

Tento krok nezabere celý dokument; nicméně z dokumentu by se vzal větší chipmunk a načetl by se z něj menší kus:

rodič_rozdělovač = RecursiveCharacterTextSplitter ( chunk_size = 2000 )
child_splitter = RecursiveCharacterTextSplitter ( chunk_size = 400 )
vectorstore = Chroma ( název_kolekce = 'rozdělení_rodiče' , funkce vkládání = OpenAIEmbeddings ( ) )
obchod = InMemoryStore ( )

Nakonfigurujte retriever tak, aby získal menší token z obrovského fondu dat uložených v „ vectorstore 'proměnná:

retriever = ParentDocumentRetriever (
vectorstore = vectorstore ,
lékárna = obchod ,
child_splitter = child_splitter ,
rodič_rozdělovač = rodič_rozdělovač ,
)

Zavolejte retrívra, abyste získali větší kusy z vektorových skladů pomocí docs proměnná v argumentu funkce:

retriever. přidat_dokumenty ( docs )

Získejte délku těchto dokumentů z docs proměnnou pomocí níže uvedeného příkazu:

jen ( seznam ( obchod. výnos_klíče ( ) ) )

Jednoduše získejte menší část z větší, protože předchozí snímek obrazovky ukazuje, že ve vektorovém úložišti je uloženo 23 dokumentů. Dotaz se používá k získání relevantních dat pomocí podobnostní_hledání() metoda pro načtení dat z úložiště vektorů:

sub_docs = vectorstore. podobnostní_hledání ( 'spravedlnost breyer' )

Vytiskněte menší kousky pomocí dotazu uvedeného v předchozím kódu, abyste je zobrazili na obrazovce:

tisk ( sub_docs [ 0 ] . obsah_stránky )

Nyní použijte retriever na kompletní datovou sadu uloženou v databázi pomocí dotazu jako argumentu funkce:

retrieved_docs = retriever. získat_relevantní_dokumenty ( 'spravedlnost breyer' )

Získejte délku vytvořených a uložených kompletních bloků v databázi:

jen ( retrieved_docs [ 0 ] . obsah_stránky )

Nemůžeme zobrazit všechny bloky, ale první blok s indexovým číslem 0 je zobrazen pomocí následujícího kódu:

tisk ( retrieved_docs [ 0 ] . obsah_stránky

To je vše o procesu použití nadřazeného vyhledávání dokumentů v LangChain.

Závěr

Chcete-li v LangChain používat nadřazený dokumentový retriever, jednoduše nainstalujte moduly a nastavte prostředí OpenAI pomocí jeho klíče API. Poté importujte požadované knihovny z LangChain pro použití nadřazeného nástroje pro získávání dokumentů a poté načtěte dokumenty pro model. Uživatel může použít nadřazené dokumenty jako celý dokument nebo velký blok a pomocí dotazu získat menší blok. Tento příspěvek rozvedl proces použití nadřazeného vyhledávání dokumentů v LangChain.