میموری کو قسم کے لحاظ سے ترتیب دینے سے حاصل کردہ ٹوکنز میں تقریباً 40% کی کمی آتی ہے۔
ایک فلیٹ میموری اسٹور کیوں ناکام ہو جاتا ہے
زیادہ تر ابتدائی ٹیوٹوریلز ایک LLM ایجنٹ کو ہر نئی معلومات کو ایک ہی لسٹ میں شامل کر کے اور ہر بار اس لسٹ کو ماڈل کو واپس بھیج کر "یاد رکھنے" کا طریقہ سکھاتے ہیں۔ کوڈ لفظی طور پر صرف تین لائنوں کا ہوتا ہے، اور یہ ایک کام کرنے والا ڈیمو تیار کر دیتا ہے۔ عملی طور پر، یہ لسٹ بے قابو ہو کر بڑھتی جاتی ہے۔ اس کی دو علامات ظاہر ہوتی ہیں:
- ایجنٹ پرانی معلومات کو اب بھی درست سمجھتا ہے، مثال کے طور پر ایسا ETA فراہم کرنا جو گھنٹوں پہلے ختم ہو چکا ہو۔
- کانٹیکسٹ ونڈو (context window) ایسی غیر ضروری معلومات سے بھر جاتی ہے جو جواب پر کوئی اثر نہیں ڈالتیں، جس سے API اخراجات بڑھ جاتے ہیں اور جواب دینے کی رفتار سست ہو جاتی ہے۔
ایک سادہ ویکٹر اسٹور یا سادہ کی-ویلیو (key-value) کیش صارف کے عہدے اور کسی عارضی پروجیکٹ کی صورتحال کے درمیان فرق نہیں کر سکتا۔ جب ایجنٹ سمینٹک سرچ (semantic search) کرتا ہے، تو مماثلت کا الگورتھم محض اس لیے ایک پرانا ETA سامنے لا سکتا ہے کیونکہ سوال میں وہی الفاظ موجود ہیں، چاہے وہ معلومات اب متعلقہ نہ ہوں۔
منظم میموری: چار کیٹیگریز، ایک مقصد
اس کا حل یہ ہے کہ میموری کو ایک وحدت (monolith) سمجھنا چھوڑ دیں اور ہر انٹری کو چار میں سے کسی ایک زمرے میں تقسیم کرنا شروع کریں۔
- User facts – مستحکم خصوصیات جیسے کہ صارف کا کردار، پسندیدہ زبان، یا سیکیورٹی کلیئرنس۔ یہ شاذ و نادر ہی تبدیل ہوتی ہیں اور پورے سیشن کے لیے کیش (cache) کی جا سکتی ہیں۔
- Feedback – واضح اصول جن کی ایجنٹ کو پابندی کرنی چاہیے، مثلاً "ڈیٹا بیس کے پاس ورڈ کبھی ظاہر نہ کریں" یا "کمپلائنس سوالات میں مزاح سے گریز کریں"۔ چونکہ یہ رویے کو کنٹرول کرتے ہیں، اس لیے انہیں سرچ ایبل پول کے بجائے سسٹم پرامپٹ (system prompt) میں ہونا چاہیے۔
- Project state – تیزی سے بدلنے والا ڈیٹا جیسے کہ موجودہ ETAs، کام کی پیشرفت، یا عارضی ٹوکنز۔ اس کیٹیگری میں ایکسپائری چیک (expiry check) کی ضرورت ہوتی ہے؛ جیسے ہی ٹائم اسٹیمپ مقررہ وقت سے باہر ہو جائے، اس انٹری کو ختم کر دینا چاہیے۔
- References – بیرونی سروسز، دستاویز کی آئی ڈیز (document IDs)، یا API اینڈ پوائنٹس کے اشارے۔ یہ دکھانے کے لیے مواد نہیں ہیں بلکہ ضرورت پڑنے پر تازہ ڈیٹا حاصل کرنے کے راستے ہیں۔
Mem0 ڈویلپرز کو ہر میموری ریکارڈ کے ساتھ اپنی مرضی کا میٹا ڈیٹا (metadata) منسلک کرنے کی اجازت دیتا ہے۔ "kind" فیلڈ پر انڈیکسنگ کے ذریعے، LLM کے نتیجے کے استعمال کا فیصلہ کرنے سے پہلے ایک کوئری متعلقہ کیٹیگری کو فلٹر کر سکتی ہے۔
Mem0 کے ساتھ دو مرحلہ وار ریٹریول (retrieval)
- Kind کے ذریعے میموری حاصل کریں – ایک مختصر فلٹر کوئری Mem0 سے "تمام فیڈ بیک" یا "مختصر وقفے سے زیادہ نئی پروجیکٹ اسٹیٹ انٹریز" مانگتی ہے۔ نتیجہ پہلے سے ہی مناسب زمرے تک محدود ہوتا ہے۔
- LLM کو فیصلہ کرنے دیں – فلٹر شدہ اقتباسات کو صارف کے موجودہ سوال کے ساتھ پرامپٹ میں شامل کر دیا جاتا ہے۔ اب ماڈل غیر متعلقہ حقائق میں الجھے بغیر ان کے بارے میں منطقی فیصلہ کر سکتا ہے۔
ایک عملی مثال: "ڈیٹا بیس کا مذاق نہ اڑائیں" والے اصول کے سمینٹک میچ کا انتظار کرنے کے بجائے، ڈویلپر اس اصول کو سیشن کے آغاز میں براہ راست سسٹم پرامپٹ میں شامل کر دیتا ہے اور پورے تعامل کے لیے اسے کیش کر لیتا ہے۔ اگرچہ صارف کے سوال میں ڈیٹا بیس کا کوئی واضح ذکر نہیں ہے، پھر بھی ماڈل پہلے سے ہی اس پابندی سے واقف ہوتا ہے۔
اخراجات کم رکھنے کے لیے عملی طریقے
- Feedback rules کو کیش کریں – ہر بار دوبارہ تلاش کرنے کے بجائے، اصولوں کے سیٹ کو ایک سیشن کے لیے ایک بار محفوظ کریں اور اسے دوبارہ استعمال کریں۔ اس سے ہر راؤنڈ میں ٹوکن کا استعمال کم ہو جاتا ہے۔
- غیر متعلقہ ہونے پر پروجیکٹ اسٹیٹ کی تلاش سے گریز کریں – اگر صارف محض تصوراتی سوال پوچھتا ہے ("سپر وائزڈ اور ری انفورسمنٹ لرننگ میں کیا فرق ہے؟")، تو کسی بھی ETA یا کام کی پیشرفت کا ڈیٹا نکالنے کی ضرورت نہیں ہے۔
ان دو عادات کو اپنا کر، ایک سادہ فلیٹ میموری طریقے کے مقابلے میں ٹوکن کے استعمال میں تقریباً 40% کمی کی جا سکتی ہے۔ یہ بچت براہ راست کم API بلوں اور تیز تر کام میں تبدیل ہوتی ہے، خاص طور پر ان ایجنٹس کے لیے جو بہت سے تبادلے (exchanges) تک فعال رہتے ہیں۔
فائدہ کس کو ہوگا، پریشانی کسے ہوگی
فاتحین (Winners) – کسٹمر سپورٹ بوٹس، اندرونی ورک فلو اسسٹنٹ، یا کسی بھی ملٹی ٹرن LLM انٹرفیس بنانے والی ٹیمیں۔ انہیں زیادہ قابل اعتماد جوابات ملتے ہیں، پرانی معلومات کی وجہ سے ہونے والی شرمناک غلطیوں سے بچتے ہیں، اور اپنے بجٹ کا بہتر استعمال کر سکتے ہیں۔
خلاصہ
اگر آپ ایک ایسا LLM ایجنٹ چاہتے ہیں جو طویل سیشنز کے دوران بھی درست رہے، تو ہر حقیقت کو ایک ہی کانٹیکسٹ ونڈو میں بھرنا بند کریں۔ ہر میموری کو user fact، feedback، project state، یا reference کے طور پر ٹیگ کریں، جہاں ضرورت ہو وہاں ایکسپائری نافذ کریں، اور Mem0 جیسے ٹول کو مشکل کام کرنے دیں۔ اس کا نتیجہ تازہ ترین جوابات، کم غیر ضروری ٹوکنز، اور آپریٹنگ اخراجات میں نمایاں کمی کی صورت میں نکلے گا۔