ল্যাংচেইনে ক্যাশিং এর সাথে কিভাবে কাজ করবেন?

Lyance Ine Kyasim Era Sathe Kibhabe Kaja Karabena



ক্যাশিং হল মডেল থেকে সাম্প্রতিকতম বা প্রায়শই ব্যবহৃত ডেটা সংরক্ষণ এবং আনার প্রক্রিয়া তাই এটিকে সব সময় পুনরায় গণনা করতে হবে না। পাঠ্য এম্বেডিংগুলি পাঠ্য ডেটাকে সংখ্যায় রূপান্তর করতে ব্যবহার করা যেতে পারে এবং এতে ক্যাশিং কৌশল প্রয়োগ করে মডেলের দক্ষতা উন্নত করতে পারে। LangChain ডেভেলপারদের CacheBackedEmbeddings লাইব্রেরি ব্যবহার করে ক্যাশিং মডেল তৈরি করতে সক্ষম করে।

এই পোস্টটি LangChain-এ ক্যাশিংয়ের সাথে কাজ করার প্রক্রিয়াটি প্রদর্শন করবে।







ল্যাংচেইনে ক্যাশিং এর সাথে কিভাবে কাজ করবেন?

টেক্সট এমবেডিং মডেলগুলিতে ল্যাংচেইন ক্যাশিং বিভিন্ন ডেটাসেটের মাধ্যমে ব্যবহার করা যেতে পারে যেমন ভেক্টর স্টোর, ইন-মেমরি ডেটা বা ফাইল সিস্টেম থেকে ডেটা ব্যবহার করা। ক্যাশে পদ্ধতিগুলি প্রয়োগ করা দ্রুত আউটপুট পেতে পারে এবং মডেলটি আরও কার্যকরভাবে ডেটাতে সাদৃশ্য অনুসন্ধানগুলি প্রয়োগ করতে পারে।



LangChain-এ ক্যাশিংয়ের সাথে কাজ করার প্রক্রিয়াটি শিখতে, কেবলমাত্র তালিকাভুক্ত পদক্ষেপগুলি অনুসরণ করুন:



ধাপ 1: মডিউল ইনস্টল করুন
প্রথমে, প্রয়োজনীয় মডেলগুলি ইনস্টল করে ক্যাশিংয়ের সাথে কাজ করার প্রক্রিয়া শুরু করুন এখানে প্রথমটি হল LangChain যাতে প্রক্রিয়াটির জন্য প্রয়োজনীয় সমস্ত লাইব্রেরি রয়েছে:





পিপ ইনস্টল ল্যাংচেইন

FAISS মডিউলটি ব্যবহারকারীর দ্বারা প্রদত্ত ইনপুটের উপর ভিত্তি করে আউটপুট নিষ্কাশন বা উৎপন্ন করার জন্য একটি মিল অনুসন্ধান করতে হবে:



পিপ ইনস্টল faiss-gpu

এই গাইডের জন্য শেষ মডিউল যা ইনস্টল করার জন্য প্রয়োজন তা হল OpenAI যা OpenAIEmbeddings() পদ্ধতি ব্যবহার করে ডেটা এমবেডিং তৈরি করতে ব্যবহার করা যেতে পারে:

পিপ ইনস্টল openai

সমস্ত মডিউল ইনস্টল করার পরে, শুধুমাত্র OpenAI পরিবেশ থেকে API কী ব্যবহার করে পরিবেশ সেট আপ করুন “ আপনি ' এবং ' গেটপাস 'লাইব্রেরি:

আমাদের আমদানি করুন
গেটপাস আমদানি করুন

os.environ [ 'OPENAI_API_KEY' ] = getpass.getpass ( 'ওপেনএআই এপিআই কী:' )

ধাপ 2: লাইব্রেরি আমদানি করা
সেটআপ সম্পূর্ণ হয়ে গেলে, ল্যাংচেইনে ক্যাশিং কৌশলগুলির সাথে কাজ করার জন্য কেবল লাইব্রেরিগুলি আমদানি করুন:

langchain.storage থেকে InMemoryStore আমদানি করুন
langchain.embeddings থেকে CacheBackedEmbeddings আমদানি করুন
langchain.storage থেকে LocalFileStore আমদানি করুন
langchain.embeddings থেকে OpenAIEmbeddings আমদানি করুন
langchain.document_loaders থেকে TextLoader আমদানি করুন
langchain.embeddings.openai থেকে OpenAIEmbeddings আমদানি করুন
langchain.text_splitter থেকে CharacterTextSplitter আমদানি করুন
langchain.vectorstores থেকে FAISS আমদানি করে

ধাপ 3: ক্যাশিং মডেল তৈরি করা
লাইব্রেরিগুলি আমদানি করার পরে, মডেলটি তৈরি করতে এবং ভেরিয়েবলে সংরক্ষণ করতে কেবল OpenAIEmbeddings() পদ্ধতিতে কল করুন:

underlying_embeddings = OpenAIEmbeddings ( )

এখন, একাধিক আর্গুমেন্ট সহ LocalFileStore() পদ্ধতি এবং CacheBackedEmbeddings() পদ্ধতি ব্যবহার করে ক্যাশে প্রয়োগ করুন:

fs = লোকালফাইলস্টোর ( './cache/' )

cached_embedder = CacheBackedEmbeddings.from_bytes_store (
অন্তর্নিহিত_এম্বেডিং, fs, নামস্থান =underlying_embeddings.model
)

কেবল এম্বেডিংয়ের তালিকা পান এবং আপাতত, তালিকাটি খালি রয়েছে কারণ এম্বেডিংগুলি তালিকায় সংরক্ষণ করা হয়নি:

তালিকা ( fs.yield_keys ( ) )

ধাপ 4: ভেক্টর স্টোর তৈরি করা
ফাইল লাইব্রেরি ব্যবহার করে স্থানীয় সিস্টেম থেকে ফাইলটি পান এবং 'এ ক্লিক করুন ফাইল বেছে নিন কোডটি কার্যকর করার পরে:

google.colab থেকে ফাইল আমদানি করুন
uploaded = files.upload ( )

এখন, কেবল একটি ভেক্টর স্টোর তৈরি করুন যা নথির নামের সাথে TextLoader() পদ্ধতি ব্যবহার করে এমবেডিংগুলি সংরক্ষণ করতে ব্যবহার করা যেতে পারে। এর পরে, খণ্ডগুলির আকার সহ পাঠ্য বিভাজন পদ্ধতিগুলি প্রয়োগ করুন এবং ডেটাকে ছোট খণ্ডে বিভক্ত করুন:

raw_documents = টেক্সটলোডার ( 'state_of_the_union.txt' ) .বোঝা ( )
text_splitter = CharacterTextSplitter ( chunk_size = 1000 , খণ্ড_ওভারল্যাপ = 0 )
নথি = text_splitter.split_documents ( কাঁচা_নথি )

টেক্সট বিভক্ত করার পরে, তথ্য সংরক্ষণ করুন ডিবি সাদৃশ্য অনুসন্ধান পদ্ধতি ব্যবহার করে আউটপুট পেতে FAISS লাইব্রেরি ব্যবহার করে পরিবর্তনশীল:

db = FAISS.from_documents ( নথি, ক্যাশে_এমবেডার )

এখন, ডাটাবেসে সংরক্ষণ করার পরে আবার এম্বেডিংয়ের তালিকা পান এবং আউটপুটটি শুধুমাত্র 5 সূচকে সীমাবদ্ধ করুন:

তালিকা ( fs.yield_keys ( ) ) [ : 5 ]

ধাপ 5: ইন-মেমরি ক্যাশিং ব্যবহার করা
স্টোর ভেরিয়েবলকে সংজ্ঞায়িত করতে InMemoryStore() পদ্ধতির মাধ্যমে পরবর্তী ক্যাশিং ব্যবহার করা যেতে পারে:

স্টোর = ইনমেমোরিস্টোর ( )

OpenAIEmbeddings() এবং CacheBackedEmbeddings() পদ্ধতি ব্যবহার করে মডেল, স্টোর এবং নেমস্পেস এর প্যারামিটার হিসাবে ক্যাশিং মডেল তৈরি করুন:

underlying_embeddings = OpenAIEmbeddings ( )
embedder = CacheBackedEmbeddings.from_bytes_store (
অন্তর্নিহিত_এম্বেডিং, স্টোর, নামস্থান =underlying_embeddings.model
)

নথি থেকে ডেটা পেতে ক্যাশে এম্বেডিং ব্যবহার না করে সঞ্চিত নথিতে এম্বেডিং প্রয়োগ করুন:

embeddings = embedder.embed_documents ( [ 'হ্যালো' , 'বিদায়' ] )

এখন, নথি থেকে দ্রুত ডেটা আনতে এমবেডিংগুলিতে ক্যাশে প্রয়োগ করুন:

embeddings_from_cache = embedder.embed_documents ( [ 'হ্যালো' , 'বিদায়' ] )

এম্বেডিং ভেরিয়েবলে ক্যাশে এম্বেডিং সংরক্ষণ করুন যাতে এমবেডিং ভেরিয়েবলে ক্যাশে করা এম্বেডিংগুলি সংরক্ষণ করা হয়:

এমবেডিংস == এম্বেডিংস_ফ্রম_ক্যাশে

ধাপ 6: ফাইল সিস্টেম ক্যাশিং ব্যবহার করা
ফাইল সিস্টেম স্টোর ব্যবহার করে test_cache নথি থেকে এমবেডিংগুলিতে ক্যাশে প্রয়োগ করার শেষ পদ্ধতি:

fs = লোকালফাইলস্টোর ( './test_cache/' )

প্যারামিটার হিসাবে এমবেডিং মডেল, ডেটা স্টোর এবং নেমস্পেস সহ CacheBackedEmbeddings() পদ্ধতি ব্যবহার করে এম্বেডিংগুলি প্রয়োগ করুন:

embedder2 = CacheBackedEmbeddings.from_bytes_store (
অন্তর্নিহিত_এম্বেডিং, fs, নামস্থান =underlying_embeddings.model
)

এমবেডার() পদ্ধতিতে কল করতে এটিতে সংরক্ষিত ক্যাশে ডেটা সহ এমবেডিং ভেরিয়েবল ব্যবহার করুন:

embeddings = embedder2.embed_documents ( [ 'হ্যালো' , 'বিদায়' ] )

এখন প্যারামিটার হিসাবে উল্লিখিত উপরের দুটি বিশ্বের জন্য এমবেডিংগুলি পান:

তালিকা ( fs.yield_keys ( ) )

এটি LangChain-এ ক্যাশিং নির্মাণ এবং কাজ করার প্রক্রিয়া সম্পর্কে।

উপসংহার

LangChain-এ এমবেডিংয়ের জন্য ক্যাশিং কৌশলগুলির সাথে কাজ করতে, FAISS, OpenAI ইত্যাদির মতো পিপ কমান্ড ব্যবহার করে প্রয়োজনীয় মডিউলগুলি পান। এর পরে, ল্যাংচেইনে ক্যাশিং এর সাথে তৈরি এবং কাজ করার জন্য লাইব্রেরিগুলি আমদানি করুন। এটি দক্ষতার সাথে বিভিন্ন দোকানে সংরক্ষিত এমবেডিংগুলি পায়৷ ডেভেলপাররা ভেক্টর স্টোর, ফাইল সিস্টেম বা ইন-মেমরি স্টোরের মতো এমবেডিংগুলি সংরক্ষণ করতে ডাটাবেস হিসাবে একাধিক স্টোর ব্যবহার করতে পারে। এই নির্দেশিকাটি ল্যাংচেইনে ক্যাশিংয়ের সাথে কাজ করার প্রক্রিয়াটি প্রদর্শন করেছে।