बहुतेक लोक LLM ला प्रॉम्प्ट देऊ शकतात. पण खऱ्या ट्रॅफिकमध्ये टिकेल असे उत्पादन तयार करणे ही पूर्णपणे वेगळी गोष्ट आहे. जर तुम्हाला चॅट विंडोमध्ये टाईप करण्यापासून प्रत्यक्ष प्रॉडक्शन AI पर्यंत पोहोचायचे असेल, तर हे स्टॅक (stack) प्रत्यक्षात कसे एकत्र काम करतात हे समजून घेणे आवश्यक आहे. हे काही जादू नाही. ही वेगवेगळ्या इंजिनिअरिंग समस्यांची एक साखळी (pipeline) आहे आणि प्रत्येक लेयरचे (layer) स्वतःचे दोष किंवा त्रुटी (failure modes) असू शकतात.
तुम्ही एखादा शब्द टाईप केल्यापासून ते एखादा एजंट (agent) कार्य पूर्ण करेपर्यंत आधुनिक AI सिस्टम कशी काम करते, हे मी तुम्हाला समजावून सांगतो.
पाया: मॉडेल्स कसे विचार करतात
मूळतः, एक लार्ज लँग्वेज मॉडेल (LLM) फक्त एकच गोष्ट करते: ते पुढचा 'टोकन' (token) प्रेडिक्ट करते. तो टोकन पुढचा शब्द, शब्दाचा भाग किंवा एखादे चिन्ह देखील असू शकते. बाकी सर्व काही—कविता, कोड, तर्क (reasoning)—हे मोठ्या प्रमाणावर हे एकच काम केल्यामुळे निर्माण होणारे परिणाम (emergent behavior) आहेत.
तुमच्या प्रॉम्प्टपासून मॉडेलच्या प्रतिसादापर्यंतचा प्रवास असा दिसतो.
Tokenization हे पहिले पाऊल आहे. न्यूरल नेटवर्कसाठी कच्चा मजकूर (raw text) अर्थहीन असतो, म्हणून मॉडेल तुमचे शब्द तुकड्यांमध्ये विभागते आणि प्रत्येक तुकड्याला एका नंबरशी जोडते. "tokenization" हा शब्द तीन वेगळे टोकन्स बनू शकतो. "New York" हे शब्दसमूह शब्दसंग्रहावर (vocabulary) अवलंबून एक किंवा दोन टोकन्स असू शकतात. हे नंबर हवे तसे नसतात; ते मॉडेलने ट्रेनिंग दरम्यान शिकलेल्या एका निश्चित डिक्शनरीमधून येतात.
एकदा शब्दांचे रूपांतर नंबरमध्ये झाले की, त्यांना अर्थाची गरज असते. Embeddings हे त्या नंबरचे रूपांतर 'वेक्टर्स' (vectors) मध्ये करतात—जे फ्लोटिंग-पॉइंट व्हॅल्यूजच्या लांब याद्या असतात आणि गणितीय अवकाशात (mathematical space) समान संकल्पना जवळ ठेवतात. "King" आणि "Queen" एकमेकांच्या जवळ असतात. "Paris" आणि "Berlin" एकत्र येतात, पण ते "Python" किंवा "JavaScript" पेक्षा वेगळ्या भागात असतात.
परंतु केवळ वेक्टर्समुळे शब्दांचा क्रम हरवतो. Positional encoding मॉडेलला सांगते की वाक्यात प्रत्येक टोकन कुठे आहे. याशिवाय, "The dog bit the man" आणि "The man bit the dog" ही दोन्ही वाक्ये सारखीच दिसतील.
त्यानंतर येते attention mechanism. येथे मॉडेल इनपुटमधील सर्व टोकन्सकडे पाहते आणि पुढचा टोकन प्रेडिक्ट करण्यासाठी कोणते टोकन्स महत्त्वाचे आहेत हे ठरवते. जेव्हा तुम्ही विचारता, "कंपनीची स्थापना कधी झाली आणि आता तिचे नेतृत्व कोण करत आहे?" तेव्हा मॉडेलला "founded" ला तारखेशी आणि "leads" ला CEO च्या नावाशी जोडणे आवश्यक असते. 'अटेंशन' (Attention) हे संबंध निर्माण करते.
या क्रिया layers मध्ये साठवल्या जातात—अनेकदा अशा डझनभर लेयर्स असतात—जिथे सुरुवातीचे लेयर्स सिंटॅक्स (syntax) हाताळतात आणि नंतरचे लेयर्स अमूर्त तर्क (abstract reasoning) तयार करतात. याच्या दरम्यान कुठेतरी, feed-forward networks तथ्यात्मक संबंध (factual associations) साठवतात. येथेच मॉडेलकडे हे ज्ञान असते की पॅरिस ही फ्रान्सची राजधानी आहे, किंवा एखाद्या विशिष्ट API ला JSON पेलोडची आवश्यकता असते. हे नेमके डेटाबेस नाही, तर वजनांचे (weights) एक संकुचित जाळे आहे जे पॅटर्न सक्रिय करते.
शेवटी, decoding अंतर्गत वेक्टर रिप्रझेंटेशनचे पुन्हा मानवी-वाचनीय टोकन्समध्ये रूपांतर करते. मॉडेलला हे "माहित" नसते की ते इंग्रजी लिहित आहे; ते फक्त हजारो संभाव्य पुढच्या टोकन्सना रँक करते आणि स्टॉप कंडिशन येईपर्यंत वारंवार सर्वात संभाव्य टोकन निवडते.
RAG लेयर: मॉडेल्सना स्मृती (Memory) देणे
एक बेस मॉडेल वेळेच्या एका विशिष्ट टप्प्यावर थांबलेले असते. त्याचे वेट्स (weights) एका ठराविक तारखेपर्यंतचा इंटरनेट डेटा साठवतात आणि जोपर्यंत तुम्ही त्यांना तुमचे खाजगी दस्तऐवज देत नाही, तोपर्यंत ते त्यांचा वापर करू शकत नाहीत. यामुळे ते बहुतेक व्यावसायिक कामांसाठी निरुपयोगी ठरते. Retrieval-Augmented Generation, किंवा RAG, मॉडेलला उत्तर देण्यापूर्वी सल्लामसलत करण्यासाठी एक बाह्य लायब्ररी देऊन ही समस्या सोडवते.
ही संकल्पना समजायला सोपी आहे पण प्रत्यक्षात अंमलबजावणी करणे कठीण आहे. प्रथम, तुम्ही तुमचे दस्तऐवज घेता आणि त्यावर chunking प्रक्रिया करता. तुम्ही शंभर पानांची PDF थेट प्रॉम्प्ट विंडोमध्ये टाकत नाही. तुम्ही त्याचे परिच्छेद, विभाग किंवा अर्थपूर्ण ब्लॉक्समध्ये विभाजन करता, जे मॉडेलच्या कॉन्टेक्स्ट लिमिटमध्ये (context limit) बसतील आणि त्यांचा अर्थही टिकून राहील.
प्रत्येक चंक (chunk) embedding model मधून जातो आणि LLM मधील टोकन्सप्रमाणेच वेक्टर बनतो. हे वेक्टर्स एका vector database मध्ये साठवले जातात—जे नेमकी माहिती शोधण्याऐवजी साम्य शोधण्यासाठी (similarity search) डिझाइन केलेले एक विशेष स्टोअर आहे. जेव्हा वापरकर्ता प्रश्न विचारतो, तेव्हा तुम्ही त्यांच्या क्वेरीचे एम्बेडिंग करता आणि डेटाबेसला विचारता: "या वेक्टरच्या अर्थाशी सर्वात जवळचे चंक्स कोणते आहेत?"
केवळ रॉ वेक्टर सर्चमुळे अनेकदा अचूक माहिती सुटू शकते. एक चांगले प्रॉडक्शन सिस्टम hybrid search वापरते, ज्यामध्ये कीवर्ड मॅचिंग आणि सिमेंटिक साम्य (semantic similarity) यांचा मेळ घातला जातो. जर कोणी "SLA-99 compliance" बद्दल विचारले, तर तुम्हाला असा दस्तऐवज हवा आहे ज्यामध्ये प्रत्यक्षपणे तो शब्द आहे, केवळ तो सारखा वाटणारा दस्तऐवज नाही.
माहिती मिळवल्यानंतर (retrieval), re-ranking गोंधळ (noise) कमी करते. सुरुवातीच्या सर्चमध्ये वीस चंक्स मिळू शकतात, परंतु प्रत्यक्षात फक्त वरचे तीन किंवा चारच उपयुक्त ठरतात. रि-रँकर (re-ranker) संबंधिततेनुसार स्कोअर देते आणि माहिती LLM कडे जाण्यापूर्वी उरलेले भाग काढून टाकते, ज्यामुळे टोकन्सची बचत होते आणि 'हॅलुसिनेशन' (hallucinations) कमी होतात.
एजंट लेयर: कृती करणे
RAG मॉडेलला वाचू देते. Agents त्याला कृती करू देतात.
Agent म्हणजे मूलभूतपणे एका लूपमध्ये अडकलेले LLM आहे. ते निरीक्षण करते, तर्क करते, कृती करते आणि पुन्हा निरीक्षण करते. जर तुम्ही एखाद्या agent ला विमान तिकीट बुक करायला सांगितले, तर ते फक्त बुकिंग कसे होते याचे वर्णन करत नाही. ते कामाचे टप्प्यांमध्ये विभाजन करते, योग्य फंक्शन्स कॉल करते, प्रतिसाद वाचते आणि त्यानुसार बदल करते.
हा लूप असा दिसतो. Observe: agent सध्याची स्थिती वाचते—तुमची विनंती, मागील टूल कॉल्सचे निकाल, कोणतीही त्रुटी. Reason: LLM पुढे काय करायचे हे ठरवते, सहसा एक संरचित योजना तयार करून किंवा पूर्वनिर्धारित पर्यायांतून निवड करून. Act: ते एक टूल कॉल करते.
Tools च्या माध्यमातून agents वास्तविक जगाशी संपर्क साधतात. ते JSON schemas द्वारे परिभाषित केले जातात जे मॉडेलला नेमके कोणते parameters एका API ला लागतील हे सांगतात. LLM मनमानी HTTP requests करत नाही. ते एक schema भरते. "Call the weather API with city: London and units: metric." जर टूलने तापमान परत केले, तर agent पुरवते
