Buforowanie to proces przechowywania i pobierania najnowszych lub często używanych danych z modelu, dzięki czemu nie trzeba ich za każdym razem przeliczać. Osadzanie tekstu można wykorzystać do konwersji danych tekstowych na liczby, a zastosowanie do nich technik buforowania może poprawić wydajność modelu. LangChain umożliwia programistom budowanie modelu buforowania przy użyciu biblioteki CacheBackedEmbeddings.
W tym poście zaprezentowany zostanie proces pracy z buforowaniem w LangChain.
Jak pracować z buforowaniem w LangChain?
Buforowanie w LangChain w modelach osadzania tekstu może być wykorzystywane przy użyciu różnych zestawów danych, np. przy użyciu magazynu wektorów, danych w pamięci lub danych z systemów plików. Zastosowanie metod pamięci podręcznej może szybko uzyskać wyniki, a model może skuteczniej zastosować wyszukiwanie podobieństw w danych.
Aby poznać proces pracy z buforowaniem w LangChain, wystarczy wykonać poniższe kroki:
Krok 1: Zainstaluj moduły
Najpierw rozpocznij proces pracy z buforowaniem, instalując wymagane modele. Pierwszym z nich jest LangChain, który zawiera wszystkie wymagane biblioteki do procesu:
pypeć zainstalować łańcuch językowy
Moduł FAISS jest wymagany do przeprowadzenia wyszukiwania podobieństwa w celu wyodrębnienia lub wygenerowania wyniku na podstawie danych wejściowych dostarczonych przez użytkownika:
pypeć zainstalować faiss-gpu
Ostatnim modułem tego przewodnika, który należy zainstalować, jest OpenAI, którego można używać do tworzenia osadzania danych za pomocą metody OpenAIEmbeddings():
pypeć zainstalować otwórz
Po zainstalowaniu wszystkich modułów wystarczy skonfigurować środowisko za pomocą klucza API ze środowiska OpenAI za pomocą przycisku „ Ty ' I ' przejść dalej ”biblioteki:
importuj naszaimportuj getpass
os.środowisko [ „OPENAI_API_KEY” ] = getpass.getpass ( „Klucz API OpenAI:” )
Krok 2: Importowanie bibliotek
Po zakończeniu konfiguracji po prostu zaimportuj biblioteki do pracy z technikami buforowania w LangChain:
z langchain.embeddings importuj CacheBackedEmbeddings
z langchain.storage zaimportuj LocalFileStore
z langchain.embeddings importuj OpenAIEmbeddings
z langchain.document_loaders zaimportuj TextLoader
z langchain.embeddings.openai zaimportuj OpenAIEmbeddings
z langchain.text_splitter zaimportuj CharacterTextSplitter
z langchain.vectorstores importuj FAISS
Krok 3: Budowa modelu buforowania
Po zaimportowaniu bibliotek wystarczy wywołać metodę OpenAIEmbeddings(), aby zbudować model i zapisać go w zmiennej:
Teraz zastosuj pamięć podręczną za pomocą metod LocalFileStore() i metod CacheBackedEmbeddings() z wieloma argumentami:
fs = LocalFileStore ( './Pamięć podręczna/' )cached_embedder = CacheBackedEmbeddings.from_bytes_store (
basic_embeddings, fs, przestrzeń nazw =podstawowy_embeddings.model
)
Po prostu pobierz listę osadzania i na razie lista jest pusta, ponieważ osadzania nie są przechowywane na liście:
lista ( fs.yield_keys ( ) )
Krok 4: Tworzenie sklepu wektorowego
Pobierz plik z systemu lokalnego, korzystając z biblioteki plików i kliknij przycisk „ Wybierz pliki ” po wykonaniu kodu:
przesłane = pliki.przesłane ( )
Teraz po prostu utwórz składnicę wektorów, w której można przechowywać elementy osadzone, korzystając z metody TextLoader() z nazwą dokumentu. Następnie zastosuj metody rozdzielania tekstu z rozmiarem fragmentów i podziel dane na mniejsze fragmenty:
raw_documents = Moduł ładujący tekst ( „stan_związku.txt” ) .obciążenie ( )text_splitter = CharacterTextSplitter ( rozmiar_porcji = 1000 , chunk_overlap = 0 )
dokumenty = tekst_rozdzielacz.split_dokumenty ( surowe_dokumenty )
Po podzieleniu tekstu zapisz dane w formacie pierś zmienna przy użyciu biblioteki FAISS, aby uzyskać wynik za pomocą metody wyszukiwania podobieństwa:
db = FAISS.from_documents ( dokumenty, cached_embedder )
Teraz ponownie uzyskaj listę osadzania po zapisaniu ich w bazie danych i ogranicz dane wyjściowe tylko do 5 indeksów:
lista ( fs.yield_keys ( ) ) [ : 5 ]
Krok 5: Korzystanie z buforowania w pamięci
Następnego buforowania można użyć za pomocą metod InMemoryStore() w celu zdefiniowania zmiennej przechowującej:
Zbuduj model buforowania przy użyciu metod OpenAIEmbeddings() i CacheBackedEmbeddings() z parametrami modelu, magazynu i przestrzeni nazw:
bazowe_embeddings = OpenAIEmbeddings ( )embedder = CacheBackedEmbeddings.from_bytes_store (
basic_embeddings, sklep, przestrzeń nazw =podstawowy_embeddings.model
)
Zastosuj osadzanie w przechowywanym dokumencie bez korzystania z osadzania w pamięci podręcznej w celu pobrania danych z dokumentu:
osadzanie = embedder.embed_documents ( [ 'Witam' , 'do widzenia' ] )Teraz zastosuj pamięć podręczną do osadzania, aby szybko pobrać dane z dokumentów:
embeddings_from_cache = embedder.embed_documents ( [ 'Witam' , 'do widzenia' ] )Zapisz osadzania pamięci podręcznej w zmiennej embeddings, aby zmienna embeddings przechowywała osadzania w pamięci podręcznej:
osadzania == osadzania_z_cache
Krok 6: Korzystanie z buforowania systemu plików
Ostatnia metoda zastosowania buforowania w osadzeniu z dokumentu test_cache przy użyciu magazynu systemu plików:
Zastosuj osadzanie za pomocą metody CacheBackedEmbeddings() z modelem osadzania, magazynem danych i przestrzenią nazw jako parametrami:
embedder2 = CacheBackedEmbeddings.from_bytes_store (basic_embeddings, fs, przestrzeń nazw =podstawowy_embeddings.model
)
Użyj zmiennej embeddings z przechowywanymi w niej danymi w pamięci podręcznej, aby wywołać metodę embedder():
osadzania = embedder2.embed_documents ( [ 'Witam' , 'do widzenia' ] )Teraz zdobądź osady dla powyższych dwóch światów wymienionych jako parametry:
lista ( fs.yield_keys ( ) )
To wszystko na temat procesu budowania i pracy z buforowaniem w LangChain.
Wniosek
Aby pracować z technikami buforowania przy osadzaniu w LangChain, po prostu pobierz wymagane moduły za pomocą polecenia pip, np. FAISS, OpenAI itp. Następnie zaimportuj biblioteki do budowania i pracy z buforowaniem w LangChain. Skutecznie pobiera osady przechowywane w różnych sklepach. Programiści mogą używać wielu sklepów jako baz danych do przechowywania osadzonych elementów, takich jak magazyny wektorowe, systemy plików lub magazyny w pamięci. W tym przewodniku przedstawiono proces pracy z buforowaniem w LangChain.