एम्बेडिंग्स और सिमिलैरिटी सर्च
एम्बेडिंग टेक्स्ट को संख्याओं की एक लिस्ट में बदल देती है, ताकि मिलते-जुलते अर्थ वाले टेक्स्ट एक-दूसरे के करीब रहें। जानें कि समानता कैसे मापी जाती है और सर्च कैसे तेज़ बनी रहती है।
60 सेकंड में
एम्बेडिंग्स और सिमिलैरिटी सर्च
एम्बेडिंग टेक्स्ट को संख्याओं की एक लिस्ट में बदल देती है, ताकि मिलते-जुलते अर्थ वाले टेक्स्ट एक-दूसरे के करीब रहें। जानें कि समानता कैसे मापी जाती है और सर्च कैसे तेज़ बनी रहती…
नज़दीकी मापना: कोसाइन सिमिलैरिटी
import numpy as np
# Made-up 4-number "embeddings", only to show the maths.
# Real embedding models return hundreds or thousands of numbers.
docs = {
"How to reset your UPI PIN": np.array([0.9, 0.1, 0.0, 0.2]),
"Refund for a failed UPI payment": np.array([0.7, 0.7, 0.1, 0.0]),
"Monsoon sowing tips for paddy": np.array([0.0, 0.1, 0.9, 0.3]),
}
# Pretend this is the vector for "money was cut but the payment failed".
query = np.array([0.6, 0.8, 0.0, 0.1])
def cosine(a, b):
return float(a @ b / (np.linalg.norm(a) * np.linalg.norm(b)))
ranked = sorted(docs, key=lambda title: cosine(query, docs[title]), reverse=True)
for title in ranked:
print(f"{cosine(query, docs[title]):.3f} {title}")सर्च को तेज़ बनाना: एप्रोक्सीमेट नियरेस्ट नेबर
| विकल्प | किसके लिए अच्छा है | किस बात का ध्यान रखें |
|---|---|---|
| Brute-force (exact) | छोटे कलेक्शन्स, टेस्ट्स, ANN के नतीजों की जाँच करने के लिए | बड़े पैमाने पर धीमा |
| HNSW ग्राफ | बड़े कलेक्शन्स पर तेज़ सर्च | ज़्यादा मेमोरी इस्तेमाल करता है; कुछ असली पड़ोसियों को छोड़ सकता है; सेटिंग्स में स्पीड पाने के लिए रिकॉल छोड़ना पड़ता है |
| दूसरे ANN तरीके (जैसे क्लस्टरिंग या कम्प्रेशन) | बहुत बड़े कलेक्शन्स, कम मेमोरी | आम तौर पर ज़्यादा सटीकता खो देते हैं; ट्यूनिंग की ज़रूरत होती है |
वे बातें जहाँ लोग गलती करते हैं
- डॉक्यूमेंट्स और सवालों के लिए एक ही मॉडल का इस्तेमाल करें। दो अलग-अलग एम्बेडिंग मॉडल्स के वेक्टर्स अलग-अलग "नक्शों" पर होते हैं और उनकी आपस में तुलना नहीं की जा सकती।
- कुछ मॉडल्स को प्रीफ़िक्स या मोड की ज़रूरत होती है। कुछ एम्बेडिंग मॉडल्स चाहते हैं कि आप टेक्स्ट को क्वेरी या डॉक्यूमेंट के रूप में मार्क करें। मॉडल कार्ड पढ़ें।
- मिलता-जुलता होने का मतलब सही होना नहीं है। "7 दिनों के भीतर रिफंड की अनुमति है" और "7 दिनों के बाद रिफंड की अनुमति नहीं है" वेक्टर स्पेस में बहुत करीब हो सकते हैं। समानता संभावित विकल्प ढूंढती है; जवाब वाले चरण को ध्यान से पढ़ना चाहिए।
- हूबहू शब्द छूट सकते हैं। प्रोडक्ट कोड्स, एरर नंबर्स और दुर्लभ नामों को अक्सर अकेले वेक्टर्स ठीक से मैच नहीं कर पाते। हाइब्रिड सर्च वाला पाठ इसे ठीक करता है।
- भाषाओं का सपोर्ट अलग-अलग होता है। कुछ एम्बेडिंग मॉडल्स हिंदी, तमिल या बंगाली को अच्छी तरह संभालते हैं, दूसरे खराब तरीके से। अपने यूज़र्स के असली सवालों के साथ टेस्ट करें।
[0.0, 0.2, 0.8, 0.4] कर दें। अब कौन सा डॉक्यूमेंट पहले आता है, और क्यों?और देखें और पढ़ें
लैब
मनगढ़ंत वेक्टर्स पर काम करने वाली एक ब्रूट-फोर्स वेक्टर सर्च, और इस पर एक नोट कि हर नतीजा क्या दिखाता है।
समस्या
आपको Python 3 और numpy (pip install numpy) की ज़रूरत होगी। किसी API की की ज़रूरत नहीं है; सभी वेक्टर्स मनगढ़ंत हैं।
- शुरुआती कोड चलाएँ और रैंकिंग देखें।
- अपने मनगढ़ंत वेक्टर्स के साथ दो और डॉक्यूमेंट्स जोड़ें, उदाहरण के लिए बस पास या परीक्षा के नतीजों के बारे में। संख्याएं इस तरह चुनें कि उनमें से एक क्वेरी से मैच हो जाए।
searchको बदलें ताकि वह केवल उसी सिमिलैरिटी वाले नतीजे दिखाए जो एक थ्रेशोल्ड से ऊपर हों। 0.5 और 0.9 आज़माएं और लिखें कि क्या बदलाव आता है।- दो वाक्य लिखें कि असली थ्रेशोल्ड को टेस्ट करके क्यों चुना जाना चाहिए, अंदाज़ा लगाकर क्यों नहीं।
प्रैक्टिस लैब
कोड में बदलाव करें और इसे रन करें। Python आपके ब्राउज़र में चलता है — हमारे सर्वर पर कुछ नहीं भेजा जाता।
कोई आउटपुट नहीं। वैल्यूज़ देखने के लिए print(...) जोड़ें।
आपका काम तब पूरा होगा जब
कठिन सवाल
उत्तर देखने से पहले ख़ुद जवाब देने की कोशिश करें। अगर आप इनके जवाब दे सकते हैं, तो आप पाठ समझ गए हैं।
Q1शुरुआती कोड मैट्रिक्स बनाने से पहले वेक्टर्स को नॉर्मलाइज़ क्यों करता है?दिखाएं
हर वेक्टर को 1 की लंबाई में नॉर्मलाइज़ करने के बाद, दो वेक्टर्स का डॉट प्रोडक्ट उनकी कोसाइन सिमिलैरिटी के बराबर होता है। इससे कोड हर जोड़ी के लिए लंबाइयों से भाग देने के बजाय, एक तेज़ मैट्रिक्स मल्टीप्लिकेशन से सभी डॉक्यूमेंट्स को स्कोर कर पाता है। इसका मतलब यह भी है कि लंबे और छोटे वेक्टर्स की तुलना केवल दिशा के आधार पर की जाती है।
Q2एक वेक्टर सर्च "Can I get a refund within 7 days?" के लिए सबसे ऊपर "Refund not allowed after 7 days" दिखाती है। क्या सर्च खराब हो गई है?दिखाएं
ज़रूरी नहीं। दोनों टेक्स्ट एक ही विषय के बारे में हैं और उनके ज़्यादातर अर्थ आपस में मिलते हैं, इसलिए वे वेक्टर स्पेस में पास-पास रहते हैं। रिट्रीवल का काम काम के विकल्प ढूंढना है; जवाब वाले चरण को चंक को ध्यान से पढ़ना चाहिए और सही जवाब देना चाहिए। एक री-रैंकर जो सवाल और चंक को एक साथ पढ़ता है, वह भी ऐसे मामलों को बेहतर तरीके से क्रमबद्ध करने में मदद कर सकता है।
अक्सर पूछे जाने वाले सवाल
मैं कोई एम्बेडिंग मॉडल कैसे चुनूँ?
असली सवालों का एक छोटा टेस्ट सेट बनाएं जिनके सही चंक्स आपको पता हों, और उस पर दो या तीन चुनिंदा मॉडल्स को आज़माएं। अपनी भाषाओं में उनकी क्वालिटी, वेक्टर साइज़ (बड़ा होने का मतलब ज़्यादा स्टोरेज), स्पीड, लागत और लाइसेंस को देखें। पब्लिक लीडरबोर्ड एक शुरुआत हो सकते हैं, लेकिन आपका खुद का टेस्ट ज़्यादा मायने रखता है।
क्या मुझे कोसाइन सिमिलैरिटी इस्तेमाल करनी चाहिए या डॉट प्रोडक्ट?
अगर वेक्टर्स 1 की लंबाई में नॉर्मलाइज़्ड हैं, तो वे एक जैसी रैंकिंग देते हैं। कई एम्बेडिंग मॉडल्स इनमें से किसी एक की सलाह देते हैं; मॉडल कार्ड का पालन करें और इंडेक्स बनाते समय और सर्च करते समय एक ही विकल्प का इस्तेमाल करें।
क्या कोई वेक्टर्स से मेरे डॉक्यूमेंट्स पढ़ सकता है?
एम्बेडिंग्स को उतना ही संवेदनशील समझें जितना कि वह टेक्स्ट जिससे वे बने हैं। रिसर्चर्स ने कुछ परिस्थितियों में आंशिक टेक्स्ट रिकवरी करके दिखाई है। रोकथाम के उपायों के लिए वेक्टर स्टोर्स और एम्बेडिंग लीक्स देखें।
किस स्कोर का मतलब "काम का" (relevant) होता है?
कोई एक तय कट-ऑफ नहीं है। स्कोर्स मॉडल और डेटा पर निर्भर करते हैं। अगर आप कोई थ्रेशोल्ड चाहते हैं, तो अपने लेबल किए गए सवालों पर टेस्ट करके उसे चुनें, और जब भी आप मॉडल बदलें तो उसे फिर से चेक करें।
पाठ का टेस्ट
5 सवाल। पास होने और इस पाठ को पूरा करने के लिए 3 सही होने चाहिए (60%)।