Questo post dimostrerà il processo di utilizzo dei retriever in LangChain.
Come utilizzare i retriever in LangChain?
I retriever fungono da interfaccia tra i modelli e gli esseri umani in modo che possano utilizzarlo per ottenere l'output desiderato utilizzando l'input fornito nei linguaggi naturali. Gli archivi vettoriali vengono utilizzati per archiviare dati che possono essere utilizzati per ottenere/estrarre informazioni/dati.
Tuttavia, i retriever sono più generali di questi database. Non memorizzano alcun dato e vengono utilizzati solo per ottenere o recuperare dati per gli utenti. Per apprendere il processo di creazione e utilizzo dei retriever tramite LangChain, osserva i seguenti passaggi:
Passaggio 1: installare i moduli
Innanzitutto, installa i moduli richiesti come LangChain per far sì che le sue librerie e dipendenze continuino con il processo:
pip installare langchain
Installa l'archivio vettoriale chromadb che può essere utilizzato per i dati del database affinché il retriever possa recuperare i dati dall'archivio:
pip installare chromadb
Ora installa il framework OpenAI per ottenere le sue librerie per utilizzare l'incorporamento del testo prima di creare un retriever:
pip installare openai
Dopo aver installato tutti i moduli richiesti, è sufficiente configurare l'ambiente utilizzando la chiave API OpenAI:
importaciimporta getpass
os.ambiente [ 'OPENAI_API_KEY' ] = getpass.getpass ( 'Chiave API OpenAI:' )
Passaggio 2: carica il set di dati
Ora esegui il seguente codice per fare clic su 'Scegliere i file' pulsante e caricare il documento o il file dal sistema locale:
caricato = file.caricato ( )
Passaggio 3: importare librerie
Importa le librerie richieste per creare e utilizzare i retriever in LangChain come ' Elenco ', ' Richiamate ', e molti altri:
digitando import Any, List
dal documento di importazione langchain.schema
da langchain.callbacks.manager importa callback
Passaggio 4: creazione della creazione di un indice su una riga
Questo passaggio crea l'indice per il retriever che può essere utilizzato per ottenere i dati per formare l'archivio vettoriale importando le librerie richieste:
da langchain.llms importa OpenAI
Qui, carica i dati utilizzando il file Caricatore di testo() metodo con il percorso del file caricato nel passaggio 2:
importa TextLoader da langchain.document_loaderscaricatore = Caricatore di testo ( 'stato_dell'unione.txt' , codifica = 'utf8' )
Importa libreria VectorstoreIndexCreator da LangChain per creare un indice per il database:
importa VideostoreIndexCreator da langchain.indexesDefinire il indice variabile utilizzando il metodo VideostoreIndexCreator() utilizzando il metodo caricatore variabile:
indice =VectorstoreIndexCreator ( ) .from_loaders ( [ caricatore ] )Applica la query per testare l'indice recuperando i dati dal documento:
domanda = 'Cosa ha detto il presidente Zelenskyj nel suo discorso'indice.query ( domanda )
Ottieni i dettagli dell'indice su quale database ha il file indice utilizzando il seguente codice:
indice.vettorestoreIl seguente codice spiegherà tutti i dettagli sull'indice, il suo tipo e il database:
Index.Vectorstore.as_retriever ( )
Utilizza il metodo index with query() chiedendo il riepilogo del documento utilizzando l'argomento source per utilizzare il nome del documento:
indice.query ( 'Riepilogo generale dei dati di questo documento' , retriever_kwargs = { 'search_kwargs' : { 'filtro' : { 'fonte' : 'stato_dell_unione.txt' } } } )
Passaggio 5: crea incorporamenti
Carica il documento per crearne l'incorporamento e memorizza il testo in forma numerica utilizzando l'archivio vettoriale:
Avviare il processo di incorporamento utilizzando il file text_splitter con gli argomenti relativi alla dimensione dei blocchi e alla sovrapposizione:
da langchain.text_splitter importa CharacterTextSplitter#usando text_splitter per creare piccole parti del documento da usare retriever
text_splitter = CarattereTextSplitter ( dimensione_pezzo = 1000 , blocco_sovrapposizione = 0 )
testi = testo_splitter.split_documents ( documenti )
Applica il metodo OpenAIEmbeddings() che può essere importato da LangChain:
da langchain.embeddings importa OpenAIEmbeddingsincorporamenti = OpenAIEembeddings ( )
Utilizza lo store chromadb per archiviare gli incorporamenti creati dal documento:
da langchain.Vectorstores importa Chromadb = Chroma.from_documents ( testi, incorporamenti )
Passaggio 6: testare il retriever
Una volta creati e archiviati gli incorporamenti nel database, è sufficiente definire la variabile retriever:
Chiama le catene utilizzando il metodo RetrievalQA() con la funzione OpenAI() e retriever come argomenti:
qa = RecuperoQA.da_tipo_catena ( llm =ApriAI ( ) , tipo_catena = 'cose' , documentalista =recuperatore )Fornire l'input per testare il retriever utilizzando il file domanda variabile all'interno del metodo qa.run():
domanda = 'Cosa ha detto il presidente Zelenskyj nel suo discorso'qa.run ( domanda )
Personalizza semplicemente il VectorstoreIndexCreator () utilizzando i suoi argomenti per impostare valori diversi:
creatore_indice = CreatoreIndiceVettore (vectorstore_cls =Croma,
incorporamento =OpenAIEmbeddings ( ) ,
text_splitter =Divisore testocarattere ( dimensione_pezzo = 1000 , pezzo_sovrapposizione = 0 )
)
Questo è tutto incentrato sul processo per iniziare con i retriever in LangChain.
Conclusione
Per utilizzare i retriever in LangChain è sufficiente installare le dipendenze necessarie per configurare l'ambiente OpenAI e quindi caricare il documento per testare i retriever. Successivamente, crea il retriever utilizzando una classe base astratta o una libreria ABC e quindi crea l'indice affinché il database recuperi i dati. Configura gli incorporamenti per il documento ed esegui il retriever per ottenere risultati comparabili dal database. Questo post ha elaborato il processo di utilizzo dei retriever in LangChain.