W tym poście zademonstrujemy proces używania retrieverów w LangChain.
Jak używać Retrieverów w LangChain?
Retrievery działają jako interfejs między modelami a ludźmi, dzięki czemu mogą go używać do uzyskania pożądanych wyników, korzystając z danych wejściowych dostarczonych w językach naturalnych. Magazyny wektorowe służą do przechowywania danych, z których można uzyskać/wydobyć informacje/dane.
Jednak retrievery są bardziej ogólne niż te bazy danych. Nie przechowują żadnych danych i służą wyłącznie do uzyskania lub odzyskania danych dla użytkowników. Aby poznać proces budowania i używania retrieverów poprzez LangChain, spójrz na następujące kroki:
Krok 1: Zainstaluj moduły
Najpierw zainstaluj wymagane moduły, takie jak LangChain, aby uzyskać biblioteki i zależności umożliwiające kontynuację procesu:
pypeć zainstalować łańcuch językowy
Zainstaluj magazyn wektorów chromadb, którego można użyć do przechowywania danych w bazie danych dla modułu pobierającego w celu pobrania danych ze sklepu:
pypeć zainstalować chromadb
Teraz zainstaluj framework OpenAI, aby uzyskać biblioteki umożliwiające osadzanie tekstu przed zbudowaniem modułu pobierającego:
pypeć zainstalować otwórz
Po zainstalowaniu wszystkich wymaganych modułów wystarczy skonfigurować środowisko za pomocą klucza OpenAI API:
importuj naszaimportuj getpass
os.środowisko [ „OPENAI_API_KEY” ] = getpass.getpass ( „Klucz API OpenAI:” )
Krok 2: Prześlij zbiór danych
Teraz wykonaj następujący kod, aby kliknąć plik 'Wybierz pliki' i prześlij dokument lub plik z systemu lokalnego:
przesłane = pliki.przesłane ( )
Krok 3: Importuj biblioteki
Zaimportuj wymagane biblioteki, aby zbudować i używać modułów pobierających w LangChain, takich jak „ Lista „”, „ Oddzwonienia ', i wiele więcej:
po wpisaniu import Any, List
z dokumentu importu langchain.schema
z langchain.callbacks.manager importuj wywołania zwrotne
Krok 4: Utwórz utworzenie indeksu jednowierszowego
Ten krok tworzy indeks dla modułu pobierania, którego można użyć do pobrania danych w celu utworzenia magazynu wektorów poprzez zaimportowanie wymaganych bibliotek:
z langchain.llms importuje OpenAI
Tutaj załaduj dane za pomocą Moduł ładujący tekst() metodę ze ścieżką pliku przesłanego w kroku 2:
zaimportuj TextLoader z langchain.document_loadersmoduł ładujący = moduł ładujący tekst ( „stan_związku.txt” , kodowanie = „utf8” )
Importuj bibliotekę Kreator VectorstoreIndexCreator z LangChain, aby zbudować indeks dla bazy danych:
import VectorstoreIndexCreator z langchain.indexesZdefiniuj indeks zmienną przy użyciu metody VectorstoreIndexCreator() przy użyciu metody ładowarka zmienny:
indeks = VectorstoreIndexCreator ( ) .z_ładowarek ( [ ładowarka ] )Zastosuj zapytanie, aby przetestować indeks, pobierając dane z dokumentu:
zapytanie = „Co powiedział prezydent Zełenski w swoim przemówieniu”indeks.zapytanie ( zapytanie )
Uzyskaj szczegółowe informacje o indeksie, która baza danych zawiera indeks używając następującego kodu:
indeks.vectorstorePoniższy kod wyjaśni wszystkie szczegóły dotyczące indeksu, jego typu i bazy danych:
indeks.vectorstore.as_retriever ( )
Użyj indeksu z metodą query() prosząc o podsumowanie dokumentu, używając argumentu source, aby użyć nazwy dokumentu:
indeks.zapytanie ( „Ogólne podsumowanie danych z tego dokumentu” , retriever_kwargs = { 'search_kwargs' : { 'filtr' : { 'źródło' : „stan_związku.txt” } } } )
Krok 5: Utwórz osadzenie
Załaduj dokument, aby utworzyć jego osadzenie i zapisz tekst w formie numerycznej, korzystając z magazynu wektorów:
Rozpocznij proces osadzania za pomocą rozdzielacz tekstu z argumentami dotyczącymi rozmiaru porcji i nakładania się:
z langchain.text_splitter zaimportuj CharacterTextSplitter#używanie rozdzielacza tekstu do tworzenia małych fragmentów dokumentu do użycia przez narzędzie pobierające
text_splitter = CharacterTextSplitter ( rozmiar_porcji = 1000 , chunk_overlap = 0 )
teksty = tekst_rozdzielacz.split_dokumenty ( dokumenty )
Zastosuj metodę OpenAIEmbeddings(), którą można zaimportować z LangChain:
z langchain.embeddings importuj OpenAIEmbeddingsosadzania = OpenAIEembeddings ( )
Użyj magazynu chromadb do przechowywania osadzania utworzonego z dokumentu:
z langchain.vectorstores importuje Chromadb = Chroma.from_documents ( teksty, embedingi )
Krok 6: Przetestuj retrievera
Po utworzeniu osadów i zapisaniu ich w bazie danych wystarczy zdefiniować zmienną pobierającą:
Wywołuj łańcuchy za pomocą metody RetrievalQA() z funkcją OpenAI() i modułem pobierającym jako argumentami:
qa = PobieranieQA.from_chain_type ( llm =Otwórz AI ( ) , typ_łańcucha = 'rzeczy' , aporter = retriever )Podaj dane wejściowe, aby przetestować retriever za pomocą zapytanie zmienna wewnątrz metody qa.run():
zapytanie = „Co powiedział prezydent Zełenski w swoim przemówieniu”qa.run ( zapytanie )
Po prostu dostosuj Kreator VectorstoreIndexCreator () używając swoich argumentów do ustawiania różnych wartości:
Index_creator = VectorstoreIndexCreator (wektorstore_cls =Barwa,
osadzanie =OpenAIEmbeddings ( ) ,
rozdzielacz tekstu =Rozdzielacz tekstu znaku ( rozmiar_porcji = 1000 , chunk_overlap = 0 )
)
To wszystko, jeśli chodzi o proces rozpoczynania pracy z retrieverami w LangChain.
Wniosek
Aby używać retrieverów w LangChain, wystarczy zainstalować zależności wymagane do skonfigurowania środowiska OpenAI, a następnie przesłać dokument w celu przetestowania retrieverów. Następnie zbuduj moduł pobierania przy użyciu abstrakcyjnej klasy bazowej lub biblioteki ABC, a następnie utwórz indeks bazy danych w celu pobrania danych. Skonfiguruj osadzenie dokumentu i uruchom moduł pobierania, aby uzyskać porównywalne wyniki z bazy danych. W tym poście szczegółowo omówiono proces wykorzystania retrieverów w LangChain.