التخزين المؤقت هو عملية تخزين وجلب أحدث البيانات أو المستخدمة بشكل متكرر من النموذج، لذلك لا يلزم إعادة حسابها طوال الوقت. يمكن استخدام تضمينات النص لتحويل البيانات النصية إلى أرقام، ويمكن أن يؤدي تطبيق تقنيات التخزين المؤقت عليها إلى تحسين كفاءة النموذج. يمكّن LangChain المطورين من إنشاء نموذج التخزين المؤقت باستخدام مكتبة CacheBackedEmbeddings.
سيوضح هذا المنشور عملية العمل مع التخزين المؤقت في LangChain.
كيفية العمل مع التخزين المؤقت في LangChain؟
يمكن استخدام التخزين المؤقت في LangChain على نماذج تضمين النص من خلال مجموعات بيانات مختلفة مثل استخدام مخزن المتجهات أو بيانات الذاكرة الداخلية أو البيانات من أنظمة الملفات. يمكن أن يؤدي تطبيق أساليب ذاكرة التخزين المؤقت إلى الحصول على المخرجات بسرعة ويمكن للنموذج تطبيق عمليات بحث التشابه على البيانات بشكل أكثر فعالية.
للتعرف على عملية العمل مع التخزين المؤقت في LangChain، ما عليك سوى اتباع الخطوات المذكورة:
الخطوة 1: تثبيت الوحدات
أولاً، ابدأ عملية العمل مع التخزين المؤقت عن طريق تثبيت النماذج المطلوبة أولها هنا هو LangChain الذي يحتوي على جميع المكتبات المطلوبة للعملية:
نقطة ثَبَّتَ com.langchain
وحدة FAISS مطلوبة لإجراء بحث تشابه لاستخراج أو توليد المخرجات بناءً على المدخلات المقدمة من المستخدم:
نقطة ثَبَّتَ faiss-gpu
الوحدة الأخيرة المطلوبة للتثبيت في هذا الدليل هي OpenAI والتي يمكن استخدامها لإنشاء تضمينات للبيانات باستخدام طريقة OpenAIEmbeddings() :
نقطة ثَبَّتَ openai
بعد تثبيت جميع الوحدات، ما عليك سوى إعداد البيئة باستخدام مفتاح API من بيئة OpenAI باستخدام ' أنت ' و ' com.getpass 'المكتبات:
استيراد لنااستيراد getpass
os.environ [ 'OPENAI_API_KEY' ] = getpass.getpass ( 'مفتاح واجهة برمجة تطبيقات OpenAI:' )
الخطوة 2: استيراد المكتبات
بمجرد اكتمال الإعداد، ما عليك سوى استيراد المكتبات للعمل مع تقنيات التخزين المؤقت في LangChain:
من 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() لبناء النموذج وتخزينه في المتغير:
الآن، قم بتطبيق ذاكرة التخزين المؤقت باستخدام أسلوب LocalFileStore() وأساليب CacheBackedEmbeddings() مع وسائط متعددة:
fs = LocalFileStore ( './مخبأ/' )Cached_embedder = CacheBackedEmbeddings.from_bytes_store (
الكامنة_التضمينات، خ م، مساحة الاسم =underlying_embeddings.model
)
ما عليك سوى الحصول على قائمة التضمينات، وفي الوقت الحالي، القائمة فارغة نظرًا لعدم تخزين التضمينات في القائمة:
قائمة ( fs.yield_keys ( ) )
الخطوة 4: إنشاء متجر المتجهات
احصل على الملف من النظام المحلي باستخدام مكتبة الملفات وانقر على ' اختر الملفات ' بعد تنفيذ الكود:
تم الرفع = files.upload ( )
الآن، ما عليك سوى إنشاء مخزن متجه يمكن استخدامه لتخزين التضمينات باستخدام طريقة TextLoader() مع اسم المستند. بعد ذلك، قم بتطبيق أساليب تقسيم النص مع حجم الأجزاء وتقسيم البيانات إلى أجزاء أصغر:
Raw_documents = TextLoader ( 'state_of_the_union.txt' ) .حمولة ( )text_splitter = CharacterTextSplitter ( حجم قطعة = 1000 , Chunk_overlap = 0 )
المستندات = text_splitter.split_documents ( Raw_documents )
بعد تقسيم النص، قم بتخزين البيانات في الملف ديسيبل متغير باستخدام مكتبة FAISS للحصول على الإخراج باستخدام طريقة بحث التشابه:
ديسيبل = FAISS.from_documents ( المستندات، Cached_embedder )
الآن، احصل مرة أخرى على قائمة التضمينات بعد تخزينها في قاعدة البيانات وحدد المخرجات بخمسة فهارس فقط:
قائمة ( fs.yield_keys ( ) ) [ : 5 ]
الخطوة 5: استخدام التخزين المؤقت في الذاكرة
يمكن استخدام التخزين المؤقت التالي من خلال طرق InMemoryStore() لتحديد متغير المتجر:
أنشئ نموذج التخزين المؤقت باستخدام أساليب OpenAIEmbeddings() وCacheBackedEmbeddings() مع النموذج والمخزن ومساحة الاسم كمعلمات له:
under_embeddings = OpenAIEmbeddings ( )embedder = CacheBackedEmbeddings.from_bytes_store (
متجر، مساحة الاسم =underlying_embeddings.model
)
قم بتطبيق التضمينات على المستند المخزن دون استخدام تضمينات ذاكرة التخزين المؤقت للحصول على البيانات من المستند:
التضمين = embedder.embed_documents ( [ 'مرحبًا' , 'مع السلامة' ] )الآن، قم بتطبيق ذاكرة التخزين المؤقت على التضمينات لجلب البيانات بسرعة من المستندات:
embeddings_from_cache = embedder.embed_documents ( [ 'مرحبًا' , 'مع السلامة' ] )قم بتخزين تضمينات ذاكرة التخزين المؤقت في متغير التضمينات بحيث يتم تخزين التضمينات المخزنة مؤقتًا في متغير التضمينات:
embeddings == embeddings_from_cache
الخطوة 6: استخدام التخزين المؤقت لنظام الملفات
الطريقة الأخيرة لتطبيق التخزين المؤقت في التضمينات من مستند test_cache باستخدام File System Store:
قم بتطبيق عمليات التضمين باستخدام طريقة CacheBackedEmbeddings() مع نموذج التضمين ومخزن البيانات ومساحة الاسم كمعلمات:
embedder2 = CacheBackedEmbeddings.from_bytes_store (الكامنة_التضمينات، خ م، مساحة الاسم =underlying_embeddings.model
)
استخدم متغير التضمين مع البيانات المخزنة مؤقتًا فيه لاستدعاء طريقة التضمين () :
التضمين = embedder2.embed_documents ( [ 'مرحبًا' , 'مع السلامة' ] )احصل الآن على التضمينات للعالمين المذكورين أعلاه كمعلمات:
قائمة ( fs.yield_keys ( ) )
يتعلق الأمر كله بعملية البناء والعمل مع التخزين المؤقت في LangChain.
خاتمة
للعمل مع تقنيات التخزين المؤقت للتضمينات في LangChain، ما عليك سوى الحصول على الوحدات المطلوبة باستخدام أمر pip مثل FAISS وOpenAI وما إلى ذلك. بعد ذلك، قم باستيراد المكتبات لبناء التخزين المؤقت والعمل به في LangChain. إنه يحصل بكفاءة على التضمينات المخزنة في المتاجر المختلفة. يمكن للمطورين استخدام مخازن متعددة كقواعد بيانات لتخزين التضمينات مثل مخازن المتجهات أو أنظمة الملفات أو مخازن الذاكرة. يوضح هذا الدليل عملية العمل مع التخزين المؤقت في LangChain.