فائدہ:
- ہائبرڈ تلاش کو نافذ کرنا جو ٹاپ-k کے انتخاب اور سیمنٹک اور کلیدی الفاظ کی تلاش کو یکجا کرتا ہے۔
- دوبارہ درجہ بندی کے ساتھ پہلی تلاش کی درستگی کو بڑھانا
- استفسار کی تبدیلی اور HyDE جیسی تکنیکوں سے مشکل سوالات کو مزید قابل تلاش بنانا
آپ نے دستاویزات کو اچھی طرح سے توڑا اور انہیں ویکٹر ڈیٹا بیس میں ڈال دیا۔ اب اصل کام: جب صارف کوئی سوال پوچھتا ہے تو صحیح ٹکڑوں کو لانا۔ اسے بازیافت کہا جاتا ہے اور یہ RAG معیار کی ریڑھ کی ہڈی ہے۔ فقرہ یاد رکھیں "ریٹریول کوالٹی = RAG کوالٹی"؛ یہ یونٹ بالکل اس معیار کو بہتر بنانے کا فن ہے۔ ہم ٹاپ-k سلیکشن سے لے کر ہائبرڈ سرچ تک، ری رینکنگ سے لے کر سوال کی تبدیلی تک عملی تکنیک کا احاطہ کریں گے۔
Top-k: ہم کتنے ٹکڑے لائیں گے؟
سب سے بنیادی ترتیب: تلاش سے کتنے ٹکڑے (k) واپس کرنے ہیں۔ اگر آپ کم (k=1) لاتے ہیں تو صحیح ٹکڑا غائب ہونے کا زیادہ خطرہ ہوتا ہے۔ اگر آپ بہت زیادہ (k=20) شامل کرتے ہیں، تو اس سے ماڈل میں شور بڑھ جائے گا اور ٹوکن کی قیمت بڑھ جائے گی۔
دو تصورات کے درمیان فرق کریں۔ یاد کریں: وہ شرح جس پر صحیح ٹکڑا بازیافت کرنے والوں میں شامل ہے۔ درستگی: وہ شرح جس پر بازیافت کیا جاتا ہے متعلقہ ہے۔ k بڑھنے سے یاد میں اضافہ ہوتا ہے لیکن درستگی میں کمی آتی ہے۔ مقصد دونوں میں توازن پیدا کرنا ہے۔
top-k
اثر
مناسب صورت حال
1-3
اعلی صحت سے متعلق، مس ہونے کا خطرہ
سادہ، ایک جوابی سوالات
4-8
توازن؛ زیادہ تر منظرنامے
جنرل کارپوریٹ RAG
10-20
زیادہ یاد، شور بڑھتا ہے۔
دوبارہ درجہ بندی کے ساتھ (نیچے)
ٹپ: عام اور طاقتور پیٹرن: چوڑا لائیں (k=20)، پھر دوبارہ رینکنگ کے ساتھ تنگ کریں (ٹاپ 4)۔ اس طرح آپ کو کچھ بھی نہیں ملے گا اور آپ ماڈل کو صاف سیاق و سباق دیتے ہیں۔
ہائبرڈ تلاش: دو تلاشوں کی طاقت
سیمنٹک (ویکٹر) تلاش معنی کو پکڑتی ہے لیکن چیزیں یاد نہیں کرتی ہیں: مکمل پروڈکٹ کوڈ ("XR-4471")، نایاب مخفف، مناسب نام، ورژن نمبر۔ ان عین مطابق کاموں کے لیے، پرانے اسکول کے مطلوبہ الفاظ کی تلاش—خاص طور پر کلاسک الگورتھم جسے BM25 کہتے ہیں—بہت اچھا ہے۔
ہائبرڈ تلاش دونوں کو یکجا کرتی ہے: دونوں سیمنٹک اور کلیدی الفاظ کی تلاش کام کرتی ہے، نتائج کو یکجا کرتی ہے۔ اس طرح، ایک سوال میں جیسے "وارنٹی کی مدت
انضمام عام طور پر RRF (Reciprocal Rank Fusion) کے ساتھ کیا جاتا ہے: وہ ٹریک جو دونوں فہرستوں میں زیادہ ہوتا ہے آگے آتا ہے۔
# ہائبرڈ بازیافت (تصوراتی) sem = vector_search(سوال، k=20) # meaningkey = bm25_search(سوال، k=20) # fullwordresult = rrf_merge(sem، key)[:8] # دونوں کو فیوز کریں، ٹاپ 8
دوبارہ درجہ بندی: دوسرا اور ہوشیار پاس
پہلی کال تیز لیکن بدتمیز ہو سکتی ہے۔ دوبارہ درجہ بندی کرنے والے امیدواروں کو پہلی تلاش سے ایک ایک کرکے واپس آنے والے امیدواروں کو زیادہ طاقتور ماڈل (عام طور پر ایک کراس انکوڈر — ایک ایسا ماڈل جو سوال اور اقتباس کو ایک ساتھ پڑھتا ہے اور مطابقت کو اسکور کرتا ہے) اور سب سے زیادہ متعلقہ افراد کو اوپر لے جاتا ہے۔
منطق یہ ہے: پہلی تلاش بڑی تعداد میں امیدواروں کو واپس لینے (20 امیدواروں) کو تفویض کرتی ہے، دوبارہ درجہ بندی کرنے والا درستگی کے لیے بہترین 4 کا انتخاب کرتا ہے۔ یہ دو مراحل کا نقطہ نظر ایک مرحلے کی تلاش سے کہیں زیادہ درست ہے۔ اس میں کچھ تاخیر اور اضافی پروسیسنگ لاگت آتی ہے۔ فائدہ معیار میں نمایاں اضافہ ہے۔
# دو مراحل کی بازیافت (تصوراتی) امیدوار = ہائبرڈ_تلاش (سوال، k=20) # وسیع، Quickscore = reranker.score (سوال، امیدوار) # ہر امیدوار کے سیاق و سباق کے لیے متعلقہ اسکور = rated.rank()[:4] # ٹاپ 4
سوال کو تبدیل کرنا
بعض اوقات مسئلہ تلاش میں نہیں بلکہ خود سوال میں ہوتا ہے۔ اگر صارف پوچھے "دور دراز کے کارکنوں کے بارے میں کیا؟" '، یہ اکیلے تلاش نہیں کیا جا سکتا (یہ واضح نہیں ہے کہ دور دراز کارکنوں کے لئے کیا ہے). یہاں استفسار کی تبدیلی کی تکنیکیں ہیں:
- دوبارہ لکھیں: سوال کو اسٹینڈ لون بنانے کے لیے گفتگو کی سرگزشت کا استعمال کریں: "دور دراز کے کارکنان سالانہ چھٹی کے حقدار کیا ہیں؟"
- کثیر استفسار: ایک ہی سوال کے 3 مختلف تاثرات بنائیں، ان سب کے ساتھ تلاش کریں، نتائج کو یکجا کریں۔ مختلف الفاظ مختلف ٹکڑے تلاش کرتے ہیں۔
- HyDE (مفروضہ دستاویز ایمبیڈنگز): پہلے ماڈل پر ایک "ممکنہ جواب" پرنٹ کریں، پھر ایمبیڈ کریں اور اس خیالی جواب کو تلاش کریں۔ خیالی جواب بعض اوقات بہتر پایا جاتا ہے کیونکہ یہ حقیقی دستاویز کے الفاظ کے قریب ہوتا ہے۔
# کثیر استفسار (تصوراتی) متغیرات = model.uret("اس سوال کو 3 مختلف طریقوں سے ظاہر کریں: " + سوال)tum_sonuc = [] v کے لیے مختلف قسموں میں: all_sonuc += vector_intermediate(v, k=6)context = singular_and_order(tum_result)[:6]
کمزور بازیافت / مضبوط بازیافت
کمزور (واحد مرحلہ، صرف سیمنٹکس، مستقل k=3):
نتیجہ = vector_search(سوال، k=3)# مسئلہ: پروڈکٹ کوڈ چھوٹ گیا، مشکل سوالات میں صحیح حصہ 3 درج نہیں کر سکتے۔
طاقتور (ہائبرڈ + وائیڈک + ری رینکنگ + ملٹی استفسار اگر ضروری ہو):
امیدوار = hybrid_search(دوبارہ لکھنا(سوال، ماضی)، k=20) سیاق و سباق = reranker.score(سوال، امیدوار).پہلا(4)# عین مطابق مماثلت اور معنی دونوں پکڑے گئے ہیں؛ یہ بہترین 4 ماڈلز پر جاتا ہے۔
تین چھوٹے کیسز
کیس 1 - پروڈکٹ کوڈ بچ گیا۔ سپورٹ ٹیم پر خالص سیمنٹک تلاش "RTX-9080" سوال "RTX-9080 ڈرائیور کی غلطی" میں لفظی طور پر نہیں مل سکی۔ وہ اسی طرح کے ناموں کے ساتھ دوسری مصنوعات لا رہا تھا۔ جب ہائبرڈ تلاش شامل کی گئی تو درست کوڈ کی مماثلت ہوئی اور صحیح مضامین کی واپسی کی شرح 58% سے بڑھ کر 92% ہوگئی۔
کیس 2 - دوبارہ درجہ بندی کا فرق۔ ایک پیرا لیگل k=5 کے ساتھ کام کر رہا تھا لیکن صحیح آئٹم زیادہ تر وقت 7-10 ہوتا ہے۔ وہ صفوں میں رہ رہا تھا۔ جب k=20 + ری رینکنگ متعارف کرائی گئی تھی، صحیح مضمون کے ٹاپ 3 میں ہونے کی شرح 61% سے بڑھ کر 94% ہوگئی۔ تاخیر میں صرف 300ms کا اضافہ ہوا - ایک قابل قبول سمجھوتہ۔
کیس 3 - سیاق و سباق کے بغیر فالو اپ سوال۔ HR اسسٹنٹ میں، صارف پوچھتا ہے "پارٹ ٹائمرز کے بارے میں کیا؟" میں نے پوچھا تو سسٹم غیر متعلقہ حصے لے آیا۔ استفسار کو دوبارہ لکھنے سے (ماضی سے "سالانہ چھٹی" کے سیاق و سباق کو کھینچ کر اور "پارٹ ٹائم ملازمین سالانہ چھٹی کے حقدار ہیں" شامل کرنے سے)، درست جواب کی شرح 40% سے بڑھ کر 86% ہو گئی۔
عام غلطیاں
- مکمل طور پر معنوی تلاش پر انحصار کرنا: پروڈکٹ کوڈ، مخفف، مناسب نام چھوٹ گیا ہے۔ ہائبرڈ شامل کریں۔
- k کو بہت چھوٹا رکھنا: صحیح ٹکڑا فہرست میں داخل نہیں ہو سکتا۔ اسے چوڑا بنائیں اور دوبارہ درجہ بندی کے ساتھ تنگ کریں۔
- دوبارہ درجہ بندی کے بارے میں کبھی نہیں سوچنا: پہلی تلاش بدتمیز ہے؛ دوسرا سمارٹ پاس معیار کو نمایاں طور پر بہتر بناتا ہے۔
- فالو اپ سوالات کی تلاش جیسا کہ ہے: سیاق و سباق کے بغیر سوال بے معنی تلاش کرتا ہے۔ دوبارہ لکھنا
- K (دوبارہ رینک کے بغیر): ماڈل شور سے بھرا ہوا ہے، ردعمل بگڑا ہوا ہے اور لاگت بڑھ جاتی ہے۔
خبردار: ہر تکنیک لاگت اور تاخیر کا اضافہ کرتی ہے۔ کثیر استفسار کا مطلب ہے 3 گنا تلاش، دوبارہ درجہ بندی کا مطلب ہے اضافی ماڈل کال۔ پہلے سادہ ہائبرڈ + معقول k کے ساتھ شروع کریں؛ جہاں واقعی ضرورت ہو وہاں بھاری تکنیکوں کی پیمائش اور اضافہ کریں۔ بغیر پیمائش کے شامل کرنا۔
خلاصہ میں
- Top-k یادداشت اور درستگی کے درمیان توازن ہے۔ عام طور پر 4-8 ایک اچھی شروعات ہے۔
- ہائبرڈ تلاش کلیدی لفظ (BM25) تلاش کے ساتھ سیمنٹک تلاش کو یکجا کرتی ہے۔ عین مطابق مماثلتیں بازیافت کرتا ہے۔
- ری رینکنگ ایک مضبوط ماڈل کے ساتھ وسیع ابتدائی تلاش سے امیدواروں کو دوبارہ اسکور کرتی ہے اور بہترین کا انتخاب کرتی ہے۔
- سوال کی تبدیلی (دوبارہ لکھنا، کثیر استفسار، HyDE) مشکل اور سیاق و سباق سے پاک سوالات کو تلاش کے قابل بناتا ہے۔
- مضبوط پیٹرن: وسیع بازیافت → ہائبرڈ کے ساتھ ضم → دوبارہ رینک کے ساتھ تنگ؛ لیکن ہر ایک تکنیک کو اس کی پیمائش کرکے شامل کریں۔
درخواست کا کام
پچھلی اکائیوں کے اعداد و شمار کے ساتھ 6 مشکل سوالات تیار کریں: کم از کم 2 عین مطابق مماثلت (پروڈکٹ کوڈ، مخفف، تاریخ)، 2 سیمنٹک (مختلف الفاظ کے ساتھ ایک ہی موضوع)، 2 بغیر سیاق و سباق کے فالو اپ سوالات۔ (1) پہلے ہر سوال کو خالص سیمنٹک تلاش کے طور پر سوچیں اور دستی طور پر نشان زد کریں کہ کون سے حصے سامنے آئیں گے۔ (2) ہائبرڈ اور دوبارہ درجہ بندی کے ساتھ انہی سوالات کا دوبارہ جائزہ لیں۔ (3) سیاق و سباق کے بغیر فالو اپ سوالات کو دوبارہ لکھیں۔ ٹیبلر فارم میں نوٹ کریں کہ کون سی تکنیک سوال کی قسم میں فرق کرتی ہے۔
چیک لسٹ
- [ ] میں جانتا ہوں کہ top-k ایک یادداشت کی درستگی کا توازن اور ایک معقول آغاز کی حد ہے۔
- [ ] میں وضاحت کر سکتا ہوں کہ ہائبرڈ سرچ سے عین مماثلت کیوں بحال ہوتی ہے۔
- میں دوبارہ درجہ بندی کی دو قدمی منطق کا اطلاق کر سکتا ہوں (وسیع → سمارٹ تنگ)۔
- [ ] میں سیاق و سباق کے بغیر فالو اپ سوالات کو دوبارہ لکھنے کی ضرورت کو تسلیم کرتا ہوں۔
- [ ] میں تصدیق کرتا ہوں کہ میں نے بھاری تکنیکیں ناپ کر شامل کیں، ناپ کر نہیں۔