یونٹ 3 / 11

چنکنگ اور دستاویز کی تیاری

فائدہ:

  • عددی طور پر chunk size، overlap اور semantic chunking tradeoffs کا جائزہ لیں۔
  • دستاویز کی مختلف اقسام (پی ڈی ایف، ٹیبل، کوڈ، چیٹ لاگ) کے لیے مناسب چنکنگ حکمت عملی کا انتخاب
  • ہر ایک حصے میں میٹا ڈیٹا شامل کرکے بازیافت کے معیار اور فلٹرنگ کو مضبوط بنائیں

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

ہم کیوں ٹکڑے ٹکڑے کرتے ہیں؟

اس کی تین وجوہات ہیں۔ سب سے پہلے، ایمبیڈنگ ماڈلز ایک خاص لمبائی تک کے متن کو بامعنی ویکٹر میں تبدیل کرتے ہیں۔ اگر پورے 40 صفحات پر مشتمل باب کو ایک ویکٹر میں جوڑا جائے تو معنی "دھندلا" ہو جاتا ہے۔ دوسرا، ہم ماڈل کو صرف وہی حصہ دینا چاہتے ہیں جو سیاق و سباق کے طور پر درکار ہے۔ پوری دستاویز کو حوالے کرنا مہنگا اور پریشان کن ہے۔ تیسرا، درستگی حاصل کرنے کے لیے، سرچ یونٹ چھوٹا اور فوکس ہونا چاہیے۔

لہذا حصہ بازیافت کی سب سے چھوٹی اکائی ہے۔ یہ بہت بڑا یا بہت چھوٹا نہیں ہونا چاہئے – بالکل صحیح۔

حصہ کا سائز اور اوورلیپ بیلنس

دو اہم ترتیبات ہیں: حصہ کا سائز (ایک حصہ میں کتنے ٹوکن/الفاظ ہوں گے) اور اوورلیپ (وہ حصہ جو پڑوسی حصوں کے ذریعے شیئر کیا جاتا ہے)۔

بہت چھوٹے حصے (مثلاً 100 ٹوکن): توجہ مرکوز لیکن سیاق و سباق سے منقطع۔ وہ کہتا ہے "14 دن کے لیے"، لیکن جو 14 دن باقی ہیں وہ پچھلے جملے میں ہے۔ بہت بڑے ٹکڑے (مثلاً 2000 ٹوکن): سیاق و سباق کو محفوظ رکھتا ہے لیکن بہت سے دھاگے اس میں مل جاتے ہیں۔ سرایت کرنے سے گڑبڑ ہو جاتی ہے اور غیر متعلقہ موضوعات اکٹھے ہو جاتے ہیں۔

اوورلیپ باؤنڈری کا مسئلہ حل کرتا ہے۔ اگر کوئی جملہ بالکل دو حصوں کی سرحد پر آتا ہے تو اسے بغیر اوور لیپنگ کے دو حصوں میں تقسیم کر دیا جاتا ہے اور اس کا معنی ختم ہو جاتا ہے۔ 50-100 ٹوکنز کا اوورلیپ اس بات کو یقینی بناتا ہے کہ حد کے اندر آنے والی معلومات کم از کم ایک حصے میں برقرار رہے۔

ٹکڑے کا سائز

فائدہ

نقصان

مناسب مواد

چھوٹا (100-250 ٹوکن)

اعلی حساسیت، توجہ مرکوز

سیاق و سباق ٹوٹ سکتا ہے۔

اکثر پوچھے گئے سوالات، مختصر مضامین، تعریفیں۔

درمیانہ (300-600 ٹوکن)

توازن؛ زیادہ تر منظرنامے

-

طریقہ کار، پالیسی نصوص

بڑا (800-1500 ٹوکن)

سیاق و سباق کی سالمیت

دھندلی سرایت

بیانیہ، طویل وضاحت

ٹپ: اگر آپ نہیں جانتے کہ کہاں سے شروع کرنا ہے، تو 400-500 ٹوکن ٹکڑوں اور 50-80 ٹوکن اوورلیپ کے ساتھ شروع کریں۔ پھر اپنے ڈیٹا کے ساتھ پیمائش اور ایڈجسٹ کریں۔ "صحیح" سائز عالمگیر نہیں ہے، یہ سیاق و سباق پر منحصر ہے۔

چنکنگ کی حکمت عملی

فکسڈ سائز: ہر N ٹوکن پر متن کو تراشتا ہے۔ یہ آسان اور تیز ہے، لیکن وسط جملے میں خلل ڈال سکتا ہے۔

علیحدگی پر مبنی (بار بار چلنے والا/ جدا کرنے والا): پیراگراف اور پھر جملے کی حدود کے مطابق تقسیم؛ یہ معنی کی سالمیت کو بہتر طور پر محفوظ رکھتا ہے۔ زیادہ تر پیداواری نظام اسی سے شروع ہوتے ہیں۔

سیمنٹک چنکنگ: یہ جملے کے سرایت کو دیکھتا ہے اور انہیں تقسیم کرتا ہے جہاں موضوع کی تبدیلی واقع ہوتی ہے۔ یہ اعلیٰ ترین معیار ہے لیکن سب سے مہنگا طریقہ ہے۔ بڑی مقدار کے ساتھ، لین دین کے اخراجات بڑھ جاتے ہیں۔

ساخت سے آگاہ: دستاویز کا ڈھانچہ استعمال کرتا ہے جیسے عنوانات، حصے، میزیں۔ مثال کے طور پر، مارک ڈاؤن دستاویز کو سرخیوں کے ذریعے تقسیم کرنا یقینی بناتا ہے کہ ہر حصے کی اپنی سرخی ہے۔

دستاویز کی قسم کے مطابق موافقت

ہر دستاویز ایک جیسی نہیں ہوتی۔ حکمت عملی قسم کے لحاظ سے مختلف ہوتی ہے:

  • پی ڈی ایف/پالیسی ٹیکسٹ: بک مارک پر مبنی، درمیانے سائز کا۔ صفحہ کے اوپر/نیچے دہرائے جانے والے (ہیڈر/فوٹر) کو صاف کریں۔
  • میزیں: سیاق و سباق سے ہٹ کر لائن نہ لیں؛ ہر قطار کو ہیڈر کی معلومات کے ساتھ رکھیں ("آئٹم: X، قیمت: Y، اسٹاک: Z")۔ خام میز کو سادہ متن میں تبدیل کرنا اکثر ضروری ہوتا ہے۔
  • کوڈ: فنکشن/کلاس کی حدود سے تقسیم؛ کسی فنکشن کو راستے سے ہٹانے سے گریز کریں۔
  • چیٹ/ٹکٹ کی ریکارڈنگ: پیغام یا گفتگو کے راؤنڈ کے حساب سے تقسیم؛ کس نے کیا کہا اس کا علم برقرار رکھیں۔

# بریکٹ پر مبنی chunking (تصوراتی) chunks = bol( text, target_size=450, # token overlap=70, # token brackets=["\n\n", "\n", ".", ""] # پیراگراف پہلا، لفظ آخری)

ہر ٹریک میں میٹا ڈیٹا شامل کریں۔

چنکنگ صرف "تقسیم" نہیں ہے۔ ہر ٹکڑا کو بہتر بنانا ہے. ہر ٹیگ جو آپ ٹریک سے منسلک کرتے ہیں مستقبل کی فلٹرنگ اور سورس کے حوالہ کے لیے اس کا وزن سونے میں ہوتا ہے۔

# افزودہ حصہ (تصوراتی){ "متن": "سالانہ ادا شدہ چھٹی 14 دن کی ہے 1-5 سال کی سروس کے ساتھ...", "میٹا ڈیٹا": { "ماخذ": "ik_el_kitabi_v7.pdf"، "سیکشن": "5.2 سالانہ چھٹی"، "صفحہ": 23، "تاریخ"، "602 حصہ"، "202 کا حصہ" "privacy": "اندرونی" }}

ایک اور طاقتور تکنیک سیاق و سباق کے عنوان کو شامل کر رہی ہے: ہر ٹکڑے کے شروع میں اس باب کا عنوان لکھنا۔ اس طرح، یہاں تک کہ "14 دنوں کے لیے" جیسا منقطع ٹکڑا بھی "سالانہ چھٹی - 14 دن" کے طور پر بہتر سرایت اور زیادہ معنی خیز ہے۔

کمزور چنکنگ / مضبوط چنکنگ

کمزور (بلائنڈ ہارڈ کٹ، کوئی میٹا ڈیٹا نہیں):

ہر 1000 حروف پر متن کو چھوٹا کریں۔ صرف متن رکھیں۔ # نتیجہ: میزیں درمیان میں تقسیم ہیں، "14 دن" سیاق و سباق کے بغیر باقی ہیں، # یہ معلوم نہیں ہے کہ یہ کس دستاویز سے آیا ہے، کوئی فلٹر نہیں بنایا جا سکتا۔

طاقتور (سٹرکچر سے آگاہ + ہیڈر + میٹا ڈیٹا):

دستاویز کو عنوانات سے تقسیم کریں۔ ہر حصے میں سیکشن کا عنوان شامل کریں؛ ذریعہ، صفحہ، تاریخ اور رازداری کا میٹا ڈیٹا منسلک کریں؛ ٹیبلروز کو ان کے ہیڈرز کے ساتھ سادہ متن میں تبدیل کریں۔

تین چھوٹے کیسز

کیس 1 - پینٹنگ ڈیزاسٹر۔ ایک فنانس ٹیم نے 200 صفحات پر مشتمل قیمت کی فہرست کو بلائنڈ ہارڈ کٹنگ کے ساتھ تقسیم کیا۔ میز کی قطاریں تصادفی طور پر تقسیم کی گئیں۔ "پروڈکٹ X کی قیمت کیا ہے؟" ماڈل نے غلط لائن پڑھی اور غلط قیمت دی (12 میں سے 9 کیسز غلط ہیں)۔ جب میں نے ٹیبل کی قطاروں کو "پروڈکٹ: ... | قیمت: ... | یونٹ: ..." فارمیٹ میں سادہ متن میں تبدیل کیا تو غلطی 12 میں سے 0 تک کم ہو گئی۔

کیس 2 - انتہائی بڑا حصہ۔ ویکی میں، ہر صفحہ ایک ٹکڑے سے بنا ہوتا ہے (کچھ کہتے ہیں کہ 3,000 ٹوکن)۔ ایمبیڈنگ دھندلی ہے کیونکہ ایک صفحہ پر "چھٹی"، "اوور ٹائم" اور "پے رول" ہے۔ چھٹی کے سوال کے حوالے سے اوقات کار کا سیکشن بھی عمل میں آیا۔ جب صفحات کو عنوان کے لحاظ سے درمیانے سائز میں تقسیم کیا گیا تو recall@5 64% سے بڑھ کر 91% ہو گیا۔

کیس 3 - بغیر اوورلیپ کے کٹا ہوا جملہ۔ قانونی ٹیم کے لیے 250 ٹوکن فکسڈ کٹ، کوئی اوورلیپ نہیں۔ ایک تنقیدی تعریف دو حصوں کی سرحد پر گر گئی اور دو حصوں میں تقسیم ہو گئی۔ نہ ایک اور نہ ہی دوسرے میں مکمل جواب موجود ہے۔ جب 60 ٹوکن اوورلیپ کو شامل کیا گیا تو ایک ہی تعریف ایک ٹکڑے میں برقرار رہی اور درست جواب واپس کر دیا گیا۔

عام غلطیاں

  • بلائنڈ فکسڈ کٹ: جملوں اور میزوں کو درمیان میں تقسیم کرتا ہے۔ معنی کھو گیا ہے.
  • اوورلیپ کو صفر پر چھوڑنا: باؤنڈری پر آنے والی معلومات تقسیم اور ضائع ہو جاتی ہیں۔
  • میٹا ڈیٹا شامل نہیں کرنا: فلٹرنگ اور سورس ڈسپلے ناممکن ہو جاتا ہے۔
  • میزوں کو کچا چھوڑنا: ماڈل ٹیبل کی ساخت کو حل نہیں کر سکتا۔ لائنوں کو سادہ متن میں تبدیل کریں۔
  • ایک حکمت عملی مسلط کرنا: پی ڈی ایف، کوڈ اور ٹیبل کو ایک ہی طریقہ سے تقسیم نہیں کیا گیا ہے۔ صنف کے مطابق ڈھالیں۔
احتیاط: چنکنگ کو ایک بار مت لگائیں اور اسے بھول جائیں۔ بازیافت کے معیار کی دوبارہ پیمائش کریں جیسے ہی دستاویز کی نئی قسمیں آتی ہیں (نئے سسٹم سے ٹکٹیں، اسکین شدہ پی ڈی ایف)۔ خراب ان پٹ ڈیٹا کا مطلب ہے برا ردعمل ("کچرا اندر، کچرا باہر")۔

خلاصہ میں

  • ٹکڑا بازیافت کی سب سے چھوٹی اکائی ہے۔ نہ بہت بڑا اور نہ بہت چھوٹا – اسے مواد کے مطابق متوازن ہونا چاہیے۔
  • ٹکڑا کا سائز فوکس سیاق و سباق کے توازن کی نشاندہی کرتا ہے۔ اوورلیپ باؤنڈری نقصان کا انتظام کرتا ہے۔
  • بریکٹ پر مبنی اور ساخت سے آگاہ چنکنگ زیادہ تر جنریشن سسٹمز کا نقطہ آغاز ہے۔ سیمنٹک چنکنگ اچھے معیار کی لیکن مہنگی ہے۔
  • ٹیبل، اسکرپٹ اور چیٹ جیسی اقسام کو اپنی حکمت عملی کی ضرورت ہوتی ہے۔ ٹیبلز کو سادہ متن میں تبدیل کریں۔
  • ہر ٹریک میں ماخذ/تاریخ/باب/پرائیویسی میٹا ڈیٹا اور سیکشن ٹائٹل شامل کریں۔ یہ فلٹرنگ اور اقتباس کی بنیاد ہے۔

درخواست کا کام

آپ جس دستاویز کا انتخاب کرتے ہیں اس کے ایک حصے کو تین مختلف طریقوں سے توڑ دیں: (1) 200 ٹوکن کے چھوٹے ٹکڑے، (2) 500 ٹوکن کے درمیانے حصے (70 ٹوکن اوورلیپ)، (3) ایک بڑے ٹکڑے۔ ہر حکمت عملی کے لیے وہی 3 سوالات پوچھیں، دستی طور پر نشان زد کریں کہ کون سا ٹکڑا لانا ہے، اور استدلال لکھیں کہ اس دستاویز کے لیے کون سی حکمت عملی بہترین کام کرتی ہے۔ پھر ہر ٹریک میں کم از کم چار میٹا ڈیٹا فیلڈز اور ایک "باب ٹائٹل" شامل کریں۔ اگر دستاویز میں ایک ٹیبل ہے تو، ٹیبل کی قطار کو "فیلڈ: ویلیو" فارمیٹ میں سادہ متن میں تبدیل کریں۔

چیک لسٹ

  • میں بتا سکتا ہوں کہ حصہ بازیافت کی سب سے چھوٹی اکائی ہے اور سائز فوکس سیاق و سباق کا توازن ہے۔
  • [ ] میں جانتا ہوں کہ اوورلیپ باؤنڈری نقصان کو کیوں روکتا ہے۔
  • [ ] میں بریکٹ پر مبنی، سیمنٹک اور ساخت سے آگاہ چنکنگ کے درمیان فرق کر سکتا ہوں۔
  • میں ٹیبل، کوڈ اور چیٹ کے لیے حکمت عملی کو اپنا سکتا ہوں۔
  • میں ہر ٹریک میں میٹا ڈیٹا اور باب کا عنوان شامل کرکے بازیافت کو تقویت دیتا ہوں۔