Predmemoriranje je proces pohranjivanja i dohvaćanja najnovijih ili često korištenih podataka iz modela tako da se ne moraju cijelo vrijeme ponovno izračunavati. Tekstualne ugradnje mogu se koristiti za pretvaranje tekstualnih podataka u brojeve, a primjenom tehnika predmemoriranja na njih može se poboljšati učinkovitost modela. LangChain omogućuje programerima da izgrade model predmemoriranja pomoću biblioteke CacheBackedEmbeddings.
Ovaj će post demonstrirati proces rada s predmemoriranjem u LangChainu.
Kako raditi s predmemoriranjem u LangChainu?
Predmemoriranje u LangChainu na modelima za ugrađivanje teksta može se koristiti putem različitih skupova podataka poput korištenja vektorske pohrane, podataka u memoriji ili podataka iz datotečnih sustava. Primjenom metoda predmemorije može se brzo dobiti izlaz, a model može učinkovitije primijeniti pretraživanja sličnosti podataka.
Da biste naučili proces rada s predmemoriranjem u LangChainu, jednostavno prođite kroz navedene korake:
Korak 1: Instalirajte module
Prvo započnite proces rada s predmemoriranjem instaliranjem potrebnih modela, prvi ovdje je LangChain koji sadrži sve potrebne biblioteke za proces:
pip instalirati langchain
Modul FAISS potreban je za izvođenje pretrage sličnosti za izdvajanje ili generiranje izlaza na temelju unosa koje daje korisnik:
pip instalirati faiss-gpu
Posljednji modul za ovaj vodič koji je potrebno instalirati je OpenAI koji se može koristiti za stvaranje umetanja podataka pomoću metode OpenAIEmbeddings():
pip instalirati openai
Nakon instalacije svih modula, jednostavno postavite okruženje pomoću API ključa iz okruženja OpenAI koristeći ' vas ' i ' getpass ” knjižnice:
uvezi nasimport getpass
os.okolina [ 'OPENAI_API_KEY' ] = getpass.getpass ( 'OpenAI API ključ:' )
Korak 2: Uvoz biblioteka
Nakon što je postavljanje dovršeno, jednostavno uvezite biblioteke za rad s tehnikama predmemoriranja u LangChain:
iz langchain.embeddings uvozi CacheBackedEmbeddings
iz langchain.storage uvoz LocalFileStore
iz langchain.embeddings uvozi OpenAIEmbeddings
iz langchain.document_loaders uvesti TextLoader
iz langchain.embeddings.openai uvozi OpenAIEmbeddings
iz langchain.text_splitter uvozi CharacterTextSplitter
iz langchain.vectorstores uvoz FAISS
Korak 3: Izrada modela predmemoriranja
Nakon uvoza biblioteka, jednostavno pozovite metodu OpenAIEmbeddings() da biste izgradili model i pohranili ga u varijablu:
Sada primijenite predmemoriju pomoću metode LocalFileStore() i metode CacheBackedEmbeddings() s višestrukim argumentima:
fs = LocalFileStore ( './cache/' )cached_embedder = CacheBackedEmbeddings.from_bytes_store (
temeljne_ugradnje, fs, imenski prostor =podložne_ugradnje.model
)
Jednostavno nabavite popis ugrađivanja i za sada je popis prazan jer ugrađivanja nisu pohranjena na popisu:
popis ( fs.ključevi_prinosa ( ) )
Korak 4: Stvaranje vektorske trgovine
Preuzmite datoteku iz lokalnog sustava pomoću biblioteke datoteka i kliknite na ' Odaberite Datoteke ” nakon izvršavanja koda:
učitano = datoteke.upload ( )
Sada jednostavno stvorite vektorsku pohranu koja se može koristiti za pohranjivanje umetanja pomoću metode TextLoader() s nazivom dokumenta. Nakon toga primijenite metode razdjelnika teksta s veličinom dijelova i podijelite podatke u manje dijelove:
raw_documents = TextLoader ( 'state_of_the_union.txt' ) .opterećenje ( )text_splitter = CharacterTextSplitter ( veličina_komadka = 1000 , komad_preklapanja = 0 )
dokumenti = text_splitter.split_documents ( sirovi_dokumenti )
Nakon razdvajanja teksta, pohranite podatke u db varijablu pomoću FAISS biblioteke da biste dobili izlaz pomoću metode pretraživanja sličnosti:
db = FAISS.iz_dokumenata ( dokumenti, cached_embedder )
Sada ponovno dohvatite popis ugrađivanja nakon što ih pohranite u bazu podataka i ograničite izlaz na samo 5 indeksa:
popis ( fs.ključevi_prinosa ( ) ) [ : 5 ]
Korak 5: Korištenje predmemorije u memoriji
Sljedeće predmemoriranje može se koristiti kroz metode InMemoryStore() za definiranje varijable pohrane:
Izgradite model predmemoriranja pomoću metoda OpenAIEmbeddings() i CacheBackedEmbeddings() s modelom, pohranom i prostorom naziva kao parametrima:
underlying_embeddings = OpenAIEembeddings ( )embedder = CacheBackedEmbeddings.from_bytes_store (
temeljne_ugradnje, pohrana, imenski prostor =podložne_ugradnje.model
)
Primijenite ugradnje na pohranjeni dokument bez upotrebe umetanja predmemorije da biste dobili podatke iz dokumenta:
embeddings = embedder.embed_documents ( [ 'zdravo' , 'Doviđenja' ] )Sada primijenite predmemoriju na ugradnje kako biste brzo dohvatili podatke iz dokumenata:
embeddings_from_cache = embedder.embed_documents ( [ 'zdravo' , 'Doviđenja' ] )Pohranite predmemorirana ugrađivanja u varijablu ugrađivanja tako da varijabla ugrađivanja ima pohranjena predmemorirana ugrađivanja:
embeddings == embeddings_from_cache
Korak 6: Korištenje predmemorije sustava datoteka
Posljednja metoda za primjenu predmemoriranja u ugrađivanjima iz dokumenta test_cache pomoću Store System File:
Primijenite ugradnje pomoću metode CacheBackedEmbeddings() s modelom ugradnje, pohranom podataka i prostorom imena kao parametrima:
embedder2 = CacheBackedEmbeddings.from_bytes_store (temeljne_ugradnje, fs, imenski prostor =podložne_ugradnje.model
)
Upotrijebite varijablu ugrađivanja s predmemoriranim podacima pohranjenim u njoj za poziv metode embedder():
ugradnje = embedder2.embed_documents ( [ 'zdravo' , 'Doviđenja' ] )Sada nabavite ugradnje za gornja dva svijeta spomenuta kao parametri:
popis ( fs.ključevi_prinosa ( ) )
To je sve o procesu izgradnje i rada s predmemoriranjem u LangChainu.
Zaključak
Za rad s tehnikama predmemoriranja za ugradnje u LangChain jednostavno nabavite potrebne module pomoću naredbe pip kao što su FAISS, OpenAI itd. Nakon toga uvezite biblioteke za izgradnju i rad s predmemoriranjem u LangChainu. Učinkovito pohranjuje ugradnje u različitim trgovinama. Programeri mogu koristiti više pohrana kao baze podataka za pohranu umetanja poput vektorskih pohrana, datotečnih sustava ili pohrana u memoriji. Ovaj vodič demonstrira proces rada s predmemorijom u LangChainu.