Hoe gebruik ik de bovenliggende documentretriever in LangChain?

Hoe Gebruik Ik De Bovenliggende Documentretriever In Langchain



Met het LangChain-framework kunnen ontwikkelaars grote taalmodellen bouwen die tekst in natuurlijke taal kunnen begrijpen en genereren. De LangChain-modellen zijn getraind op een enorme hoeveelheid gegevens, zodat het model de taal kan begrijpen door de gegevens in vectoropslag op te slaan. Het stelt de gebruiker ook in staat om retrievers te bouwen die gegevens uit de database of vectoropslag kunnen extraheren met alle gegevens die voor het model zijn opgeslagen.

Dit bericht demonstreert het proces van het gebruik van de bovenliggende documentretriever in LangChain.

Hoe gebruik ik een bovenliggende documentretriever in LangChain?

De bovenliggende documentretriever in LangChain kan worden gebruikt door de documenten in kleinere stukken te splitsen, zodat ze hun betekenis niet verliezen op het moment van insluiting. Van het bovenliggende document kan worden gezegd dat het het hele document is of het grotere deel waaruit de kleinere delen worden gehaald.







Bekijk deze handleiding om het proces van het gebruik van de bovenliggende documentretriever in LangChain te leren:



Stap 1: Modules installeren



Begin eerst met het gebruiken van de bovenliggende documentretriever door het LangChain-framework te installeren met behulp van de pip-opdracht:





pip installeer langchain

Installeer de Chroma-databasemodule om de insluitingen van het document op te slaan en er gegevens uit op te halen:



pip installeer chromadb

Tiktoken installeren, een tokenizer die de tokens van het document verkrijgt door kleine stukjes te maken:

pip installeer tiktoken

Haal de OpenAI-module op door de volgende opdracht uit te voeren op het Python-notebook om de afhankelijkheden en bibliotheken op te halen:

pip installeer openai

Stap 2: Omgeving instellen en gegevens uploaden

De volgende stap is om de omgeving opzetten met behulp van de API-sleutel van het OpenAI-account:

importeren Jij
importeren Krijg een pas

Jij . ongeveer [ 'OPENAI_API_KEY' ] = Krijg een pas . Krijg een pas ( 'OpenAI API-sleutel:' )

Upload nu de documenten van het lokale systeem na het importeren van de bestandsbibliotheek en roep vervolgens de upload() -methode aan:

van googlen. EN AL importeren bestanden
geüpload = bestanden. uploaden ( )

Stap 3: Bibliotheken importeren

De volgende stap bevat de code voor het importeren van de vereiste bibliotheken voor het gebruik van de bovenliggende documentretrievers met behulp van het LangChain-framework:

van langketen. retrievers importeren ParentDocumentRetriever
van langketen. vectorwinkels importeren Chroma
van langketen. inbedding importeren OpenAIE-inbedding
van langketen. tekst_splitter importeren RecursieveCharacterTextSplitter
van langketen. opslag importeren InMemoryStore
van langketen. document_laders importeren Tekstlader

Laad het document om de retriever te bouwen met behulp van de TextLoader()-methoden met het pad van de bestanden:

laders = [
Tekstlader ( 'Data.txt' ) ,
Tekstlader ( 'staat_van_de_union.txt' ) ,
]
documenten = [ ]
voor l in laders:

Stap 4: Volledige documenten ophalen

Zodra de documenten/bestanden in het model zijn geladen, bouwt u eenvoudigweg de inbedding van de documenten en slaat u deze op in de vectoropslag:

kind_splitter = RecursieveCharacterTextSplitter ( formaat van een blokje = 400 )

vectorwinkel = Chroma (
collectienaam = 'volledige_documenten' ,
inbedding_functie = OpenAIE-inbedding ( )
)

winkel = InMemoryStore ( )
terugvinder = ParentDocumentRetriever (
vectorwinkel = vectorwinkel ,
docstore = winkel ,
kind_splitter = kind_splitter ,
)

Roep nu de methode add_documents() aan met behulp van de retriever om de retriever naar de documenten te krijgen:

terugvinder. voeg_documenten toe ( documenten , ID's = Geen )

De volgende code extraheert de insluitingen van de documenten die in de database zijn opgeslagen voor de geüploade bestanden:

lijst ( winkel. opbrengst_sleutels ( ) )

Nadat u de insluitingen van de documenten heeft verkregen, roept u de methode 'similarity_search()' aan met de query om de kleine stukjes uit het document te halen:

sub_docs = vectorwinkel. gelijkenis_zoeken ( 'gerechtigheid Breyer' )

Roep de methode print() aan om de chunks weer te geven die in de vorige code zijn aangeroepen op basis van de query:

afdrukken ( sub_docs [ 0 ] . pagina inhoud )

Roep de volledige functie retriever() aan om alle tokens op te halen die in de database zijn opgeslagen met behulp van de volgende code:

opgehaalde_docs = terugvinder. get_relevante_documenten ( 'gerechtigheid Breyer' )

Het afdrukken van alle documenten zou enorm veel tijd en verwerkingskracht vergen. Zoek dus eenvoudigweg de lengte van de eerder opgehaalde documenten:

alleen ( opgehaalde_docs [ 0 ] . pagina inhoud )

Stap 5: Grotere brokken ophalen

Deze stap beslaat niet het hele document; er zou echter een grotere aardeekhoorn uit het document nodig zijn en er een kleiner deel uit halen:

ouder_splitter = RecursieveCharacterTextSplitter ( formaat van een blokje = 2000 )
kind_splitter = RecursieveCharacterTextSplitter ( formaat van een blokje = 400 )
vectorwinkel = Chroma ( collectienaam = 'split_parents' , inbedding_functie = OpenAIE-inbedding ( ) )
winkel = InMemoryStore ( )

Configureer de retriever om het kleinere token te halen uit de enorme hoeveelheid gegevens die zijn opgeslagen in de “ vectorwinkel ”variabele:

terugvinder = ParentDocumentRetriever (
vectorwinkel = vectorwinkel ,
docstore = winkel ,
kind_splitter = kind_splitter ,
ouder_splitter = ouder_splitter ,
)

Roep de retriever op om de grotere stukken uit de vectoropslag te halen met behulp van de documenten variabele in het argument van de functie:

terugvinder. voeg_documenten toe ( documenten )

Haal de lengte van deze documenten op uit de documenten variabele via het onderstaande commando:

alleen ( lijst ( winkel. opbrengst_sleutels ( ) ) )

Haal eenvoudigweg een kleiner deel uit een groter deel, aangezien de vorige schermafbeelding laat zien dat er 23 documenten zijn opgeslagen in de vectoropslag. De query wordt gebruikt om de relevante gegevens te verkrijgen met behulp van de gelijkenis_zoeken() methode om gegevens uit het vectorarchief op te halen:

sub_docs = vectorwinkel. gelijkenis_zoeken ( 'gerechtigheid Breyer' )

Druk de kleinere stukjes af met behulp van de query uit de vorige code om ze op het scherm weer te geven:

afdrukken ( sub_docs [ 0 ] . pagina inhoud )

Gebruik nu de retriever op de volledige dataset die in de database is opgeslagen, waarbij u de query als argument van de functie gebruikt:

opgehaalde_docs = terugvinder. get_relevante_documenten ( 'gerechtigheid Breyer' )

Haal de lengte op van de volledige chunks die zijn gemaakt en opgeslagen in de database:

alleen ( opgehaalde_docs [ 0 ] . pagina inhoud )

We kunnen niet alle chunks weergeven, maar het eerste chunk met indexnummer 0 wordt weergegeven met de volgende code:

afdrukken ( opgehaalde_docs [ 0 ] . pagina inhoud

Dat gaat allemaal over het proces van het gebruik van de bovenliggende documentretriever in LangChain.

Conclusie

Om de parent document retriever in LangChain te gebruiken, installeert u eenvoudigweg de modules en stelt u de OpenAI-omgeving in met behulp van de API-sleutel. Importeer daarna de vereiste bibliotheken uit LangChain voor gebruik van de bovenliggende documentretriever en laad vervolgens de documenten voor het model. De gebruiker kan bovenliggende documenten gebruiken als het hele document of als een groot deel en een kleiner deel verkrijgen met behulp van de query. In dit bericht wordt dieper ingegaan op het proces van het gebruik van de bovenliggende documentretriever in LangChain.