W tym poście zademonstrujemy proces korzystania z narzędzia do pobierania dokumentów nadrzędnych w LangChain.
Jak korzystać z narzędzia do pobierania dokumentów nadrzędnych w LangChain?
Funkcja wyszukiwania dokumentów nadrzędnych w LangChain może zostać wykorzystana poprzez podzielenie dokumentów na mniejsze części, dzięki czemu nie stracą one znaczenia w momencie osadzania. Można powiedzieć, że dokumentem nadrzędnym jest cały dokument lub większa część, z której wyodrębnione są mniejsze fragmenty.
Aby poznać proces korzystania z modułu pobierania dokumentów nadrzędnych w LangChain, po prostu zapoznaj się z tym przewodnikiem:
Krok 1: Zainstaluj moduły
Najpierw zacznij korzystać z narzędzia do pobierania dokumentów nadrzędnych, instalując framework LangChain za pomocą polecenia pip:
pip zainstaluj langchain
Zainstaluj moduł bazy danych Chroma, aby zapisać osadzenia dokumentu i pobrać z niego dane:
pip zainstaluj chromadb
Aby zainstalować tiktoken, który jest tokenizerem pobierającym tokeny dokumentu poprzez tworzenie małych fragmentów:
pip zainstaluj tiktoken
Pobierz moduł OpenAI, wykonując następujące polecenie w notatniku Pythona, aby uzyskać jego zależności i biblioteki:
pip zainstaluj openai
Krok 2: Skonfiguruj środowisko i prześlij dane
Następnym krokiem jest skonfiguruj środowisko za pomocą klucza API z konta OpenAI:
import Tyimport przejść dalej
Ty . około [ „OPENAI_API_KEY” ] = przejść dalej . przejść dalej ( „Klucz API OpenAI:” )
Teraz prześlij dokumenty z systemu lokalnego po zaimportowaniu biblioteki plików, a następnie wywołaj metodę upload():
z Google. i wsp import aktazaładowany = akta. wgrywać ( )
Krok 3: Importuj biblioteki
Następny krok zawiera kod umożliwiający import wymaganych bibliotek do korzystania z narzędzi do pobierania dokumentów nadrzędnych przy użyciu frameworka LangChain:
z łańcuch językowy. retrievery import RodzicDocumentRetrieverz łańcuch językowy. sklepy wektorowe import Chroma
z łańcuch językowy. osadzania import OpenAIEmbeddings
z łańcuch językowy. rozdzielacz tekstu import Rekurencyjny rozdzielacz tekstu znaków
z łańcuch językowy. składowanie import w sklepie pamięci
z łańcuch językowy. ładowarki_dokumentów import Moduł ładujący tekst
Załaduj dokument, aby zbudować moduł pobierania, korzystając z metod TextLoader() i podając ścieżkę do plików:
ładowarki = [Moduł ładujący tekst ( „Dane.txt” ) ,
Moduł ładujący tekst ( „stan_związku.txt” ) ,
]
dokumenty = [ ]
Do l W ładowarki:
Krok 4: Odzyskiwanie kompletnych dokumentów
Po załadowaniu dokumentów/plików do modelu po prostu zbuduj osady dokumentów i przechowuj je w magazynach wektorów:
dziecko_rozdzielacz = Rekurencyjny rozdzielacz tekstu znaków ( rozmiar_porcji = 400 )sklep wektorowy = Chroma (
nazwa_kolekcji = „pełne_dokumenty” ,
funkcja osadzania = OpenAIEmbeddings ( )
)
sklep = w sklepie pamięci ( )
aporter = RodzicDocumentRetriever (
sklep wektorowy = sklep wektorowy ,
sklep z dokumentami = sklep ,
dziecko_rozdzielacz = dziecko_rozdzielacz ,
)
Teraz wywołaj metodę add_documents() za pomocą modułu pobierającego, aby pobrać moduł pobierający do dokumentów:
aporter. dodaj_dokumenty ( dokumenty , identyfikatory = Nic )Poniższy kod wyodrębnia osadzone dokumenty, które zostały zapisane w bazie danych dla przesłanych plików:
lista ( sklep. klucze_zysku ( ) )
Po pobraniu osadzonych dokumentów wywołaj metodę podobieństwa_search() z zapytaniem, aby pobrać małe fragmenty z dokumentu:
pod_dokumenty = sklep wektorowy. wyszukiwanie_podobieństwa ( „breyer sprawiedliwości” )Wywołaj metodę print(), aby wyświetlić fragmenty wywołane w poprzednim kodzie na podstawie zapytania:
wydrukować ( pod_dokumenty [ 0 ] . zawartość strony )
Wywołaj pełną funkcję retriever(), aby pobrać wszystkie tokeny przechowywane w bazie danych, używając następującego kodu:
pobrane_dokumenty = aporter. pobierz_relevant_documents ( „breyer sprawiedliwości” )Drukowanie wszystkich dokumentów zajęłoby mnóstwo czasu i mocy obliczeniowej, więc po prostu sprawdź długość dokumentów pobranych wcześniej:
tylko ( pobrane_dokumenty [ 0 ] . zawartość strony )
Krok 5: Pobieranie większych kawałków
Ten krok nie obejmie całego dokumentu; jednakże wymagałoby to pobrania większej wiewiórki z dokumentu i pobrania z niej mniejszego fragmentu:
rodzic_rozdzielacz = Rekurencyjny rozdzielacz tekstu znaków ( rozmiar_porcji = 2000 )dziecko_rozdzielacz = Rekurencyjny rozdzielacz tekstu znaków ( rozmiar_porcji = 400 )
sklep wektorowy = Chroma ( nazwa_kolekcji = „podzieleni_rodzice” , funkcja osadzania = OpenAIEmbeddings ( ) )
sklep = w sklepie pamięci ( )
Skonfiguruj moduł pobierania tak, aby uzyskać mniejszy token z ogromnej puli danych przechowywanych w „ sklep wektorowy ' zmienny:
aporter = RodzicDocumentRetriever (sklep wektorowy = sklep wektorowy ,
sklep z dokumentami = sklep ,
dziecko_rozdzielacz = dziecko_rozdzielacz ,
rodzic_rozdzielacz = rodzic_rozdzielacz ,
)
Zadzwoń do retrievera, aby uzyskać większe kawałki ze sklepów wektorowych za pomocą dokumenty zmienna w argumencie funkcji:
aporter. dodaj_dokumenty ( dokumenty )Uzyskaj długość tych dokumentów z dokumenty zmienna za pomocą poniższego polecenia:
tylko ( lista ( sklep. klucze_zysku ( ) ) )
Po prostu uzyskaj mniejszy fragment z większego, ponieważ poprzedni zrzut ekranu pokazuje, że w magazynie wektorów przechowywane są 23 dokumenty. Zapytanie służy do uzyskania odpowiednich danych za pomocą metody podobieństwo_wyszukiwania() metoda pobierania danych z magazynu wektorów:
pod_dokumenty = sklep wektorowy. wyszukiwanie_podobieństwa ( „breyer sprawiedliwości” )Wydrukuj mniejsze fragmenty, korzystając z zapytania wspomnianego w poprzednim kodzie, aby wyświetlić je na ekranie:
wydrukować ( pod_dokumenty [ 0 ] . zawartość strony )
Teraz użyj modułu pobierającego na pełnym zestawie danych przechowywanym w bazie danych, używając zapytania jako argumentu funkcji:
pobrane_dokumenty = aporter. pobierz_relevant_documents ( „breyer sprawiedliwości” )Uzyskaj długość całych fragmentów utworzonych i przechowywanych w bazie danych:
tylko ( pobrane_dokumenty [ 0 ] . zawartość strony )
Nie możemy wyświetlić wszystkich fragmentów, ale pierwszy fragment o numerze indeksu 0 jest wyświetlany przy użyciu następującego kodu:
wydrukować ( pobrane_dokumenty [ 0 ] . zawartość strony
To wszystko, jeśli chodzi o proces korzystania z narzędzia do pobierania dokumentów nadrzędnych w LangChain.
Wniosek
Aby skorzystać z narzędzia do wyszukiwania dokumentów nadrzędnych w LangChain, wystarczy zainstalować moduły i skonfigurować środowisko OpenAI przy użyciu jego klucza API. Następnie zaimportuj wymagane biblioteki z LangChain w celu użycia narzędzia do pobierania dokumentów nadrzędnych, a następnie załaduj dokumenty dla modelu. Użytkownik może używać dokumentów nadrzędnych jako całego dokumentu lub dużej części i uzyskać mniejszą część za pomocą zapytania. W tym poście szczegółowo omówiono proces korzystania z narzędzia do pobierania dokumentów nadrzędnych w LangChain.