री-रैंकिंग और क्वेरी रीराइटिंग
पहली खोज एक बड़ा जाल फेंकती है। री-रैंकर हर उम्मीदवार को ध्यान से पढ़ता है और सबसे अच्छे वाले को सबसे ऊपर रखता है। क्वेरी रीराइटिंग उन सवालों को ठीक करती है जो अस्पष्ट, छोटे या किसी दूसरी भाषा या लिपि में होते हैं।
60 सेकंड में
री-रैंकिंग और क्वेरी रीराइटिंग
पहली खोज एक बड़ा जाल फेंकती है। री-रैंकर हर उम्मीदवार को ध्यान से पढ़ता है और सबसे अच्छे वाले को सबसे ऊपर रखता है। क्वेरी रीराइटिंग उन सवालों को ठीक करती है जो अस्पष्ट, छोटे या…
दो चरण: रिट्रीव करें, फिर री-रैंक करें
| Bi-encoder (एम्बेडिंग्स) | Cross-encoder (री-रैंकर) | |
|---|---|---|
| पढ़ता है | सवाल और चंक को अलग-अलग | सवाल और चंक को एक साथ |
| स्पीड | तेज़; चंक वेक्टर्स पहले से तैयार होते हैं | धीमा; प्रति सवाल-चंक जोड़े पर एक मॉडल कॉल |
| इसके लिए इस्तेमाल करें | पूरे कलेक्शन में खोजने के लिए | टॉप उम्मीदवारों को फिर से क्रमबद्ध करने के लिए, उदाहरण के लिए 20 से 100 |
| क्वालिटी | उम्मीदवारों को ढूँढने में अच्छा | अक्सर सबसे अच्छे कुछ को चुनने में बेहतर |
- 1
व्यापक पहली खोज
हाइब्रिड सर्च मान लीजिए टॉप 50 उम्मीदवार लौटाती है। - 2
री-रैंक करें
क्रॉस-एन्कोडर हर सवाल-चंक जोड़े को स्कोर देता है। - 3
छांटें
प्रॉम्प्ट के लिए सबसे अच्छे कुछ, उदाहरण के लिए 5, को रखें। - 4
मापें
जाँचें कि क्या री-रैंकिंग वास्तव में आपके टेस्ट सेट पर परिणामों को बेहतर बनाती है, और इससे लेटेंसी में कितनी बढ़ोतरी होती है।
क्वेरी रीराइटिंग
- फ़ॉलो-अप्स को स्टैंडअलोन बनाएं। चैट हिस्ट्री का उपयोग करके "और कॉन्ट्रैक्ट स्टाफ़ के लिए?" बन जाता है "कॉन्ट्रैक्ट स्टाफ़ के लिए कैज़ुअल लीव के नियम"।
- मल्टी-क्वेरी। किसी मॉडल से 3–4 अलग-अलग वाक्य बनाने को कहें, प्रत्येक के साथ सर्च करें, और नतीजों को RRF के साथ मिलाएँ। यह तब मदद करता है जब दस्तावेज़ यूज़र्स की तुलना में अलग शब्दों का उपयोग करते हैं।
- टर्म्स का विस्तार करें। जाने-माने पर्यायवाची और संक्षिप्तीकरण (abbreviations) जोड़ें: "PF" और "भविष्य निधि", "DOJ" और "जॉइनिंग की तारीख"।
- काल्पनिक उत्तर (Hypothetical answer)। किसी मॉडल से एक छोटा काल्पनिक उत्तर लिखने को कहें और उस टेक्स्ट के साथ खोजें, क्योंकि यह सवाल की तुलना में दस्तावेज़ों से अधिक मिलता-जुलता हो सकता है। इसे कभी-कभी HyDE कहा जाता है। काल्पनिक उत्तर केवल खोजने के लिए है; इसे कभी भी उत्तर के रूप में न दिखाएं।
def call_model(prompt: str) -> str: ... # plug in your provider
def hybrid_search(query: str, k: int = 20) -> list[str]: ... # your search, returns chunk ids
def rrf(rankings, k=60):
scores = {}
for ranking in rankings:
for rank, doc_id in enumerate(ranking, start=1):
scores[doc_id] = scores.get(doc_id, 0.0) + 1.0 / (k + rank)
return sorted(scores, key=lambda d: (-scores[d], d))
def multi_query_search(question: str, n: int = 3) -> list[str]:
prompt = (
f"Write {n} different search queries for this question, one per line. "
"Keep names, numbers and codes exactly as written.\n\nQuestion: " + question
)
rewrites = [q.strip() for q in call_model(prompt).splitlines() if q.strip()][:n]
queries = [question] + rewrites # always keep the original
return rrf([hybrid_search(q) for q in queries])भारतीय-भाषा और ट्रांसलिटरेट की गई क्वेरीज़
| समस्या | क्या मदद करता है |
|---|---|
| कीवर्ड सर्च चूक जाती है क्योंकि क्वेरी और दस्तावेज़ अलग-अलग लिपियों का उपयोग करते हैं | क्वेरी को दस्तावेज़ों की लिपि में ट्रांसलिटरेट करें, या इसका अनुवाद करें, और दोनों वर्ज़न के साथ खोजें |
| एक ही रोमनीकृत (romanised) शब्द की कई स्पेलिंग | सामान्य स्पेलिंग्स को सामान्य (normalise) करें; वेक्टर सर्च पर अधिक भरोसा करें; वास्तविक लॉग्स से एक पर्यायवाची सूची जोड़ें |
| एम्बेडिंग मॉडल यूज़र की भाषा में कमज़ोर है | अपनी असली क्वेरीज़ पर मल्टीलिंगुअल एम्बेडिंग मॉडल्स का परीक्षण करें; एक अतिरिक्त खोज के रूप में क्वेरी का दस्तावेज़ों की भाषा में अनुवाद करें |
| एक ही क्वेरी में मिली-जुली भाषा (कोड-मिक्सिंग) | "order" और "refund" जैसे अंग्रेज़ी शब्दों को कीवर्ड के रूप में रखें; एक अनुवादित वर्ज़न भी चलाएं; RRF के साथ मिलाएँ |
| उत्तर यूज़र की भाषा में होना चाहिए | दस्तावेज़ों की भाषा में खोजें, फिर मॉडल से मूल का हवाला देते हुए, यूज़र की भाषा में उत्तर देने को कहें |
और देखें और पढ़ें
लैब
एक सपोर्ट बॉट के लिए एक बहुभाषी क्वेरी टेस्ट शीट और एक लिखित रीराइटिंग योजना।
समस्या
पूरे भारत में इस्तेमाल होने वाले एक ऑनलाइन ग्रॉसरी ऐप के सपोर्ट बॉट की कल्पना करें। इसके हेल्प पेज अंग्रेज़ी और हिंदी में हैं।
- उपयोगकर्ताओं के असली जैसे लगने वाले 10 सवाल लिखें: कम से कम 3 रोमन लिपि वाली हिंदी या किसी अन्य रोमन लिपि वाली भारतीय भाषा में, 2 किसी मूल लिपि में, 2 कोड-मिक्स्ड, 1 फ़ॉलो-अप सवाल, और 1 ऑर्डर आईडी के साथ।
- हर एक के लिए, वह क्वेरी या क्वेरीज़ लिखें जिन्हें आप रीराइट करने के बाद असल में सर्च करेंगे (स्टैंडअलोन, अनुवादित, ट्रांसलिटरेटेड, या बिना बदलाव के)।
- चिह्नित करें कि किन सवालों को आज़ादी से रीराइट नहीं किया जाना चाहिए, और क्यों (उदाहरण के लिए, ऑर्डर आईडी)।
- अपने रीराइटिंग प्रॉम्प्ट के लिए ऐसे तीन नियम लिखें जो ड्रिफ्ट को रोकें।
आपका काम तब पूरा होगा जब
कठिन सवाल
उत्तर देखने से पहले ख़ुद जवाब देने की कोशिश करें। अगर आप इनके जवाब दे सकते हैं, तो आप पाठ समझ गए हैं।
Q1मल्टी-क्वेरी रीराइटिंग ने आपके जवाबों को औसतन बेहतर बना दिया, लेकिन प्रोडक्ट कोड वाले सवालों के लिए बहुत खराब कर दिया। इसका संभावित कारण क्या है, और इसका समाधान क्या है?दिखाएं
रीराइटर ने शायद कोड को बदल दिया, हटा दिया या "सही" कर दिया, और फिर रीराइट की गई क्वेरीज़ फ़्यूज़ की गई लिस्ट पर हावी हो गईं। समाधान: मूल क्वेरी को सर्च में से एक के रूप में रखें, रीराइटर को कोड और नाम बिल्कुल वैसे ही कॉपी करने का निर्देश दें, और जब क्वेरी में कोई आईडी पैटर्न हो तो रीराइटिंग छोड़ दें। फिर अपने टेस्ट सेट में कोड वाले सवालों को अलग से मापें।
Q2आपके री-रैंकर ने अंग्रेज़ी के नतीजों को बेहतर बनाया लेकिन हिंदी के नतीजों को खराब कर दिया। आप क्या करेंगे?दिखाएं
री-रैंकर की ट्रेनिंग भाषाओं की जाँच करें; हो सकता है कि यह हिंदी में कमज़ोर हो। विकल्प: किसी मल्टीलिंगुअल री-रैंकर को आज़माएँ, सवाल और चंक के अनुवादित वर्शन को फिर से रैंक करें, या री-रैंकर का इस्तेमाल केवल उन्हीं भाषाओं के लिए करें जहाँ यह मदद करता है। हर भाषा के लिए अलग-अलग टेस्ट स्कोर रखें ताकि एक भाषा में हुआ फ़ायदा दूसरी भाषा के नुकसान को छिपा न सके।
अक्सर पूछे जाने वाले सवाल
मुझे कितने उम्मीदवारों को री-रैंक करना चाहिए?
इतने कि सही चंक आमतौर पर उनके बीच हो, और इतने कम कि लेटेंसी स्वीकार्य हो। अपने उम्मीदवार संख्या पर रिकॉल (recall) को मापें: यदि सही चंक अक्सर 80वें स्थान पर होता है, तो केवल शीर्ष 20 को री-रैंक करने से मदद नहीं मिल सकती।
क्या री-रैंकिंग हमेशा मदद करती है?
अक्सर, लेकिन हमेशा नहीं। मुख्य रूप से अंग्रेज़ी वेब टेक्स्ट पर प्रशिक्षित एक री-रैंकर आपके तमिल सपोर्ट टिकटों पर खराब प्रदर्शन कर सकता है। अपने खुद के टेस्ट सेट पर इसके साथ और इसके बिना तुलना करें।
क्या क्वेरी रीराइटिंग अतिरिक्त मॉडल कॉल के लायक है?
छोटे, अस्पष्ट और फ़ॉलो-अप सवालों के लिए यह अक्सर फायदेमंद होती है। कोड खोजने जैसी सटीक खोजों के लिए, यह लागत और जोखिम बढ़ाती है। कुछ सिस्टम केवल तभी रीराइट करते हैं जब सवाल फ़ॉलो-अप जैसा लगता है या जब पहली खोज में बहुत कम परिणाम मिलते हैं।
क्या मुझे इसके बजाय अपने सभी दस्तावेज़ों का अंग्रेज़ी में अनुवाद करना चाहिए?
यह एक विकल्प है, लेकिन अनुवाद में अर्थ खो सकता है, और संदर्भों (citations) को मूल टेक्स्ट की ओर संकेत करना चाहिए। कई टीमें मूल को रखती हैं, और इसके बजाय क्वेरी का अनुवाद या ट्रांसलिटरेशन करती हैं, फिर यूज़र की भाषा में उत्तर देती हैं।
पाठ का टेस्ट
5 सवाल। पास होने और इस पाठ को पूरा करने के लिए 3 सही होने चाहिए (60%)।