Dette indlæg vil demonstrere processen med at bruge retrievere i LangChain.
Hvordan bruger man retrievere i LangChain?
Retrievere fungerer som grænsefladen mellem modeller og mennesker, så de kan bruge det til at få det ønskede output ved hjælp af input på naturlige sprog. Vektorlagre bruges til at gemme data, som kan bruges til at hente/udtrække information/data fra.
Dog er retrieverne mere generelle end disse databaser. De gemmer ingen data og bruges kun til at hente eller hente data til brugerne. For at lære processen med at bygge og bruge retrieverne gennem LangChain, se på følgende trin:
Trin 1: Installer moduler
Først skal du installere de nødvendige moduler som LangChain for at få dets biblioteker og afhængigheder til at fortsætte med processen:
pip installere langkæde
Installer chromadb vektorlager, som kan bruges til at database data, så retrieveren kan hente data fra butikken:
pip installere chromadb
Installer nu OpenAI framework for at få dets biblioteker til at bruge tekstindlejring, før du bygger en retriever:
pip installere openai
Når du har installeret alle de nødvendige moduler, skal du blot opsætte miljøet ved hjælp af OpenAI API-nøglen:
import osimportere getpass
os.miljø [ 'OPENAI_API_KEY' ] = getpass.getpass ( 'OpenAI API-nøgle:' )
Trin 2: Upload datasæt
Udfør nu følgende kode for at klikke på 'Vælg filer' knappen og upload dokumentet eller filen fra det lokale system:
uploadet = filer.upload ( )
Trin 3: Importer biblioteker
Importer de nødvendige biblioteker for at bygge og bruge retrieverne i LangChain såsom ' Liste ', ' Tilbagekald ', og mange flere:
fra at skrive import Enhver, Liste
fra langchain.schema importer dokument
fra langchain.callbacks.manager importer tilbagekald
Trin 4: Opret One Line Index Creation
Dette trin opretter indekset for retrieveren, der kan bruges til at få dataene til at danne vektorlageret ved at importere de nødvendige biblioteker:
fra langchain.llms importer OpenAI
Her skal du indlæse data ved hjælp af TextLoader() metode med stien til filen uploadet i trin 2:
importer TextLoader fra langchain.document_loadersloader = TextLoader ( 'state_of_the_union.txt' , indkodning = 'utf8' )
Importer bibliotek VectorstoreIndexCreator fra LangChain for at bygge et indeks til databasen:
importer VectorstoreIndexCreator fra langchain.indexesDefiner indeks variabel ved hjælp af VectorstoreIndexCreator()-metoden ved hjælp af læsser variabel:
index = VectorstoreIndexCreator ( ) .from_loaders ( [ læsser ] )Anvend forespørgslen til at teste indekset ved at hente data fra dokumentet:
forespørgsel = 'Hvad sagde præsidenten Zelenskyy i sin tale'indeks.forespørgsel ( forespørgsel )
Få detaljerne i indekset om, hvilken database der har indeks ved hjælp af følgende kode:
index.vectorstoreFølgende kode vil forklare alle detaljer om indekset, dets type og database:
index.vectorstore.as_retriever ( )
Brug metoden indeks med query() til at bede om et resumé af dokumentet ved hjælp af kildeargumentet for at bruge navnet på dokumentet:
indeks.forespørgsel ( 'Generelt resumé af data fra dette dokument' , retriever_kwargs = { 'search_kwargs' : { 'filter' : { 'kilde' : 'state_of_the_union.txt' } } } )
Trin 5: Opret indlejringer
Indlæs dokumentet for at skabe dets indlejring, og gem teksten i den numeriske form ved hjælp af vektorlageret:
Start processen med at indlejre ved hjælp af tekstsplitter med chunks størrelse og overlap argumenter:
fra langchain.text_splitter importer CharacterTextSplitter#using text_splitter til at oprette små bidder af dokumentet for at bruge retriever
text_splitter = CharacterTextSplitter ( chunk_size = 1000 , chunk_overlap = 0 )
tekster = text_splitter.split_documents ( Dokumenter )
Anvend OpenAIEmbeddings() metode, der kan importeres fra LangChain:
fra langchain.embeddings importer OpenAIEmbeddingsindlejringer = OpenAIEembeddings ( )
Brug chromadb-lageret til at gemme de indlejringer, der er oprettet fra dokumentet:
fra langchain.vectorstores importerer Chromadb = Chroma.from_documents ( tekster, indlejringer )
Trin 6: Test Retrieveren
Når indlejringerne er oprettet og gemt i databasen, skal du blot definere retrievervariablen:
Kald kæderne ved hjælp af RetrievalQA()-metoden med OpenAI()-funktionen og retriever som dens argumenter:
qa = RetrievalQA.from_chain_type ( llm =ÅbenAI ( ) , kæde_type = 'ting og sager' , retriever =retriever )Angiv input til at teste retrieveren ved hjælp af forespørgsel variabel inde i qa.run() metoden:
forespørgsel = 'Hvad sagde præsidenten Zelenskyy i sin tale'qa.run ( forespørgsel )
Du skal blot tilpasse VectorstoreIndexCreator () ved at bruge sine argumenter til at indstille forskellige værdier:
index_creator = VectorstoreIndexCreator (vectorstore_cls =Chroma,
indlejring =OpenAIE-indlejringer ( ) ,
tekstsplitter =Tegntekstsplitter ( chunk_size = 1000 , chunk_overlap = 0 )
)
Det handler om processen med at komme i gang med retrievere i LangChain.
Konklusion
For at bruge retrieverne i LangChain skal du blot installere de afhængigheder, der kræves for at opsætte OpenAI-miljøet og derefter uploade dokumentet for at teste retrieverne. Derefter skal du bygge retrieveren ved hjælp af en abstrakt basisklasse eller ABC-bibliotek og derefter oprette indekset til databasen for at hente dataene. Konfigurer indlejringerne for dokumentet og kør retrieveren for at få sammenlignelige resultater fra databasen. Dette indlæg har uddybet processen med at bruge retrieverne i LangChain.