इकाई 2 / 11

एंबेडिंग और वेक्टर डेटाबेस लॉजिक

लाभ:

  • समझें कि एम्बेडिंग टेक्स्ट को सिमेंटिक स्पेस में एक वेक्टर में बदल देता है और समान अर्थ करीबी वेक्टर होते हैं
  • यह समझाते हुए कि एएनएन खोज कोसाइन और डॉट समानता मेट्रिक्स के साथ कैसे काम करती है
  • मेटाडेटा फ़िल्टरिंग की लागत, पैमाने और आवश्यकता के आधार पर सामान्य वेक्टर डेटाबेस का चयन करना

RAG के मूल में एक ही प्रश्न है: "पाठ का कौन सा भाग उपयोगकर्ता के प्रश्न से सबसे अधिक मिलता-जुलता है?" कंप्यूटर पाठ को संख्याओं के साथ संसाधित करता है, शाब्दिक रूप से नहीं। इसलिए हमें सबसे पहले पाठ को उन संख्याओं में परिवर्तित करने की आवश्यकता है जो उसका अर्थ रखती हैं। एम्बेडिंग यही है: किसी पाठ को संख्याओं के अनुक्रम (वेक्टर) में परिवर्तित करने की प्रक्रिया जो उस पाठ के अर्थ को दर्शाती है। जब आप इस इकाई को समाप्त कर लेंगे, तो आपको पता चल जाएगा कि एम्बेडिंग कैसे काम करती है, समानता कैसे मापी जाती है, और सही वेक्टर डेटाबेस कैसे चुनें।

एम्बेडिंग: अर्थ को निर्देशांक में अनुवाद करना

एक एम्बेडिंग मॉडल (एक विशेष रूप से प्रशिक्षित कृत्रिम बुद्धिमत्ता) आपके द्वारा प्रदान किए गए पाठ को एक वेक्टर में परिवर्तित करता है, उदाहरण के लिए, 1024 संख्याएँ। इस वेक्टर को एक बहुआयामी अंतरिक्ष में एक समन्वय के रूप में सोचें। जादू यह है: जो पाठ अर्थ में समान हैं वे इस स्थान में निकट समन्वय में आते हैं।

एक सरल उदाहरण: "वार्षिक अवकाश", "अवकाश पात्रता" और "वार्षिक भुगतान अवकाश" अलग-अलग शब्दों का उपयोग करते हैं लेकिन उनका मतलब एक ही है - उनके वेक्टर एक-दूसरे के करीब हैं। "पेरोल खाता" एक अलग मामला है - इसका वेक्टर दूर का है। तो यूजर पूछता है "मेरे पास कितने दिनों की छुट्टियां हैं?" जब आप पूछते हैं, तो हमें एक दस्तावेज़ भी मिल सकता है जिसमें "छुट्टी" शब्द नहीं है लेकिन लिखा है "वार्षिक छुट्टी 14 दिन है"। क्लासिक कीवर्ड खोज (शब्द से बिल्कुल मेल खाने वाली खोज) यह नहीं कर सकती।

युक्ति: एम्बेडिंग को "अर्थ की फ़िंगरप्रिंट" के रूप में सोचें। समान अर्थ वाले दो वाक्यों की उंगलियों के निशान समान दिखाई देते हैं; भले ही शब्द अलग-अलग हों.

एक महत्वपूर्ण नियम: प्रश्न एम्बेड करते समय आप जिस मॉडल का उपयोग करते हैं, वही मॉडल दस्तावेज़ एम्बेड करते समय उपयोग किया जाना चाहिए। विभिन्न मॉडल अलग-अलग स्थान उत्पन्न करते हैं; निर्देशांक अतुलनीय हो जाते हैं।

समानता कैसे मापें?

यह मापने की कई विधियाँ हैं कि दो वेक्टर कितने समान हैं। सबसे आम कोसाइन समानता है: यह दो वैक्टरों के बीच के कोण को मापता है। यदि कोण छोटा है (वेक्टर एक ही दिशा में इंगित करते हैं), तो समानता अधिक है। मान -1 और 1 के बीच है; 1 के करीब = बहुत समान।

कसौटी

यह क्या मापता है?

इसे कब प्राथमिकता दी जाती है?

कोसाइन

सदिशों के बीच का कोण (दिशा)।

सबसे आम; पाठ अर्थ संबंधी समानता में डिफ़ॉल्ट

डॉट उत्पाद

दिशा+परिमाण एक साथ

यदि सदिशों को सामान्यीकृत किया जाता है, तो यह कोसाइन के समान परिणाम देता है; तेज़ है

यूक्लिडियन (यूक्लिडियन दूरी)

निर्देशांकों के बीच सीधी दूरी

कुछ क्लस्टरिंग परिदृश्यों में; पाठ में कम प्रयोग किया जाता है

व्यवहार में, अधिकांश एम्बेडिंग मॉडल सामान्यीकृत वैक्टर (आकार 1 पर सेट) उत्पन्न करते हैं; इस मामले में, कोसाइन और डॉट उत्पाद समान क्रम देते हैं। निर्णय से भ्रमित न हों: कोसाइन से शुरुआत करें।

लाखों वैक्टरों के बीच, एक-एक करके उनकी तुलना करना धीमा है। इसीलिए वेक्टर डेटाबेस ANN (अनुमानित निकटतम पड़ोसी) एल्गोरिदम का उपयोग करते हैं। एएनएन बहुत जल्दी "सटीक निकटतम" के बजाय "लगभग बिल्कुल निकटतम" ढूंढ लेता है। उदाहरण के लिए, HNSW नामक विधि 10 मिलियन वैक्टर के लिए भी कुछ मिलीसेकंड में परिणाम लौटा सकती है। आप सटीकता के एक छोटे से त्याग के लिए बड़ी गति प्राप्त करते हैं।

वेक्टर डेटाबेस क्या करता है?

एक वेक्टर डेटाबेस एक साथ तीन काम करता है: (1) वेक्टर को संग्रहीत करता है, (2) क्वेरी वेक्टर के समान सबसे अधिक वेक्टर को तुरंत ढूंढता है, (3) प्रत्येक वेक्टर के बगल में मेटाडेटा द्वारा फ़िल्टर करता है। मेटाडेटा वे टैग हैं जिन्हें आप उस टुकड़े से जोड़ते हैं: स्रोत फ़ाइल, दिनांक, विभाग, गोपनीयता स्तर, आदि। एंटरप्राइज़ आरएजी में मेटाडेटा फ़िल्टरिंग महत्वपूर्ण है; क्योंकि आपको "केवल वित्त विभाग के 2025 दस्तावेजों में खोजें" जैसे प्रतिबंध लगाने में सक्षम होने की आवश्यकता है।

# वेक्टर डेटाबेस में रजिस्टर करें (वैचारिक)vektor_db.add( id='izin-politicasi-parca-3', वेक्टर=एम्बेड('वार्षिक सवेतन अवकाश 14 दिन है...'), text='वार्षिक सवेतन अवकाश 14 दिन है...', मेटाडेटा={'स्रोत': 'ik_el_kitabi.pdf', 'विभाग': 'IK', 'दिनांक': '2025-06', "गोपनीयता": "आईसी"})

# मेटाडेटा फ़िल्टर की गई खोज (वैचारिक) परिणाम = वेक्टर_डीबी.खोज (वेक्टर = एंबेड ("मेरे पास कितने दिनों की छुट्टी है?"), टॉप_के = 4, फ़िल्टर = {"विभाग": "एचआर", "गोपनीयता": ["आंतरिक", "चालू"]})

सही डेटाबेस चुनना

वाहन

विशेष पहलू

उपयुक्त स्थिति

अंतर्निर्मित/फ़ाइल-आधारित (एम्बेडेड लाइब्रेरी)

कोई इंस्टालेशन नहीं, एकल मशीन

प्रोटोटाइप, छोटी किट (<कुछ सौ हजार भाग)

प्रबंधित क्लाउड सेवा

स्केलिंग और रखरखाव आपकी जिम्मेदारी नहीं है

उत्पादन, तेजी से बढ़ता डेटा, छोटी टीम

अपने सर्वर पर खुला स्रोत

पूर्ण नियंत्रण, आपका डेटा आपका ही रहता है

गोपनीयता दायित्व, मौजूदा बुनियादी ढाँचा

मौजूदा डेटाबेस में अतिरिक्त

आप अलग-अलग सिस्टम का प्रबंधन नहीं करते

आपके द्वारा पहले से उपयोग किए जा रहे DB में वेक्टर समर्थन जोड़ना

चुनते समय पूछें: कितने टुकड़े होंगे? मेटाडेटा फ़िल्टरिंग कितनी महत्वपूर्ण है? क्या डेटा कंपनी के बाहर (गोपनीयता) जा सकता है? क्या टीम बुनियादी ढांचे का संचालन कर सकती है? छोटी शुरुआत करना और आवश्यकतानुसार विस्तार करना अक्सर बुद्धिमानी होती है।

कमजोर दृष्टिकोण/मजबूत दृष्टिकोण

कमज़ोर (सादा एम्बेडिंग संग्रहीत करना, कोई मेटाडेटा नहीं):

बस टेक्स्ट और वेक्टर को सेव करें। खोजें: 4 सबसे समान वैक्टर लौटाएं। # समस्या: "केवल वर्तमान एचआर दस्तावेज़" की तरह फ़िल्टर नहीं किया जा सकता; # प्रतिक्रिया में पुराने/अनधिकृत हिस्से भी शामिल किए जा सकते हैं।

शक्तिशाली (समृद्ध मेटाडेटा + फ़िल्टर की गई खोज):

प्रत्येक टुकड़े में स्रोत, दिनांक, विभाग और गोपनीयता टैग जोड़ें। खोज के दौरान उपयोगकर्ता के अधिकार और वर्तमानता के अनुसार फ़िल्टर करें: फ़िल्टर = {"गोपनीयता": उपयोगकर्ता_प्राधिकरण, "दिनांक_दिनांक": "2024-01"}# इस प्रकार, परिणाम सुरक्षित और अद्यतित दोनों है।

तीन मिनी मामले

केस 1 - गलत मॉडल मिश्रण। एक टीम ने मॉडल ए के साथ दस्तावेज़ और मॉडल बी के साथ प्रश्न एम्बेड किए। खोजों से निरर्थक परिणाम मिले, और सही उत्तर की दर 31% रही। जब मैंने एकल मॉडल (दोनों समान एम्बेडिंग मॉडल) पर स्विच किया, तो दर बढ़कर 88% हो गई। पाठ: प्रश्न और दस्तावेज़ एक ही स्थान पर होने चाहिए।

केस 2 - मेटाडेटा के बिना गोपनीयता जोखिम। एक स्वास्थ्य सेवा कंपनी में, सभी विभाग दस्तावेज़ों को मेटाडेटा के बिना एक ही पूल में फेंक दिया गया था। जब एक बिक्री सहयोगी ने एक प्रश्न पूछा, तो सिस्टम ने रोगी डेटा के एक टुकड़े को प्रासंगिक बना दिया। जब मेटाडेटा + फ़िल्टर जोड़ा गया (प्राधिकरण स्तर के अनुसार), तो यह जोखिम समाप्त हो गया; पुनर्प्राप्ति में, 12 अनधिकृत टुकड़े बिल्कुल नहीं लाए गए हैं।

केस 3 - स्केल टोंटी। एक ई-कॉमर्स कंपनी ने एक सरल "स्कैन ऑल" पद्धति से 8 मिलियन उत्पाद विवरण खोजे; प्रत्येक प्रश्न में 6 सेकंड का समय लगा। जब हमने एचएनएसडब्ल्यू-आधारित एएनएन पर स्विच किया, तो समय घटकर 45 मिलीसेकंड हो गया, सटीकता में केवल 1% की हानि हुई। पाठ: बड़े सेट में ANN अनिवार्य है।

सामान्य गलतियाँ

  • विभिन्न मॉडलों के साथ प्रश्न और दस्तावेज़ को एम्बेड करना: परिणाम अर्थहीन हैं; हमेशा एक मॉडल.
  • मेटाडेटा छोड़ना: आप फ़िल्टर नहीं कर सकते; आप गोपनीयता और अद्यतनता पर नियंत्रण खो देते हैं।
  • एंबेडिंग को एन्क्रिप्शन समझना: एंबेडिंग में प्रतिवर्ती जानकारी होती है; यह मान लेना ग़लत है कि संवेदनशील डेटा "छिपा हुआ" है।
  • एक छोटे से सेट पर अनावश्यक रूप से बड़े बुनियादी ढांचे का निर्माण: 5,000 भागों के लिए प्रबंधित एक विशाल क्लस्टर अनावश्यक जटिलता है।
  • समानता मानदंड के बारे में बहुत अधिक चिंता न करें: पाठ में कोसाइन से प्रारंभ करें; फाइन ट्यूनिंग बाद में आती है।
सावधानी: एम्बेडिंग पाठ के अर्थ को संख्याओं में एम्बेड करता है, लेकिन सामग्री को "नष्ट" नहीं करता है। यदि कोई वेक्टर डेटाबेस लीक हो जाता है, तो मूल संग्रहीत पाठ (अधिकांश इंस्टॉलेशन में पाठ भी संग्रहीत होता है) से भी समझौता किया जाता है। वेक्टर रिपॉजिटरी को उसके अंदर मौजूद दस्तावेज़ों की तरह ही गोपनीय रखें।

संक्षेप में

  • एंबेडिंग पाठ को संख्याओं के एक वेक्टर में बदल देती है जो उसका अर्थ रखता है; समान अर्थ निकट सदिश हैं।
  • समानता को अक्सर कोसाइन द्वारा मापा जाता है; सामान्यीकृत वैक्टर के लिए, डॉट उत्पाद समान परिणाम देता है।
  • बड़े डेटा में, एएनएन (उदाहरण के लिए, एचएनएसडब्ल्यू) सटीक खोज को प्रतिस्थापित करता है: सटीकता के थोड़े से त्याग के साथ शानदार गति।
  • वेक्टर डेटाबेस वेक्टर भंडारण + समानता खोज + मेटाडेटा फ़िल्टरिंग करता है; एंटरप्राइज़ RAG के लिए मेटाडेटा आवश्यक है।
  • प्रश्न और दस्तावेज़ का अनुवाद उसी एम्बेडिंग मॉडल के साथ किया जाना चाहिए; अन्यथा निर्देशांक की तुलना नहीं की जा सकती।

आवेदन कार्य

पिछली इकाई में आपके द्वारा चुने गए दस्तावेज़ से 10 छोटे अनुच्छेद (प्रत्येक 3-6 वाक्य) निकालें। (1) प्रत्येक टुकड़े के लिए कम से कम तीन मेटाडेटा टैग डिज़ाइन करें (स्रोत, दिनांक, और आपके व्यावसायिक संदर्भ के लिए उपयुक्त एक तिहाई: विभाग, उत्पाद, गोपनीयता, आदि)। (2) लिखें कि 3 अलग-अलग उपयोगकर्ता प्रश्नों के लिए कौन सा मेटाडेटा फ़िल्टर लागू किया जाना चाहिए। (3) 3 प्रश्न-भाग जोड़े ढूंढें जो अलग-अलग शब्दों में समान अर्थ व्यक्त करते हैं (उदाहरण के लिए "अवकाश पात्रता" ↔ "वार्षिक अवकाश") और एक वाक्य में बताएं कि वे कीवर्ड खोज से मेल क्यों नहीं खाएंगे लेकिन एम्बेडिंग से मेल खाएंगे।

चेकलिस्ट

  • [ ] मैं बता सकता हूं कि एम्बेडिंग टेक्स्ट को सिमेंटिक स्पेस में एक वेक्टर में बदल देता है और समान अर्थ करीब होते हैं।
  • मुझे पता है कि [ ] कोसाइन समानता कोण को मापती है और पाठ में डिफ़ॉल्ट प्राथमिकता है।
  • [ ] मैं समझा सकता हूं कि बड़े डेटा में एएनएन क्यों आवश्यक है।
  • [ ] मुझे पता है कि मेटाडेटा गोपनीयता और ताजगी नियंत्रण के लिए क्यों महत्वपूर्ण है।
  • [ ] मैं प्रश्न और दस्तावेज़ को समान एम्बेडिंग मॉडल के साथ अनुवाद करने के नियम का पालन करता हूं।