Bagaimana untuk Bekerja Dengan Caching dalam LangChain?

Bagaimana Untuk Bekerja Dengan Caching Dalam Langchain



Caching ialah proses menyimpan dan mengambil data terbaharu atau paling kerap digunakan daripada model supaya ia tidak perlu dikira semula sepanjang masa. Pembenaman teks boleh digunakan untuk menukar data teks kepada nombor dan menggunakan teknik caching padanya boleh meningkatkan kecekapan model. LangChain membolehkan pembangun membina model caching menggunakan perpustakaan CacheBackedEmbeddings.

Siaran ini akan menunjukkan proses bekerja dengan caching dalam LangChain.







Bagaimana untuk Bekerja Dengan Caching dalam LangChain?

Caching dalam LangChain pada model pembenaman teks boleh digunakan melalui set data yang berbeza seperti menggunakan stor vektor, data Dalam memori atau data daripada sistem fail. Menggunakan kaedah cache boleh mendapatkan output dengan cepat dan model boleh menggunakan carian persamaan pada data dengan lebih berkesan.



Untuk mempelajari proses bekerja dengan caching dalam LangChain, hanya melalui langkah-langkah yang disenaraikan:



Langkah 1: Pasang Modul
Mula-mula, mulakan proses bekerja dengan caching dengan memasang model yang diperlukan yang pertama di sini ialah LangChain yang mengandungi semua perpustakaan yang diperlukan untuk proses tersebut:





pip pasang langchain

Modul FAISS diperlukan untuk melakukan carian persamaan untuk mengekstrak atau menjana output berdasarkan input yang disediakan oleh pengguna:



pip pasang faiss-gpu

Modul terakhir untuk panduan ini yang perlu dipasang ialah OpenAI yang boleh digunakan untuk membuat pembenaman data menggunakan kaedah OpenAIEmbeddings():

pip pasang openai

Selepas pemasangan semua modul, hanya sediakan persekitaran menggunakan kunci API daripada persekitaran OpenAI menggunakan ' awak ” dan “ getpass ” perpustakaan:

import kami
import getpass

os.environ [ 'OPENAI_API_KEY' ] = getpass.getpass ( 'OpenAI API Key:' )

Langkah 2: Mengimport Perpustakaan
Setelah persediaan selesai, hanya import perpustakaan untuk bekerja dengan teknik caching dalam LangChain:

daripada langchain.storage import InMemoryStore
daripada langchain.embeddings import CacheBackedEmbeddings
daripada langchain.storage import LocalFileStore
daripada langchain.embeddings import OpenAIEmbeddings
daripada langchain.document_loaders import TextLoader
daripada langchain.embeddings.openai import OpenAIEmbeddings
daripada langchain.text_splitter import CharacterTextSplitter
daripada langchain.vectorstores import FAISS

Langkah 3: Membina Model Caching
Selepas mengimport perpustakaan, hanya panggil kaedah OpenAIEmbeddings() untuk membina model dan menyimpannya dalam pembolehubah:

underlying_embeddings = OpenAIEmbeddings ( )

Sekarang, gunakan cache menggunakan kaedah LocalFileStore() dan kaedah CacheBackedEmbeddings() dengan berbilang argumen:

fs = LocalFileStore ( './cache/' )

cached_embedder = CacheBackedEmbeddings.from_bytes_store (
underlying_embeddings, fs, ruang nama =underlying_embeddings.model
)

Hanya dapatkan senarai benam dan buat masa ini, senarai itu kosong kerana benam tidak disimpan dalam senarai:

senarai ( fs.yield_keys ( ) )

Langkah 4: Mencipta Kedai Vektor
Dapatkan fail daripada sistem tempatan menggunakan perpustakaan fail dan klik pada “ Pilih Fail ” selepas melaksanakan kod:

daripada fail import google.colab
dimuat naik = files.upload ( )

Sekarang, cuma buat kedai vektor yang boleh digunakan untuk menyimpan benam menggunakan kaedah TextLoader() dengan nama dokumen. Selepas itu, gunakan kaedah pemisah teks dengan saiz ketulan dan bahagikan data kepada ketulan yang lebih kecil:

raw_documents = TextLoader ( 'state_of_the_union.txt' ) .muat ( )
text_splitter = CharacterTextSplitter ( saiz_ketulan = 1000 , chunk_overlap = 0 )
dokumen = text_splitter.split_documents ( raw_documents )

Selepas membelah teks, simpan data dalam db pembolehubah menggunakan perpustakaan FAISS untuk mendapatkan output menggunakan kaedah carian persamaan:

db = FAISS.from_documents ( dokumen, cached_embedder )

Sekarang, sekali lagi dapatkan senarai benam selepas menyimpannya dalam pangkalan data dan hadkan output kepada hanya 5 indeks:

senarai ( fs.yield_keys ( ) ) [ : 5 ]

Langkah 5: Menggunakan Caching Dalam Memori
Caching seterusnya boleh digunakan melalui kaedah InMemoryStore() untuk menentukan pembolehubah stor:

kedai = InMemoryStore ( )

Bina model caching menggunakan kaedah OpenAIEmbeddings() dan CacheBackedEmbeddings() dengan model, stor dan ruang nama sebagai parameternya:

underlying_embeddings = OpenAIEmbeddings ( )
embedder = CacheBackedEmbeddings.from_bytes_store (
underlying_embeddings, kedai, ruang nama =underlying_embeddings.model
)

Gunakan benam pada dokumen yang disimpan tanpa menggunakan benam cache untuk mendapatkan data daripada dokumen:

benam = embedder.embed_documents ( [ 'hello' , 'selamat tinggal' ] )

Sekarang, gunakan cache pada benam untuk mengambil data dengan cepat daripada dokumen:

embeddings_from_cache = embedder.embed_documents ( [ 'hello' , 'selamat tinggal' ] )

Simpan pembenaman cache kepada pembolehubah pembenaman supaya pembolehubah pembenaman mempunyai pembenaman cache yang disimpan:

embeddings == embeddings_from_cache

Langkah 6: Menggunakan Caching Sistem Fail
Kaedah terakhir untuk menggunakan caching dalam embeddings daripada dokumen test_cache menggunakan Kedai Sistem Fail:

fs = LocalFileStore ( './test_cache/' )

Gunakan pembenaman menggunakan kaedah CacheBackedEmbeddings() dengan model pembenaman, stor data dan ruang nama sebagai parameter:

embedder2 = CacheBackedEmbeddings.from_bytes_store (
underlying_embeddings, fs, ruang nama =underlying_embeddings.model
)

Gunakan pembolehubah embeddings dengan data cache yang disimpan di dalamnya untuk memanggil kaedah embedder():

benam = embedder2.embed_documents ( [ 'hello' , 'selamat tinggal' ] )

Sekarang dapatkan embeddings untuk dua dunia di atas yang disebut sebagai parameter:

senarai ( fs.yield_keys ( ) )

Itu semua tentang proses membina dan bekerja dengan caching dalam LangChain.

Kesimpulan

Untuk bekerja dengan teknik caching untuk pembenaman dalam LangChain, cuma dapatkan modul yang diperlukan menggunakan arahan pip seperti FAISS, OpenAI, dll. Selepas itu, import perpustakaan untuk membina dan bekerja dengan caching dalam LangChain. Ia cekap mendapatkan benam yang disimpan di kedai yang berbeza. Pembangun boleh menggunakan berbilang kedai sebagai pangkalan data untuk menyimpan pembenaman seperti stor vektor, Sistem Fail atau stor Dalam memori. Panduan ini menunjukkan proses bekerja dengan caching dalam LangChain.