एकाइ 2 / 11

इम्बेडिङ र भेक्टर डाटाबेस तर्क

लाभ:

  • बुझ्नुहोस् कि इम्बेडिङले पाठलाई सिमेन्टिक स्पेसमा भेक्टरमा परिणत गर्छ र समान अर्थहरू नजिकका भेक्टरहरू हुन्।
  • ANN खोजले कोसाइन र डट समानता मेट्रिक्ससँग कसरी काम गर्छ भनेर व्याख्या गर्दै
  • लागत, स्केल र मेटाडेटा फिल्टरिङको आवश्यकतामा आधारित सामान्य भेक्टर डाटाबेसहरू चयन गर्दै

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

इम्बेडिङ: निर्देशांकहरूमा अर्थ अनुवाद गर्दै

एम्बेडिङ मोडेल (विशेष रूपमा प्रशिक्षित कृत्रिम बुद्धिमत्ता) ले तपाईंले उपलब्ध गराएको पाठलाई भेक्टरमा रूपान्तरण गर्छ, उदाहरणका लागि, १०२४ नम्बरहरू। यो भेक्टरलाई बहुआयामिक ठाउँमा समन्वयको रूपमा सोच्नुहोस्। जादू यो हो: अर्थमा समान पाठहरू यस ठाउँमा नजिकको समन्वयमा पर्छन्।

एउटा साधारण उदाहरण: "वार्षिक बिदा", "बिदाको हकदार" र "वार्षिक भुक्तान बिदा" ले फरक शब्दहरू प्रयोग गर्छ तर एउटै कुराको अर्थ हुन्छ — तिनीहरूका भेक्टरहरू एकअर्काको नजिक छन्। "पेरोल खाता" फरक कुरा हो - यसको भेक्टर टाढा छ। त्यसैले प्रयोगकर्ताले सोध्छन् "मसँग कति दिन बिदा छ?" जब तपाइँ सोध्नुहुन्छ, हामीले "विदा" शब्द नभएको तर "वार्षिक बिदा १४ दिन हो" भन्ने कागजात पनि फेला पार्न सक्छौं। यो के हो जुन क्लासिक कीवर्ड खोजी (खोज जुन शब्दसँग ठ्याक्कै मिल्छ) गर्न सक्दैन।

सुझाव: "अर्थको औंठाछाप" को रूपमा इम्बेड गर्ने बारे सोच्नुहोस्। एउटै अर्थ भएका दुई वाक्यका फिंगरप्रिन्टहरू उस्तै देखिन्छन्; शब्द फरक भए पनि ।

एउटा महत्त्वपूर्ण नियम: तपाईंले प्रश्न इम्बेड गर्दा प्रयोग गर्ने मोडेल तपाईंले कागजातहरू इम्बेड गर्दा प्रयोग गर्ने मोडेल हुनुपर्छ। विभिन्न मोडेलहरूले विभिन्न ठाउँहरू उत्पादन गर्छन्; समन्वयहरू अतुलनीय हुन्छन्।

समानता कसरी मापन गर्ने?

दुई भेक्टरहरू कति समान छन् मापन गर्न धेरै विधिहरू छन्। सबैभन्दा सामान्य कोसाइन समानता हो: यसले दुई भेक्टरहरू बीचको कोण नाप्छ। यदि कोण सानो छ (एउटै दिशामा देखाउने भेक्टर), समानता उच्च छ। मान −1 र 1 को बीचमा छ; 1 को नजिक = धेरै समान।

मापदण्ड

यसले के मापन गर्छ?

कहिले रुचाइन्छ?

कोसाइन

भेक्टरहरू बीचको कोण (दिशा)

सबैभन्दा सामान्य; पाठ सिमान्टिक समानतामा पूर्वनिर्धारित

डट उत्पादन

दिशा + परिमाण सँगै

यदि भेक्टरहरू सामान्यीकृत छन् भने, यसले कोसाइन जस्तै परिणाम दिन्छ; छिटो छ

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

समन्वयहरू बीच सीधा दूरी

केही क्लस्टरिङ परिदृश्यहरूमा; पाठमा कम प्रयोग

अभ्यासमा, धेरैजसो इम्बेडिङ मोडेलहरूले सामान्यीकृत भेक्टरहरू उत्पादन गर्छन् (आकारलाई १ मा सेट); यस अवस्थामा, कोसाइन र डट उत्पादनले समान अर्डर दिन्छ। निर्णय पक्षाघात नगर्नुहोस्: कोसाइनबाट सुरु गर्नुहोस्।

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

भेक्टर डाटाबेसले के गर्छ?

भेक्टर डाटाबेसले एकैचोटि तीनवटा काम गर्छ: (१) भेक्टरहरू भण्डारण गर्छ, (२) द्रुत रूपमा भेक्टरहरू भेक्टर भेक्टरसँग मिल्दोजुल्दो खोज्छ, (३) प्रत्येक भेक्टरको छेउमा मेटाडेटाद्वारा फिल्टरहरू। मेटाडाटा तपाईंले त्यो टुक्रामा संलग्न ट्यागहरू हुन्: स्रोत फाइल, मिति, विभाग, गोपनीयता स्तर, आदि। मेटाडेटा फिल्टरिङ इन्टरप्राइज RAG मा महत्वपूर्ण छ; किनभने तपाइँ "वित्त विभागको 2025 कागजातहरूमा मात्र खोज" जस्ता प्रतिबन्धहरू सेट गर्न सक्षम हुन आवश्यक छ।

# भेक्टर डाटाबेसमा दर्ता गर्नुहोस् (वैचारिक)vektor_db.add( id="izin-politikasi-parca-3", vektor=embed("वार्षिक भुक्तान बिदा 14 दिन हो..."), text="वार्षिक भुक्तान बिदा 14 दिन हो...", मेटाडाटा={"स्रोत": "ik_el_kitabi", "Kitabi:"", "पार्टी" "2025-06", "गोपनीयता": "ic"})

# मेटाडाटा फिल्टर गरिएको खोज (वैचारिक) परिणाम = vektor_db.search( vektor=embed("मसँग कति दिन बिदा छ?"), top_k=4, फिल्टर={"विभाग": "HR", "गोपनीयता": ["आन्तरिक", "मा"]})

सही डाटाबेस छनोट गर्दै

सवारी साधन

चित्रित पक्ष

उपयुक्त अवस्था

बिल्ट-इन / फाइल-आधारित (इम्बेडेड पुस्तकालय)

कुनै स्थापना छैन, एकल मेसिन

प्रोटोटाइप, सानो किट (<केही लाख पार्ट्स)

क्लाउड सेवा व्यवस्थित

स्केलिंग र मर्मतसम्भार तपाईंको जिम्मेवारी होइन

उत्पादन, छिटो बढ्दो डाटा, सानो टोली

तपाईंको आफ्नै सर्भरमा खुला स्रोत

पूर्ण नियन्त्रण, तपाईंको डाटा तपाईंको रहन्छ

गोपनीयता दायित्व, अवस्थित पूर्वाधार

अवस्थित डेटाबेसमा थप

तपाईंले छुट्टै प्रणालीहरू व्यवस्थापन गर्नुहुन्न

तपाईंले पहिले नै प्रयोग गर्नुभएको DB मा भेक्टर समर्थन थप्दै

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

कमजोर दृष्टिकोण / बलियो दृष्टिकोण

कमजोर (सादा इम्बेडिङ भण्डारण, मेटाडेटा छैन):

केवल पाठ र भेक्टर बचत गर्नुहोस्। खोज्नुहोस्: 4 सबैभन्दा समान भेक्टरहरू फर्काउनुहोस्। # समस्या: "केवल हालको HR कागजातहरू" जस्तै फिल्टर गर्न सकिँदैन; # पुराना/अनधिकृत भागहरू पनि प्रतिक्रियामा समावेश गर्न सकिन्छ।

शक्तिशाली (रिच मेटाडेटा + फिल्टर गरिएको खोज):

प्रत्येक टुक्रामा स्रोत, मिति, विभाग र गोपनीयता ट्याग थप्नुहोस्। खोजको क्रममा प्रयोगकर्ताको अधिकार र वर्तमानता अनुसार फिल्टर गर्नुहोस्: filter = {"privacy": user_authority, "date_date": "2024-01"}# यसरी, नतिजा सुरक्षित र अप-टु-डेट दुवै छ।

तीन मिनी केसहरू

केस 1 - गलत मोडेल मिश्रण। एउटा टोलीले मोडेल A र मोडेल B सँग प्रश्नहरू इम्बेड गरेको कागजातहरू। खोजहरूले अर्थहीन परिणामहरू फर्काए, र सही उत्तर दर 31% मा रह्यो। जब मैले एकल मोडेल (दुबै एउटै एम्बेडिङ मोडेल) मा स्विच गरें, दर 88% मा पुग्यो। पाठ: प्रश्न र कागजात एउटै ठाउँमा हुनुपर्छ।

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

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

सामान्य गल्तीहरू

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

संक्षेपमा

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

आवेदन कार्य

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

चेकलिस्ट

  • [ ] म भन्न सक्छु कि इम्बेडिङले पाठलाई सिमेन्टिक स्पेसमा भेक्टरमा परिणत गर्छ र समान अर्थहरू नजिक छन्।
  • मलाई थाहा छ [ ] कोसाइन समानताले कोण मापन गर्छ र पाठमा पूर्वनिर्धारित प्राथमिकता हो।
  • [ ] म व्याख्या गर्न सक्छु किन ठूलो डाटामा ANN आवश्यक छ।
  • [ ] मलाई थाहा छ किन मेटाडेटा गोपनीयता र ताजापन नियन्त्रणको लागि महत्वपूर्ण छ।
  • [ ] म एउटै इम्बेडिङ मोडेलको साथ प्रश्न र कागजात अनुवाद गर्ने नियम पालना गर्छु।