Jak pracować z buforowaniem w LangChain?

Jak Pracowac Z Buforowaniem W Langchain



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 nas
zaimportuj 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.storage import InMemoryStore
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:

bazowe_embeddings = OpenAIEmbeddings ( )

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:

z plików importowych google.colab
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:

sklep = InMemoryStore ( )

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:

fs = LocalFileStore ( „./test_cache/” )

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.