Bagaimana Cara Bekerja Dengan Caching di LangChain?

Bagaimana Cara Bekerja Dengan Caching Di Langchain



Caching adalah proses menyimpan dan mengambil data terbaru atau yang sering digunakan dari model sehingga tidak perlu dihitung ulang setiap saat. Penyematan teks dapat digunakan untuk mengubah data tekstual menjadi angka dan menerapkan teknik caching dapat meningkatkan efisiensi model. LangChain memungkinkan pengembang untuk membangun model caching menggunakan perpustakaan CacheBackedEmbeddings.

Posting ini akan menunjukkan proses bekerja dengan caching di LangChain.







Bagaimana Cara Bekerja Dengan Caching di LangChain?

Caching di LangChain pada model penyematan teks dapat digunakan melalui kumpulan data yang berbeda seperti menggunakan penyimpanan vektor, data dalam memori, atau data dari sistem file. Menerapkan metode cache dapat memperoleh keluaran dengan cepat dan model dapat menerapkan pencarian kesamaan pada data dengan lebih efektif.



Untuk mempelajari proses bekerja dengan caching di LangChain, cukup lakukan langkah-langkah berikut:



Langkah 1: Instal Modul
Pertama, mulailah proses bekerja dengan caching dengan menginstal model yang diperlukan. Yang pertama di sini adalah LangChain yang berisi semua perpustakaan yang diperlukan untuk proses tersebut:





pip Install rantailang

Modul FAISS diperlukan untuk melakukan pencarian kesamaan untuk mengekstraksi atau menghasilkan keluaran berdasarkan masukan yang diberikan oleh pengguna:



pip Install faiss-gpu

Modul terakhir untuk panduan ini yang perlu dipasang adalah OpenAI yang dapat digunakan untuk membuat penyematan data menggunakan metode OpenAIEmbeddings():

pip Install terbuka

Setelah instalasi semua modul, cukup atur lingkungan menggunakan kunci API dari lingkungan OpenAI menggunakan “ Anda ' Dan ' dapatkan pass ” perpustakaan:

impor kami
impor getpass

os.lingkungan [ 'OPENAI_API_KEY' ] = getpass.getpass ( 'Kunci API OpenAI:' )

Langkah 2: Mengimpor Perpustakaan
Setelah pengaturan selesai, cukup impor perpustakaan untuk bekerja dengan teknik caching di LangChain:

dari langchain.storage impor InMemoryStore
dari langchain.embeddings impor CacheBackedEmbeddings
dari langchain.storage impor LocalFileStore
dari langchain.embeddings impor OpenAIEmbeddings
dari langchain.document_loaders impor TextLoader
dari langchain.embeddings.openai impor OpenAIEmbeddings
dari langchain.text_splitter impor CharacterTextSplitter
dari langchain.vectorstores impor FAISS

Langkah 3: Membangun Model Caching
Setelah mengimpor perpustakaan, cukup panggil metode OpenAIEmbeddings() untuk membangun model dan menyimpannya dalam variabel:

mendasari_embeddings = OpenAIEmbeddings ( )

Sekarang, terapkan cache menggunakan metode LocalFileStore() dan metode CacheBackedEmbeddings() dengan beberapa argumen:

fs = Penyimpanan File Lokal ( './cache/' )

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

Cukup ambil daftar penyematan dan untuk saat ini, daftar tersebut kosong karena penyematan tidak disimpan dalam daftar:

daftar ( fs.yield_keys ( ) )

Langkah 4: Membuat Penyimpanan Vektor
Dapatkan file dari sistem lokal menggunakan perpustakaan file dan klik pada “ Pilih File ” setelah mengeksekusi kode:

dari file impor google.colab
diunggah = file.upload ( )

Sekarang, cukup buat penyimpanan vektor yang dapat digunakan untuk menyimpan embeddings menggunakan metode TextLoader() dengan nama dokumen. Setelah itu, terapkan metode pemisah teks dengan ukuran potongannya dan bagi data menjadi bagian yang lebih kecil:

raw_documents = Pemuat Teks ( 'state_of_the_union.txt' ) .memuat ( )
text_splitter = CharacterTextSplitter ( potongan_ukuran = 1000 , potongan_tumpang tindih = 0 )
dokumen = text_splitter.split_documents ( dokumen_mentah )

Setelah memisahkan teks, simpan datanya di db variabel menggunakan perpustakaan FAISS untuk mendapatkan output menggunakan metode pencarian kesamaan:

db = FAISS.from_documents ( dokumen, cached_embedder )

Sekarang, dapatkan lagi daftar embeddings setelah menyimpannya di database dan batasi output hanya menjadi 5 indeks:

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

Langkah 5: Menggunakan Caching Dalam Memori
Caching berikutnya dapat digunakan melalui metode InMemoryStore() untuk mendefinisikan variabel penyimpanan:

toko = InMemoryStore ( )

Bangun model caching menggunakan metode OpenAIEmbeddings() dan CacheBackedEmbeddings() dengan model, penyimpanan, dan namespace sebagai parameternya:

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

Terapkan penyematan pada dokumen yang disimpan tanpa menggunakan penyematan cache untuk mendapatkan data dari dokumen:

embeddings = embedder.embed_documents ( [ 'Halo' , 'selamat tinggal' ] )

Sekarang, terapkan cache ke embeddings untuk mengambil data dari dokumen dengan cepat:

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

Simpan penyematan cache ke variabel penyematan sehingga variabel penyematan menyimpan penyematan cache:

penyematan == penyematan_dari_cache

Langkah 6: Menggunakan Caching Sistem File
Metode terakhir untuk menerapkan caching pada embeddings dari dokumen test_cache menggunakan File System Store:

fs = Penyimpanan File Lokal ( './test_cache/' )

Terapkan penyematan menggunakan metode CacheBackedEmbeddings() dengan model penyematan, penyimpanan data, dan namespace sebagai parameternya:

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

Gunakan variabel embeddings dengan data cache yang disimpan di dalamnya untuk memanggil metode embedder():

embeddings = embedder2.embed_documents ( [ 'Halo' , 'selamat tinggal' ] )

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

daftar ( fs.yield_keys ( ) )

Itu semua tentang proses membangun dan bekerja dengan caching di LangChain.

Kesimpulan

Untuk bekerja dengan teknik caching untuk penyematan di LangChain, cukup dapatkan modul yang diperlukan menggunakan perintah pip seperti FAISS, OpenAI, dll. Setelah itu, impor perpustakaan untuk membangun dan bekerja dengan caching di LangChain. Ini secara efisien menyimpan embeddings di toko yang berbeda. Pengembang dapat menggunakan beberapa penyimpanan sebagai database untuk menyimpan embeddings seperti penyimpanan vektor, Sistem File, atau penyimpanan dalam memori. Panduan ini mendemonstrasikan proses bekerja dengan caching di LangChain.