LangChain میں کیشنگ کے ساتھ کیسے کام کریں؟

Langchain My Kyshng K Sat Kys Kam Kry



کیشنگ ماڈل سے حالیہ یا اکثر استعمال ہونے والے ڈیٹا کو ذخیرہ کرنے اور بازیافت کرنے کا عمل ہے لہذا اسے ہر وقت دوبارہ گنتی کرنے کی ضرورت نہیں ہے۔ ٹیکسٹ ایمبیڈنگز کا استعمال ٹیکسٹول ڈیٹا کو نمبروں میں تبدیل کرنے کے لیے کیا جا سکتا ہے اور اس پر کیشنگ تکنیک کا اطلاق ماڈل کی کارکردگی کو بہتر بنا سکتا ہے۔ LangChain ڈیولپرز کو CacheBackedEmbeddings لائبریری کا استعمال کرتے ہوئے کیشنگ ماڈل بنانے کے قابل بناتا ہے۔

یہ پوسٹ LangChain میں کیشنگ کے ساتھ کام کرنے کے عمل کو ظاہر کرے گی۔







LangChain میں کیشنگ کے ساتھ کیسے کام کریں؟

ٹیکسٹ ایمبیڈنگ ماڈلز پر LangChain میں کیشنگ کو مختلف ڈیٹا سیٹس کے ذریعے استعمال کیا جا سکتا ہے جیسے کہ ویکٹر سٹور، ان میموری ڈیٹا، یا فائل سسٹمز کا ڈیٹا۔ کیشے کے طریقوں کو لاگو کرنے سے آؤٹ پٹ تیزی سے مل سکتا ہے اور ماڈل ڈیٹا پر مماثلت کی تلاش کو زیادہ مؤثر طریقے سے لاگو کر سکتا ہے۔



LangChain میں کیشنگ کے ساتھ کام کرنے کے عمل کو جاننے کے لیے، بس درج کردہ مراحل سے گزریں:



مرحلہ 1: ماڈیولز انسٹال کریں۔
سب سے پہلے، مطلوبہ ماڈلز کو انسٹال کر کے کیشنگ کے ساتھ کام کرنے کا عمل شروع کریں، یہاں سب سے پہلے LangChain ہے جس میں اس عمل کے لیے تمام مطلوبہ لائبریریاں شامل ہیں:





pip انسٹال کریں langchain

FAISS ماڈیول کو صارف کی طرف سے فراہم کردہ ان پٹ کی بنیاد پر آؤٹ پٹ نکالنے یا پیدا کرنے کے لیے مماثلت کی تلاش کی ضرورت ہے۔



pip انسٹال کریں faiss-gpu

اس گائیڈ کے لیے آخری ماڈیول جسے انسٹال کرنے کی ضرورت ہے وہ OpenAI ہے جسے OpenAIEmbeddings() طریقہ استعمال کرتے ہوئے ڈیٹا کی ایمبیڈنگز بنانے کے لیے استعمال کیا جا سکتا ہے:

pip انسٹال کریں اوپنائی

تمام ماڈیولز کی تنصیب کے بعد، صرف OpenAI ماحول سے API کلید کا استعمال کرتے ہوئے ماحول کو ترتیب دیں۔ تم 'اور' گیٹ پاس لائبریریاں:

ہمیں درآمد کریں
گیٹ پاس درآمد کریں۔

os.environ [ 'OPENAI_API_KEY' ] = getpass.getpass ( 'اوپن اے آئی API کلید:' )

مرحلہ 2: لائبریریاں درآمد کرنا
سیٹ اپ مکمل ہونے کے بعد، LangChain میں کیشنگ تکنیک کے ساتھ کام کرنے کے لیے صرف لائبریریوں کو درآمد کریں:

langchain.storage امپورٹ InMemoryStore سے
langchain.embeddings سے CacheBackedEmbeddings درآمد کریں۔
langchain.storage سے لوکل فائل اسٹور درآمد کریں۔
langchain.embeddings سے OpenAIEmbeddings درآمد کریں۔
langchain.document_loaders سے ٹیکسٹ لوڈر درآمد کریں۔
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 (
بنیادی_ایمبیڈنگز، ایف ایس، نام کی جگہ =underlying_embeddings.model
)

بس ایمبیڈنگز کی فہرست حاصل کریں اور ابھی کے لیے، فہرست خالی ہے کیونکہ ایمبیڈنگز فہرست میں محفوظ نہیں ہیں:

فہرست ( fs.yield_keys ( ) )

مرحلہ 4: ویکٹر اسٹور بنانا
فائل لائبریری کا استعمال کرتے ہوئے لوکل سسٹم سے فائل حاصل کریں اور 'پر کلک کریں۔ فائلوں کو منتخب کریں۔ 'کوڈ پر عمل کرنے کے بعد:

google.colab سے فائلیں درآمد کریں۔
uploaded = files.upload ( )

اب، صرف ایک ویکٹر اسٹور بنائیں جو دستاویز کے نام کے ساتھ TextLoader() طریقہ استعمال کرتے ہوئے ایمبیڈنگز کو ذخیرہ کرنے کے لیے استعمال کیا جا سکے۔ اس کے بعد، ٹکڑوں کے سائز کے ساتھ ٹیکسٹ اسپلٹر کے طریقے لاگو کریں اور ڈیٹا کو چھوٹے ٹکڑوں میں تقسیم کریں:

raw_documents = ٹیکسٹ لوڈر ( 'state_of_the_union.txt' ) .لوڈ ( )
text_splitter = کریکٹر ٹیکسٹ سپلٹر ( chunk_size = 1000 ، chunk_overlap = 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 (
بنیادی_ایمبیڈنگز، ایف ایس، نام کی جگہ =underlying_embeddings.model
)

ایمبیڈر() طریقہ کو کال کرنے کے لیے اس میں محفوظ کردہ کیشڈ ڈیٹا کے ساتھ ایمبیڈنگ متغیر کا استعمال کریں:

embeddings = embedder2.embed_documents ( [ 'ہیلو' ، 'خدا حافظ' ] )

اب مندرجہ بالا دو جہانوں کے لیے ایمبیڈنگز حاصل کریں جن کا ذکر پیرامیٹرز کے طور پر کیا گیا ہے۔

فہرست ( fs.yield_keys ( ) )

یہ سب کچھ LangChain میں کیشنگ کے ساتھ بنانے اور کام کرنے کے عمل کے بارے میں ہے۔

نتیجہ

LangChain میں سرایت کرنے کے لیے کیشنگ تکنیک کے ساتھ کام کرنے کے لیے، صرف پائپ کمانڈ جیسے FAISS، OpenAI، وغیرہ کا استعمال کرتے ہوئے مطلوبہ ماڈیول حاصل کریں۔ اس کے بعد، LangChain میں کیشنگ کے ساتھ کام کرنے اور بنانے کے لیے لائبریریاں درآمد کریں۔ یہ مختلف اسٹورز میں محفوظ کردہ ایمبیڈنگز کو مؤثر طریقے سے حاصل کرتا ہے۔ ڈویلپر متعدد اسٹورز کو ڈیٹا بیس کے طور پر استعمال کر سکتے ہیں تاکہ ویکٹر اسٹورز، فائل سسٹمز، یا ان میموری اسٹورز جیسے ایمبیڈنگز کو اسٹور کیا جاسکے۔ اس گائیڈ نے LangChain میں کیشنگ کے ساتھ کام کرنے کے عمل کو ظاہر کیا۔