میں نے اپنے RAG پائپ لائن میں ایک reranker شامل کیا — اس نے سب کچھ خراب کر دیا
میں نے اپنے RAG پائپ لائن میں ایک reranker شامل کیا۔ اس نے فوراً میرے ٹیسٹ خراب کر دیے۔
ورژن 2 میں، میں نے FAISS اور BM25 کے ساتھ hybrid retrieval کا استعمال کیا تھا۔ اس نے میرے تمام 19 ٹیسٹ سوالات پاس کر لیے تھے۔ پھر، میں نے precision کو بہتر بنانے کے لیے ایک cross-encoder reranker شامل کیا۔
نظریہ سادہ ہے:
- مرحلہ 1: امیدواروں (candidates) کا ایک وسیع مجموعہ حاصل کرنے کے لیے تیز رفتار retrieval کا استعمال کریں۔
- مرحلہ 2: بہترین انتخاب کرنے کے لیے ایک ذہین reranker کا استعمال کریں۔
اسے نافذ کرنے میں 20 منٹ لگے۔ اس نے فوراً میرے 19 میں سے 2 ٹیسٹ فیل کر دیے۔
یہ ناکامی ڈیٹا فارمیٹ کی وجہ سے ہوئی۔ میرے ڈیٹا میں اس طرح کے گھنے (dense)، ٹیبلر چنکس (tabular chunks) شامل ہیں: "Company: Zentara Robotics | CEO: Iris Kallas | Employees: 287"
cross-encoder ماڈل کو قدرتی زبان (natural language) کے پیراگراف پر تربیت دی گئی تھی۔ جب اس نے ٹیبل کی ایک قطار دیکھی، تو اس نے اسے بہت کم اسکور دیا۔ اس نے سمجھا کہ یہ چنک غیر متعلقہ (irrelevant) ہے۔
Hybrid retrieval نے جواب ڈھونڈ لیا تھا، لیکن reranker نے اسے نکال دیا۔
میں نے اسے ٹھیک کرنے کے لیے 7 مختلف طریقے آزمائے:
- امیدواروں کے بڑے پول (candidate pool) کا استعمال کرنا۔
- reranker اور retriever کے اسکورز کو ملا کر (blending) استعمال کرنا۔
- rank fusion کا استعمال کرنا۔
ان میں سے کوئی بھی کام نہیں آیا۔ reranker کا اسکور اتنا منفی تھا کہ اس نے باقی سب چیزوں پر غلبہ پا لیا۔ ماڈل صرف کم رینکنگ نہیں کر رہا تھا، بلکہ وہ فعال طور پر ٹیبل فارمیٹ کو مسترد کر رہا تھا۔
میں نے ریاضی (math) کو ٹھیک کرنے کی کوشش چھوڑ دی اور ڈھانچے (structure) کو تبدیل کر دیا۔
reranker کو سب کچھ فیصلہ کرنے دینے کے بجائے، میں نے اپنے بہترین نتائج کو محفوظ کر لیا۔ میں نے ایک "guaranteed slot" کی حکمت عملی استعمال کی:
- اگر آپ ٹاپ 3 نتائج چاہتے ہیں، تو پہلے مرحلے سے ٹاپ 2 کو برقرار رکھیں۔
- صرف تیسرے نتیجے کے انتخاب کے لیے reranker کا استعمال کریں۔
یہ اس بات کو یقینی بناتا ہے کہ hybrid search کے نتائج حتمی فہرست میں موجود رہیں۔ reranker صرف باقی ماندہ سلاٹس کو بہتر بناتا ہے۔
نتیجہ: 19/19 ٹیسٹ پاس ہو گئے۔
سیکھے گئے اسباق:
- Rerankers فوری اپ گریڈ نہیں ہیں۔ وہ ساختہ یا ٹیبلر ڈیٹا (structured or tabular data) پر کارکردگی کو نقصان پہنچا سکتے ہیں۔
- آپ کا ایویلیوایشن سیٹ (evaluation set) آپ کا حفاظتی جال ہے۔ میرے 19 ٹیسٹوں کے بغیر، میں ایک خراب سسٹم لانچ کر دیتا۔
- جو کام کر رہا ہے اسے محفوظ رکھیں۔ اگر آپ کا پہلے مرحلے کا retrieval اچھا ہے، تو reranker کو اسے تبدیل (override) نہ کرنے دیں۔
reranker کی طرف جانے سے پہلے ایک مضبوط retriever بنائیں۔
Optional learning community: https://t.me/GyaanSetuAi
