हर AI सिस्टम को डेटा स्टोर और तेज़ी से एक्सेस करना होता है। चाहे एक तस्वीर के pixel मान हों, 50,000 शब्दों की शब्द-संग्रह हो, या लाखों यूज़र की पसंद - सही डेटा संरचना चुनना तय करता है कि AI कितनी तेज़ी से काम करेगा।
दो संरचनाएँ सबसे ज़्यादा इस्तेमाल होते हैं: ऐरे और हैश मैप। इन्हें समझ लिया तो AI पाइपलाइन की नींव पक्की।
ऐरे एक नंबर वाली लिस्ट है जहाँ आइटम मेमोरी में एक साथ रखे जाते हैं। हर आइटम का एक इंडेक्स होता है - जो zero से शुरू होता है।
index: 0 1 2 3 4
value: ["cat", "dog", "bird", "fish", "frog"]
चूँकि आइटम साथ-साथ बैठे हैं, किसी भी स्थिति पर सीधे पहुँच सकते हैं। आइटम 3 चाहिए? बस - कोई खोजना नहीं। यही O(1) पहुँच है - 10 आइटम हों या 10 दस लाख, समय बराबर लगता है।
बीच में आइटम जोड़ना या मिटाना करना महंगा है - बाद के सारे आइटम को शिफ्ट करना पड़ता है। यह O(n) है - जितने ज़्यादा आइटम, उतना ज़्यादा समय।
अगर 10,000 गानों की प्लेलिस्ट में स्थिति 5 पर नया गाना डालना हो, तो स्थिति 5 के बाद के हर गाने को शिफ्ट करना पड़ेगा। कोई स्ट्रीमिंग सेवा इसे बिना धीमा हुए कैसे संभालते करेगी?
हैश मैप (जिसे dictionary या hash तालिका भी कहते हैं) डेटा को कुंजी-मान pairs में स्टोर करता है। इंडेक्स संख्या की जगह एक meaningful कुंजी से पहुँच करते हैं।
word_counts = {
"hello": 42,
"world": 37,
"AI": 156
}
"AI" की गिनती चाहिए? hash map एक hash function से key को अंदर ही अंदर index में बदलता है। नतीजा? औसतन lookup - array जैसा, बस संख्या की जगह नाम से।
साइन इन करें चर्चा में शामिल होने के लिए
Python की dictionaries हैश मैप हैं। जब ChatGPT प्रशिक्षण के दौरान शब्द आवृत्तियाँ गिनता है, तो hash-मैप जैसी संरचनाएँ से पूरे इंटरनेट के टेक्स्ट में अरबों शब्दों को ट्रैक करता है।
| क्रिया | ऐरे | हैश मैप | |-----------|-------|----------| | इंडेक्स से पहुँच | O(1) ⚡ | N/A | | Key से पहुँच | O(n) 🐢 | O(1) ⚡ | | End में जोड़ना | O(1) ⚡ | O(1) ⚡ | | बीच में जोड़ना | O(n) 🐢 | N/A | | Value ढूँढना | O(n) 🐢 | O(1) ⚡ |
O(1) का मतलब "साइज़ कितना भी हो, तुरंत" और O(n) का मतलब "डेटा बड़ा तो धीमा।"
आपके पास 100,000 user profiles हैं और username से user ढूँढना है। कौन सी संरचना सबसे तेज़ होगी?
Interviews और AI दोनों में सबसे उपयोगी पैटर्न में से एक - occurrences गिनना:
counts = {}
for each word in text:
if word in counts:
counts[word] = counts[word] + 1
else:
counts[word] = 1
टेक्स्ट का एक ही पास - और हर शब्द की आवृत्ति मिल गई। भाषा मॉडल भी बड़े scale पर यही तरीका इस्तेमाल करते हैं।
एक ऐरे of संख्याएँ और एक लक्ष्य दिया है - दो संख्याएँ ढूँढो जिनका जोड़ लक्ष्य बने। सरल तरीका हर जोड़ी जाँच करता है - O(n²)। Smart तरीका हैश मैप इस्तेमाल करता है:
seen = {}
for each number in array:
complement = target - number
if complement in seen:
return [seen[complement], current_index]
seen[number] = current_index
एक पास, O(n) समय। हैश मैप याद रखता है कि पहले क्या-क्या देखा है।
two-sum में hash map वाला तरीका हर जोड़ी जाँचने से तेज़ क्यों है?
एक सिफ़ारिश इंजन को सुझाव करने से पहले जाँच करना है कि यूज़र ने film पहले देखी है या नहीं। Watch इतिहास ऐरे में रखोगे या हैश मैप में? क्या समझौते हो सकते हैं?
AI मॉडल शब्द embeddings को 300 संख्याएँ के ऐरे में स्टोर करता है। ऐरे यहाँ अच्छा चयन क्यों हैं?
अब आप AI में डेटा संभालने के दो सबसे ज़रूरी औज़ार जान गए हैं। अगले पाठ स्ट्रिंग और टेक्स्ट प्रोसेसिंग में हम देखेंगे कि AI कच्चे टेक्स्ट को ऐसे रूप में कैसे बदलता है जिसे मॉडल सच में पढ़ सके। यही हर चैटबॉट और हर सर्च बॉक्स के पीछे का पहला कदम है।