# Embeddings और समानता — Large Language Models

Source: https://www.geekswithgeeks.com/hi/llms/n-embeddings

> Tokens को vectors के रूप में दिखाएँ जहाँ दूरी अर्थ दर्शाती है।

## अर्थ निर्देशांक के रूप में

Neural networks संख्याओं पर काम करते हैं, इसलिए हर token **embedding** नामक संख्याओं की सूची (सैकड़ों से हज़ारों मान) में बदलता है। प्रशिक्षण में, समान संदर्भों में आने वाले tokens के vectors समान हो जाते हैं। **Cosine similarity** (दो vectors के बीच का कोण) निकटता मापती है: 1 के पास का अर्थ लगभग समान दिशा, 0 के पास असंबंधित। यही विचार **semantic search** को चलाता है: documents और query को embed करें, फिर निकटतम vectors लौटाएँ। नीचे की संख्याएँ विचार दिखाने को हाथ से बनी हैं; असली embeddings सीखे जाते हैं।

## संख्याएँ अंदर, संभावनाएँ बाहर

Embeddings tokens को vectors बनाते हैं; softmax scores को संभावनाएँ; sampling token चुनती है।

![पाँच चरण: embed, score, softmax, sample, दोहराएँ।](assets/figures/llms/section-2-map.svg) — चित्र 2.1 — Embed, score, softmax, sample और दोहराएँ।

## Cosine similarity, चलाकर

मैंने यह सादा-Python (सिर्फ़ standard library) उदाहरण चलाया। "king" और "queen" लगभग एक ही दिशा में हैं (0.994); "king" और "apple" नहीं (0.303)।

```python
import math

def cosine(a, b):
    dot = sum(x * y for x, y in zip(a, b))
    return dot / (math.sqrt(sum(x * x for x in a)) * math.sqrt(sum(y * y for y in b)))

emb = {
    "king":   [0.9, 0.8, 0.1],
    "queen":  [0.9, 0.7, 0.2],
    "apple":  [0.1, 0.2, 0.9],
}
print("king~queen", round(cosine(emb["king"], emb["queen"]), 3))
print("king~apple", round(cosine(emb["king"], emb["apple"]), 3))

```

Output:

```
king~queen 0.994
king~apple 0.303
```

## Embeddings मॉडल-विशिष्ट होते हैं

अलग embedding मॉडलों के vectors आपस में बदले नहीं जा सकते। मॉडल बदलें तो सारे दस्तावेज़ दोबारा embed करें।

**Quiz:** Cosine similarity का 1 के पास होना क्या दर्शाता है?

- [ ] Vectors असंबंधित हैं
- [x] Vectors लगभग एक ही दिशा में हैं
- [ ] पाठ लंबा है
- [ ] मॉडल बड़ा है

*Answer:* Vectors लगभग एक ही दिशा में हैं. समान अर्थ embedding space में समान दिशा देता है।
