Dette innlegget vil demonstrere prosessen med å bruke den overordnede dokumenthenteren i LangChain.
Hvordan bruke en overordnet Document Retriever i LangChain?
Overordnet dokumenthenting i LangChain kan brukes ved å dele opp dokumentene i mindre biter, slik at de ikke mister sin mening i øyeblikket av innbygging. Det overordnede dokumentet kan sies å være hele dokumentet eller den større delen som de mindre delene er hentet fra.
For å lære prosessen med å bruke den overordnede dokumenthenteren i LangChain, sjekk ut denne veiledningen:
Trinn 1: Installer moduler
Først begynner du å bruke den overordnede dokumenthenteren ved å installere LangChain-rammeverket ved å bruke pip-kommandoen:
pip installer langkjede
Installer Chroma-databasemodulen for å lagre innebyggingen av dokumentet og hente data fra det:
pip installer chromadb
For å installere tiktoken som er en tokenizer som henter tokenene til dokumentet ved å lage små biter:
pip installer tiktoken
Få OpenAI-modulen ved å utføre følgende kommando på Python-notisboken for å få dens avhengigheter og biblioteker:
pip installer openai
Trinn 2: Konfigurer miljø og last opp data
Neste steg er å sette opp miljøet ved å bruke API-nøkkelen fra OpenAI-kontoen:
import duimport få pass
du . omtrent [ 'OPENAI_API_KEY' ] = få pass . få pass ( 'OpenAI API Key:' )
Last opp dokumentene fra det lokale systemet etter å ha importert filbiblioteket, og ring deretter upload()-metoden:
fra Google. ET AL import filerlastet opp = filer. laste opp ( )
Trinn 3: Importer biblioteker
Det neste trinnet inneholder koden for å importere de nødvendige bibliotekene for bruk av overordnede dokumenthentere ved å bruke LangChain-rammeverket:
fra langkjede. retrievere import ParentDocumentRetrieverfra langkjede. vektorbutikker import Chroma
fra langkjede. innebygginger import ÅpneAIEbeddings
fra langkjede. tekstsplitter import RecursiveCharacterTextSplitter
fra langkjede. Oppbevaring import InMemoryStore
fra langkjede. document_loaders import TextLoader
Last inn dokumentet for å bygge retrieveren ved å bruke TextLoader()-metodene med banen til filene:
lastere = [TextLoader ( 'Data.txt' ) ,
TextLoader ( «state_of_the_union.txt» ) ,
]
dokumenter = [ ]
til l i lastere:
Trinn 4: Henting av fullstendige dokumenter
Når dokumentene/filene er lastet inn i modellen, bygger du enkelt innbyggingene av dokumentene og lagrer dem i vektorlagrene:
barnesplitter = RecursiveCharacterTextSplitter ( chunk_size = 400 )vectorstore = Chroma (
samlingsnavn = 'full_dokumenter' ,
embedding_function = ÅpneAIEbeddings ( )
)
butikk = InMemoryStore ( )
retriever = ParentDocumentRetriever (
vectorstore = vectorstore ,
lege = butikk ,
barnesplitter = barnesplitter ,
)
Nå kaller du add_documents()-metoden ved å bruke retrieveren for å få retrieveren til dokumentene:
retriever. add_documents ( dokumenter , ids = Ingen )Følgende kode trekker ut innbyggingene av dokumentene som er lagret i databasen for de opplastede filene:
liste ( butikk. yield_keys ( ) )
Etter å ha fått innbyggingene av dokumentene, kaller du similarity_search()-metoden med spørringen for å få de små bitene fra dokumentet:
sub_docs = vectorstore. likhetssøk ( 'rettferdighetsbrygger' )Kall print()-metoden for å vise bitene kalt i forrige kode basert på spørringen:
skrive ut ( sub_docs [ 0 ] . side_innhold )
Kall funksjonen komplett retriever() for å få alle tokens lagret i databasen ved å bruke følgende kode:
hentet_dokumenter = retriever. få_relevante_dokumenter ( 'rettferdighetsbrygger' )Å skrive ut alle dokumentene vil ta enorm tid og prosesseringskraft, så bare få lengden på dokumenter som er hentet tidligere:
bare ( hentet_dokumenter [ 0 ] . side_innhold )
Trinn 5: Henting av større biter
Dette trinnet vil ikke ta hele dokumentet; men det ville ta en større jordekorn fra dokumentet og hente en mindre del fra det:
parent_splitter = RecursiveCharacterTextSplitter ( chunk_size = 2000 )barnesplitter = RecursiveCharacterTextSplitter ( chunk_size = 400 )
vectorstore = Chroma ( samlingsnavn = 'delte_foreldre' , embedding_function = ÅpneAIEbeddings ( ) )
butikk = InMemoryStore ( )
Konfigurer retrieveren for å få det mindre tokenet fra det enorme datautvalget som er lagret i ' vectorstore variabel:
retriever = ParentDocumentRetriever (vectorstore = vectorstore ,
lege = butikk ,
barnesplitter = barnesplitter ,
parent_splitter = parent_splitter ,
)
Ring retrieveren for å få de større delene fra vektorlagrene ved å bruke dokumenter variabel i argumentet til funksjonen:
retriever. add_documents ( dokumenter )Få lengden på disse dokumentene fra dokumenter variabel via kommandoen nedenfor:
bare ( liste ( butikk. yield_keys ( ) ) )
Bare få en mindre del fra en større, da forrige skjermbilde viser at det er 23 dokumenter lagret i vektorlageret. Spørringen brukes til å få de relevante dataene ved hjelp av likhetssøk() metode for å hente data fra vektorlageret:
sub_docs = vectorstore. likhetssøk ( 'rettferdighetsbrygger' )Skriv ut de mindre delene ved å bruke spørringen nevnt i forrige kode for å vise dem på skjermen:
skrive ut ( sub_docs [ 0 ] . side_innhold )
Bruk nå henteren på hele datasettet som er lagret i databasen ved å bruke spørringen som argumentet for funksjonen:
hentet_dokumenter = retriever. få_relevante_dokumenter ( 'rettferdighetsbrygger' )Få lengden på de komplette delene som er opprettet og lagret i databasen:
bare ( hentet_dokumenter [ 0 ] . side_innhold )
Vi kan ikke vise alle bitene, men den første delen med indeksnummeret 0 vises med følgende kode:
skrive ut ( hentet_dokumenter [ 0 ] . side_innhold
Det handler om prosessen med å bruke den overordnede dokumenthenteren i LangChain.
Konklusjon
For å bruke den overordnede dokumenthenteren i LangChain, installer ganske enkelt modulene og sett opp OpenAI-miljøet ved hjelp av API-nøkkelen. Deretter importerer du de nødvendige bibliotekene fra LangChain for bruk av den overordnede dokumenthenteren, og laster deretter inn dokumentene for modellen. Brukeren kan bruke overordnede dokumenter som hele dokumentet eller den store delen og få en mindre del ved å bruke spørringen. Dette innlegget har utdypet prosessen med å bruke den overordnede dokumenthenteren i LangChain.