- Embedding, LLM की semantic backbone है, जो text को numeric vectors में बदलकर model के समझने लायक बनाती है
- Embedding का विकास count-based, TF-IDF जैसी statistical techniques से लेकर Word2Vec, BERT, GPT series जैसी आधुनिक विधियों तक कई बदलावों से गुज़रा है
- अच्छी embedding में शब्दों की semantic similarity को सुरक्षित रखना और dimensions की संख्या को नियंत्रित करना—इन दोनों के बीच संतुलन महत्वपूर्ण है; LLM में यह training data और task के अनुसार optimize होकर साथ में train होती है
- TF-IDF, Word2Vec, BERT जैसी प्रमुख embedding विधियों को उदाहरणों और visualization के साथ समझाया गया है; खासकर LLM embedding में input tokens को high-dimensional vectors में बदलने के बाद context के अनुसार layers में update किया जाता है
- Torch embedding layer, embedding vector graph analysis जैसे practical code और visual materials के ज़रिए embedding के वास्तविक working principle को intuitive तरीके से समझने में मार्गदर्शन दिया गया है
Embedding क्या है
- Embedding (embedding) text, image, audio जैसे data को high-dimensional vectors में बदलने की तकनीक है
- खासकर NLP में, यह शब्दों या tokens को vectors में बदलकर उन्हें कंप्यूटर के समझने योग्य रूप में लाती है
- Embedding सिर्फ text ही नहीं, बल्कि कई data types पर लागू हो सकती है; लेकिन इस लेख में मुख्य रूप से text embedding पर ध्यान दिया गया है
Embedding का विकास और प्रकार
- शुरुआती embedding techniques में count vector, TF-IDF, Co-Occurrence Matrix जैसी statistical methods प्रमुख थीं
- इसके बाद Word2Vec, GloVe, FastText जैसी neural network आधारित embedding आईं, जिन्होंने vector space में semantic similarity को दर्शाना शुरू किया
- BERT, GPT जैसे transformer-based models में हर token की embedding input के बाद layers के माध्यम से context information को reflect करते हुए update होती है (dynamic/contextual embedding)
अच्छी embedding की शर्तें
semantic representation
- मिलते-जुलते अर्थ वाले शब्द vector space में भी एक-दूसरे के पास स्थित होने चाहिए
उदाहरण: "cat" और "dog", "dog" और "strawberry" की तुलना में अधिक समान रूप से map होते हैं
dimensionality
- अगर embedding dimension बहुत छोटा हो तो expressiveness कम हो जाती है, और बहुत बड़ा हो तो memory waste तथा overfitting का जोखिम बढ़ता है
उदाहरण: GPT-2 का embedding dimension कम से कम 768 है
पारंपरिक embedding technique: TF-IDF
- TF-IDF, शब्द की frequency और rarity (inverse document frequency) को गुणा करके उसकी importance निकालता है
- TF: किसी document में कोई शब्द कितनी बार आता है
- IDF: पूरे documents में वह शब्द कितना दुर्लभ है
- TF-IDF का परिणाम information retrieval, keyword extraction जैसी सरल analysis tasks में उपयोगी है, लेकिन यह semantic similarity को अच्छी तरह reflect नहीं कर पाता
- Visualization में अक्सर ज़्यादातर शब्द एक ही cluster में सिमटे दिखते हैं, इसलिए semantic separation कम होती है
Word2Vec
- Word2Vec, neural network आधारित embedding है जो semantic relationships को vector space में प्रभावी ढंग से दिखाती है
- इसमें CBOW (आसपास के शब्दों से केंद्र शब्द का अनुमान), Skipgram (केंद्र शब्द से आसपास के शब्दों का अनुमान) जैसी विधियाँ होती हैं
- Training के बाद hidden layer की embedding matrix, शब्दों के semantic vectors के रूप में इस्तेमाल होती है
- Negative sampling जैसी optimization techniques का उपयोग करके बड़े data पर भी efficient training संभव होती है
- TensorFlow Embedding Projector जैसे tools से visualize करने पर semantic रूप से समान शब्द clustered दिखाई देते हैं
BERT और transformer-based embedding
- BERT, एक Encoder-only transformer model है, जिसमें हर layer के साथ context information dynamic रूप से reflect होती जाती है
- Input stage: tokenizer से text को tokenize करना → token embedding vectors में बदलना → positional embedding के साथ जोड़ना
- इसके बाद कई transformer layers से गुजरते हुए embedding context information के आधार पर dynamic रूप से बदलती रहती है
- [CLS], [SEP] जैसे special tokens के माध्यम से पूरे sentence और segment information को भी process किया जाता है
- BERT के बाद कई LLMs ने dynamic (contextual) embedding approach अपनाई
LLM embedding की संरचना और training
- LLM embedding, input tokens को high-dimensional vectors में बदलने वाली पहली layer (lookup table) के रूप में implement की जाती है
- यह
torch.nn.Embedding की तरह token ID लेकर संबंधित embedding vector लौटाने वाली table structure में बनी होती है
- LLM training के दौरान embedding layer weights को भी साथ में optimize करता है, जिससे model के data और objective के अनुरूप embedding अधिक refined होती जाती है
- उदाहरण: DeepSeek-R1-Distill-Qwen-1.5B model 1536-dimensional embedding vectors का उपयोग करता है
Embedding की visualization और graph analysis
- Embedding vectors के बीच similarity (जैसे cosine similarity) के आधार पर embedding space का graph के रूप में analysis किया जा सकता है
- उदाहरण: "AI agents will be the most hot topic..." वाक्य को tokenize करके, हर token की embedding में high-similarity वाले tokens को जोड़कर visualize किया जा सकता है
- किसी एक शब्द (जैसे "list") के अलग-अलग रूप ("_list", "List" आदि) में भी अक्सर समान embeddings पाई जाती हैं
निष्कर्ष
- Embedding, LLM और NLP का मुख्य घटक है, जो input data को numeric vectors में बदलकर model को semantic structure और context information process करने योग्य बनाती है
- LLM के दौर में भी embedding के मूल सिद्धांत और संरचना में बहुत बड़ा बदलाव नहीं आया है, और यह अब भी model performance तथा interpretation में बहुत महत्वपूर्ण भूमिका निभाती है
- Intuitive code examples और visual materials के माध्यम से embedding के वास्तविक working principle को आसानी से समझा जा सकता है
2 टिप्पणियां
king - man + woman = queen
Hacker News राय
यह वास्तव में चौंकाने वाली बात है कि embeddings, LLM stack के उन हिस्सों में से हैं जिन पर लगभग चर्चा ही नहीं होती; मुझे हमेशा लगा कि नेटवर्क की semantic connections infer करने की क्षमता पर इनका बहुत बड़ा असर पड़ता है, लेकिन लोग इनके बारे में ज़्यादा बात नहीं करते
embeddings की समस्या यह है कि मॉडल के अलावा इन्हें पढ़ पाना लगभग असंभव है; embeddings इनपुट sequence के अर्थ को स्पष्ट रूप से encode करते हैं, लेकिन training process में यह जानकारी इतनी compress हो जाती है कि केवल मॉडल का decoder head ही इसे decode कर सकता है; Anthropic की Sonnet 3 के internal features को interpretable form में बदलने वाली research है, लेकिन इसमें internal layer activations को समझने के लिए parallel में एक अलग network train करना पड़ता है, इसलिए यह महंगा है
high-dimensional space की अजीब बात यह है कि ज़्यादातर values एक-दूसरे के प्रति orthogonal होती हैं और बहुत दूर होती हैं; फिर भी यह आश्चर्यजनक है कि dimensionality reduction techniques से 50,000 dimensions में भी concepts को cluster किया जा सकता है
जब मैंने पहली बार embeddings के बारे में गहराई से सीखा, तो लगा कि “LLMs के जादू का कम-से-कम एक-तिहाई embeddings से आता है”; यह तथ्य कि शब्द पहले से ही semantically useful arrangement में व्यवस्थित होते हैं, LLMs के रहस्य का थोड़ा परदा हटाता है; यह अब भी विस्मयकारी है, लेकिन ऐसा लगता है जैसे परदे के पीछे थोड़ा-सा दिख गया हो
embeddings एक तरह के “Rosetta Stone” की तरह काम करते हैं, जो computers को मानव भाषा को quantify करने योग्य बनाते हैं; मुझे लगता है कि यह वास्तव में एक महत्वपूर्ण मुद्दा होना चाहिए, लेकिन मैं यह भी समझता हूँ कि 1,000-dimensional vector space को समझने की कोशिश काफ़ी भारी लग सकती है
embeddings पर चर्चा कम होने वाली बात मेरी समझ में नहीं आती; खासकर RAG use cases या vector DB की बातों में embeddings हमेशा एक केंद्रीय विषय होते हैं
tutorial बहुत अच्छा था — contextual embeddings और static embeddings के बीच का अंतर महत्वपूर्ण है; बहुत से लोग word2vec (static embeddings) से परिचित हैं, लेकिन contextual embeddings कई मामलों में कहीं ज़्यादा शक्तिशाली होते हैं; (वैसे, सिर्फ़ page scroll करने पर browser history में बहुत सारे entries जुड़ जाना, यानी history hijacking, काफ़ी गंभीर है)
मुझे लगता है कि एक और advanced explanation की ज़रूरत जिस जगह है, वह embedding के नज़रिए से Encoder-Decoder transformer (BERT) और decoder-only generative models के बीच का अंतर है
एक छोटी-सी correction चाहिए: BERT एक encoder है (Encoder-Decoder नहीं), ChatGPT एक decoder है; encoder models (BERT) पूरे sentence को देख सकते हैं, इसलिए वे semantic representation के लिए बेहतर होते हैं; उदाहरण के लिए, “The bank was steep and muddy” में bank का अर्थ (नदी का किनारा या financial institution) पूरे sentence को देखकर तय किया जा सकता है; दूसरी ओर, GPT-type (decoder models) केवल बाएँ से दाएँ क्रम में देखते हैं, इसलिए वे sentence के बाद की जानकारी देखे बिना prediction करते हैं; इस पर और सामग्री के लिए huggingface का modernBERT post देखें, और neoBERT paper भी उपयोगी है
dust42 की व्याख्या में जोड़ूँ तो, BERT encoder है, GPT decoder है, और T5 encoder-decoder है; आजकल encoder-decoder कम लोकप्रिय हैं; encoder models classification, information extraction, और retrieval में बहुत इस्तेमाल होते हैं, जबकि decoder text generation, summarization, और translation के लिए उपयुक्त हैं; हालिया research (Ettin paper) भी इसे पुष्ट करती है; दोनों transformer हैं, इसलिए encoder को decoder में और उल्टा भी बदला जा सकता है; design का अंतर bidirectional attention (जहाँ सभी tokens सभी tokens को देख सकते हैं) और autoregressive attention (जहाँ केवल पिछले tokens दिखते हैं) में है
embedding projector का उपयोग करके आप सिर्फ़ 50 से ज़्यादा शब्द ही नहीं, बल्कि 3D data visualization की भी समझ विकसित कर सकते हैं; Tensorflow Embedding Projector देखें
यह एक बेहद शानदार visual guide है! मैंने भी इसी तरह के concept के साथ deep learning की गहरी समझ में मदद करने के लिए visual+audio+quiz शैली की LLM embedding lessons app.vidyaarthi.ai पर बनाई हैं; सीधे आज़माने का लिंक; मेरा लक्ष्य abstract concepts को और अधिक intuitive और interactive बनाना है, एक “करके सीखो” approach के ज़रिए; feedback का स्वागत है (यह self-promotion नहीं है, मैंने सच में इसे जुनून से बनाया है)
लगता है साइट ठीक से खुल नहीं रही; console में “Content-Security-Policy: The page’s settings blocked an inline style…” जैसी बहुत सारी error messages आ रही हैं
मुझे लगता है कि word cloud visualization या query top-k results दिखाना और अधिक intuitive हो सकता है; Tensorflow का Embedding Projector में शब्द डालकर UMAP projection चुनने की सलाह दूँगा
थोड़ा अधिक practical approach वाला explanation sgnt.ai की embeddings explainer post में भी है; मैंने इसे खुद लिखा है
शानदार सामग्री के लिए धन्यवाद! मेरी समझ के अनुसार LLMs में तीन बड़ी समस्याएँ हैं:
आपका approach कहीं अधिक intuitive है; मैं सोच रहा था कि आपने categorical/scalar features के embedding examples क्यों नहीं दिखाए
यह एक बहुत शिक्षाप्रद और अच्छी तरह संरचित article है, लेखक को धन्यवाद
LLM embeddings आमतौर पर input layer का हिस्सा होते हैं, और Word2Vec जैसे pretrained models से अलग, training के दौरान update होते रहते हैं,
एक अतिरिक्त सवाल: inference stage में embeddings एक “token ID -> vector” lookup table की तरह होते हैं,
लेकिन गणितीय रूप से देखें तो token ID को एक लंबे one-hot vector के रूप में encode करके फिर linear layer से गुज़ारकर embedding vector मिलता है,
क्या embedding training में भी यही structure वैसे ही लागू होता है? यानी क्या embeddings को linear layer मानकर backpropagation से train किया जाता है?
embeddings भी सामान्य backpropagation process का हिस्सा होते हैं, लेकिन efficiency के लिए one-hot encoding वास्तव में इस्तेमाल नहीं की जाती,
implementation इस तरह की जाती है कि gradient केवल selected vectors तक बहे,
एक ठोस example के लिए मेरी बनाई mini deep learning library SmallPebble source देखना मददगार हो सकता है
दूसरे comment को थोड़ा और स्पष्ट करूँ तो,
indexing और one-hot vector multiplication गणितीय रूप से समान हैं,
उदाहरण के लिए अगर vocab में N items हैं और sequence length L है, तो आपको embedding matrix के साथ NxL sparse matrix multiply करनी होगी,
लेकिन व्यवहार में हर column के लिए केवल एक index जानना पर्याप्त होता है, इसलिए अंदरूनी रूप से इसे एक संख्या (index) के रूप में ही represent किया जाता है,
इसी तरीके से forward pass के साथ-साथ backward pass भी indexing के आधार पर अलग से लिखा जाता है,
ताकि gradients selected embedding vectors तक पहुँच सकें