ایک ڈویلپر کا RAG پروٹو ٹائپ کسی بھی ایسے سوال کا جواب دینے سے انکار کر دیتا تھا جس کی cosine similarity 0.50 سے کم ہو۔ یہ بالکل درست کام کر رہا تھا—جب تک کہ embedding model کو تبدیل نہیں کیا گیا۔ اس کے بعد، guard خاموشی سے غلط جوابات کو گزرنے لگا۔ یہ واقعہ ثابت کرتا ہے کہ hard-coded similarity threshold مختلف ماڈلز کے درمیان ناکام ہو سکتا ہے، جو کہ ایک ایسا خطرہ ہے جو کسی بھی ایسے سسٹم کے لیے ہے جو حفاظتی چیک کے لیے embedding similarity پر انحصار کرتا ہے۔

تھریش ہولڈ (threshold) کیوں اہم تھا

Retrieval-augmented generation (RAG) پائپ لائنز اکثر similarity guard کا استعمال کرتی ہیں: اگر کسی سوال اور اس کے قریب ترین دستاویز کے درمیان cosine similarity پہلے سے طے شدہ نمبر سے کم ہو جائے، تو سسٹم جواب دینے سے رک جاتا ہے۔ جب حاصل کردہ سیاق و سباق (context) کمزور ہو، تو یہ guard ماڈل کو hallucinating (غلط معلومات تخلیق کرنے) سے روکتا ہے۔ اصل سیٹ اپ میں، 0.50 کا threshold سسٹم کو درست رکھتا تھا—جن سوالات کے جواب نہیں دیے جا سکتے تھے ان کا اسکور لائن سے نیچے رہتا تھا، اور جن کے جواب دیے جا سکتے تھے ان کا اوپر۔

جب embedding backend تبدیل ہوا، تو وہی 0.50 کا cut-off اب دونوں گروہوں کو الگ نہیں کر پا رہا تھا۔ پائپ لائن نے بغیر کسی کریش یا واضح غلطی کے، پر اعتماد لیکن غلط جوابات دینا شروع کر دیے۔ یہ ناکامی معیاری ranking metrics سے بچ نکل گئی اور اس وقت سامنے آئی جب ایک انسان نے اس تبدیلی (drift) کو محسوس کیا۔

جیومیٹری (Geometry) عالمگیر نہیں ہے

ہر embedding model زبان کو اپنی مخصوص جیومیٹری کے ساتھ ایک high-dimensional space میں نقش کرتا ہے۔ اس لیے cosine similarity کی قیمتیں ایک ماڈل سے دوسرے ماڈل میں مختلف معنی رکھتی ہیں۔ 0.50 کا اسکور ایک ماڈل کے لیے واضح فرق کے کنارے پر ہو سکتا ہے اور دوسرے کے لیے گہرے اوورلیپ (overlap) کے اندر۔

  • Voyage-3 – 0.50 کی لائن کم اسکور والے ناقابلِ جواب سوالات اور زیادہ اسکور والے قابلِ جواب سوالات کے درمیان واقع ہے۔ Guard اپنی مرضی کے مطابق کام کرتا ہے۔
  • BGE-Small – بہت سے ناقابلِ جواب سوالات کا اسکور 0.50 سے زیادہ ہوتا ہے، اس لیے guard کبھی متحرک نہیں ہوتا۔ cut-off کو 0.70 تک بڑھانے سے حفاظتی مارجن بحال ہو جاتا ہے۔
  • Hashing-64 – قابلِ جواب اور ناقابلِ جواب سوالات کے اسکور اس قدر گہرائی سے ملے ہوئے ہیں کہ کوئی بھی واحد threshold انہیں الگ نہیں کر سکتا؛ یہ ماڈل similarity guard کو سپورٹ کرنے کے لیے بہت کمزور ہے۔

یہ کیسز ایک وسیع تر حقیقت کی وضاحت کرتے ہیں: ایک threshold کسی مخصوص ماڈل-ڈیٹا جوڑی سے تعلق رکھتا ہے، نہ کہ یہ کوئی عالمگیر اصول ہے۔

ایک مستقل قیمت (constant) کی پوشیدہ لاگت

Similarity thresholds بہت سے downstream tasks میں نظر آتے ہیں:

  • semantic caching
  • duplicate detection
  • document relevance checks
  • entity matching

ایک مستقل قیمت (constant value) کا استعمال یہ فرض کر لیتا ہے کہ تمام embedding models کا اسکور ڈسٹری بیوشن (score distribution) ایک جیسا ہے—یہ ایک خطرناک مفروضہ ہے۔ جب یہ مفروضہ غلط ثابت ہوتا ہے، تو سسٹم خاموشی سے غلط پر اعتماد آؤٹ پٹ پیدا کرتا ہے، جس سے صارف کا اعتماد کم ہوتا ہے اور غلط ڈیٹا کے ذریعے اگلے مراحل کے فیصلوں کو متاثر کیا جاتا ہے۔

ماڈل کے مطابق guards کی کیلیبریشن (Calibrating)

اس کا حل سادہ ہے: کبھی بھی hard-coded constant استعمال نہ کریں۔ threshold کو ایک hyper-parameter کے طور پر لیں جسے ہر نئے embedding model کے لیے ٹیون (tune) کرنا ضروری ہے۔

  1. ایک مناسب، لیبل شدہ validation set تیار کریں جس میں قابلِ جواب اور ناقابلِ جواب دونوں قسم کے سوالات شامل ہوں۔
  2. ٹارگٹ ماڈل کا استعمال کرتے ہوئے ہر query-document pair کے لیے cosine similarities کا حساب لگائیں۔
  3. دونوں distributions کو پلاٹ کریں یا false-confident rate معلوم کریں—یعنی ناقابلِ جواب سوالات کا وہ تناسب جو منتخب کردہ threshold سے تجاوز کر جاتا ہے۔
  4. وہ کم ترین similarity value منتخب کریں جو false-confident rate کو قابلِ قبول خطرے کے درجے سے نیچے رکھے۔

چونکہ مقصد ضرورت سے زیادہ اعتماد (over-confidence) کو روکنا ہے، اس لیے traditional ranking metrics جیسے کہ mean reciprocal rank (MRR) کافی نہیں ہیں۔ false-confident rate براہ راست guard کی ناکامی کے طریقے کی پیمائش کرتا ہے۔

مخالف نقطہ نظر: “کچھ ماڈلز براہِ راست کام کرتے ہیں”

یہ سچ ہے کہ کچھ بہتر طریقے سے کام کرنے والے ماڈلز، جیسے کہ مثال میں Voyage-3، اتفاقاً 0.50 کے guard کے ساتھ مطابقت رکھتے ہیں۔ اس کا مطلب یہ نہیں کہ مستقبل میں بھی استحکام رہے گا۔ ماڈل اپ ڈیٹس، fine-tuning، یا بنیادی corpus میں تبدیلیاں بھی similarity distribution کو بدل سکتی ہیں، جس سے guard دوبارہ ناکام ہو سکتا ہے۔ محض ایک خوش قسمتی پر بھروسہ کرنا لاپرواہی کو دعوت دینا ہے۔

آگے کیا دیکھنا ہے

-

-

-

خلاصہ

Similarity threshold کوئی عالمگیر حفاظتی سوئچ نہیں ہے؛ یہ ایک ماڈل کے لیے مخصوص guard ہے جسے ہر بار تبدیل کرنے پر calibrate کرنا ضروری ہے جب آپ embedding backend یا ڈیٹا کو تبدیل کرتے ہیں۔ اس حقیقت کو نظر انداز کرنے سے RAG سسٹمز خاموش hallucination کا شکار ہو سکتے ہیں، جو کہ guard کے اصل مقصد کو ہی ختم کر دیتا ہے۔ آگے بڑھنے کا واحد قابلِ اعتماد راستہ باقاعدہ per-model calibration اور false-confident rate کی مسلسل نگرانی ہے۔