ЁЯПл The SchoolтА║ЁЯза AIтА║ЁЯЧ║я╕П рдзрдбрд╛ 04 тАФ Embeddings: рдЕрд░реНрдерд╛рдВрдЪрд╛ рдмреИрдардХ-рддрдХреНрддрд╛
ЁЯЦ╝я╕П See the drawing + lab ЁЯПа Course home ЁЯМ┐ Branch on GitHub тЬПя╕П View source
ЁЯЦ╝я╕П рдЖрдХреГрддреА рдЖрдгрд┐ labThe drawing + lab рдкреВрд░реНрдг рдкрд╛рдирд╛рд╡рд░ рдЙрдШрдбрд╛ тЖЧOpen full page тЖЧ

ЁЯЧ║я╕П рдзрдбрд╛ 04 тАФ Embeddings: рдЕрд░реНрдерд╛рдВрдЪрд╛ рдмреИрдардХ-рддрдХреНрддрд╛

ЁЯУН рддреБрдореНрд╣реА рдЗрдереЗ рдЖрд╣рд╛рдд: 12 рдкреИрдХреА рдзрдбрд╛ 04 ┬╖ рдорд╛рдЧреЗ: lesson-03-tokens ┬╖ рдкреБрдвреЗ: lesson-05-next-token


ЁЯУж рдпрд╛ рдмреНрд░рдБрдЪрдордзреНрдпреЗ рдХрд╛рдп рдЖрд╣реЗ

рдзрдбреЗ 01тАУ03, рдЖрдгрд┐ рддреА рдХрд▓реНрдкрдирд╛ рдЬрд┐рдЪреНрдпрд╛рдореБрд│реЗ semantic search, RAG рдЖрдгрд┐ "model рд▓рд╛ рдореА рдХрд╛рдп рдореНрд╣рдгрддреЛ рддреЗ рдХрд│рддреЗ" рд╢рдХреНрдп рд╣реЛрддреЗ: embeddings тАФ рдЕрд░реНрде рдореНрд╣рдгрдЬреЗ coordinates. рдЦрд░реА file: demo/attention_toy.py тАФ рддреНрдпрд╛рддрд▓реЗ рд╣рд╛рддрд╛рдиреЗ рдмрдирд╡рд▓реЗрд▓реЗ 4-рдЖрдХрдбреА vectors рд╣реЗрдЪ рдЫреЛрдЯреЗ embeddings рдЖрд╣реЗрдд.

ЁЯзТ 5 рд╡рд░реНрд╖рд╛рдВрдЪреНрдпрд╛ рдореБрд▓рд╛рд▓рд╛ рд╕рдордЬрд╛рд╡рд▓реНрдпрд╛рд╕рд╛рд░рдЦреЗ

рдЗрддрдХреЗ рдореЛрдареЗ рд╢рд╛рд│реЗрдЪреЗ рд╕рднрд╛рдЧреГрд╣ рдХрд▓реНрдкрдирд╛ рдХрд░рд╛ рдХреА рддреНрдпрд╛рдд рднрд╛рд╖реЗрддреАрд▓ рдкреНрд░рддреНрдпреЗрдХ рд╢рдмреНрдж рдмрд╕реВ рд╢рдХреЗрд▓ тАФ рдЖрдгрд┐ рдПрдХрдЪ рдирд┐рдпрдо: рд╕рд╛рд░рдЦрд╛ рдЕрд░реНрде рдЕрд╕рд▓реЗрд▓реА рдореБрд▓реЗ рдПрдХрдореЗрдХрд╛рдВрдЬрд╡рд│ рдмрд╕рддрд╛рдд. ЁЯЧ║я╕П

рд╢рдмреНрджрд╛рдЪреЗ embedding рдореНрд╣рдгрдЬреЗ рдлрдХреНрдд рддреНрдпрд╛рдЪреЗ рдЬрд╛рдЧреЗрдЪреЗ coordinates тАФ рдЦрд▒реНрдпрд╛ рдирдХрд╛рд╢рд╛рд╕рд╛рд░рдЦреЗ 2 рдЖрдХрдбреЗ рдирд╡реНрд╣реЗ, рддрд░ рд╢реЗрдХрдбреЛ (~1,000+ dimensions), рдХрд╛рд░рдг рдЕрд░реНрдерд╛рд▓рд╛ рдЕрдиреЗрдХ рджрд┐рд╢рд╛ рдЕрд╕рддрд╛рдд: рд╕рдЬреАрд╡рдкрдгрд╛, рдЖрдХрд╛рд░, рдФрдкрдЪрд╛рд░рд┐рдХрддрд╛, рднрд╛рд╡рдирд╛тАж

рд╣рд╛ рддрдХреНрддрд╛ рдпреЗрддреЛ рдХреБрдареВрди? рддреЛ рдХреЛрдгреАрд╣реА рдХрд╛рдврдд рдирд╛рд╣реА. training рджрд░рдореНрдпрд╛рди (рдзрдбрд╛ 02 рдЪрд╛ рд▓рд╛рд▓ рдкреЗрди), рдЬрд╛рдЧрд╛ рдмрд╛рдХреА рд╕рдЧрд│реНрдпрд╛рдВрд╕рд╛рд░рдЦреНрдпрд╛рдЪ dials рдЕрд╕рддрд╛рдд тАФ рдЖрдгрд┐ model рд▓рд╛ рдХрд│рддреЗ рдХреА рд╕рд╛рд░рдЦреЗ рд╢рдмреНрдж рдПрдХрддреНрд░ рдмрд╕рд╡рд▓реНрдпрд╛рдиреЗ рдкреБрдврдЪреНрдпрд╛ рд╢рдмреНрджрд╛рдЪрд╛ рдЕрдВрджрд╛рдЬ рд╕реЛрдкрд╛ рд╣реЛрддреЛ. рдЕрд░реНрде рднреВрдорд┐рддреА рдореНрд╣рдгреВрди рдЙрдЧрд╡рддреЛ.

рдЖрдгрд┐ рднреВрдорд┐рддреА рдореНрд╣рдгрдЬреЗ рдЕрд░реНрдерд╛рдВрд╡рд░ рдЧрдгрд┐рдд:

ЁЯЧ║я╕П рдЖрдХреГрддреА

flowchart LR
    w["ЁЯзй token 'cat'"]
    e["ЁЯЧ║я╕П embedding<br/>seat coordinates:<br/>[0.31, -1.2, 0.88, тАж] ├Ч768"]
    subgraph hall["the seating hall - meaning space"]
        c["cat ЁЯР▒"] --- k["kitten"] --- d["dog ЁЯР╢"]
        far["ЁЯУО stapler - far away"]
    end
    q["'small pet that purrs?'"]
    w -->|"1 look up seat"| e -->|"2 place in hall"| hall
    q -->|"3 nearest seats win<br/>= semantic search"| c

тЭУ рдХрд╛рдп

ЁЯдФ рдХрд╛

"calculator рдЕрд░реНрдерд╛рдВрдЪреА рддреБрд▓рдирд╛ рдХрд╕рд╛ рдХрд░реВ рд╢рдХрддреЛ?" рдпрд╛рдЪреЗ рдЙрддреНрддрд░ embeddings рдЖрд╣реЗрдд. рдПрдХрджрд╛ рдЕрд░реНрде рднреВрдорд┐рддреА рдмрдирд▓рд╛ рдХреА рдорд╛рдгрд╕рд╛рдВрдЪреЗ рдЕрд╕реНрдкрд╖реНрдЯ рдкреНрд░рд╢реНрди рдореЛрдЬрддрд╛ рдпреЗрддрд╛рдд: рдиреЗрдордХреЗ рд╢рдмреНрдж рджреБрд░реНрд▓рдХреНрд╖рд┐рдд рдХрд░рдгрд╛рд░рд╛ search, "рд╕рд╛рд░рдЦреЗ tickets рд╢реЛрдзрд╛", "рдХреЛрдгрддреЗ docs рдпрд╛рдЪреЗ рдЙрддреНрддрд░ рджреЗрддрд╛рдд?" тАФ рд╕рдЧрд│реЗ рдлрдХреНрдд рдЕрдВрддрд░. рдзрдбрд╛ 03 рдЬрд░ model рдЪреНрдпрд╛ рд╕рдВрд╡реЗрджрдирд╛ рд╣реЛрддреНрдпрд╛, рддрд░ рд╣реА рддреНрдпрд╛рдЪреА рд╡рд┐рдЪрд╛рд░рд╛рдВрдЪреА рдЬрд╛рдЧрд╛ рдЖрд╣реЗ.

ЁЯзк рдХрд░реВрди рдкрд╛рд╣рд╛

python3 demo/attention_toy.py

рд╕реБрд░реБрд╡рд╛рддреАрдЪреЗ рд╣рд╛рддрд╛рдиреЗ рдмрдирд╡рд▓реЗрд▓реЗ vectors рдкрд╛рд╣рд╛: robot [0.9, 0.7, 0.1, 0.6] рд╡рд┐рд░реБрджреНрдз it [0.8, 0.5, 0.0, 0.5] тАФ рдореБрджреНрджрд╛рдо рдЬрд╡рд│ рдмрд╕рд╡рд▓реЗрд▓реЗ (рд╕рд╛рд░рдЦрд╛ рдЕрд░реНрде-рдЖрдХрд╛рд░), рддрд░ because рджреВрд░ рдмрд╕рддреЛ. рдордЧ printout рд╕рд╛рдореНрдп рдЦрд░реЗ рдХрд╛рдо рдХрд░рддрд╛рдирд╛ рджрд╛рдЦрд╡рддреЗ. рдХрд╛рдЧрджрд╛рд╡рд░рдЪрд╛ lab: pizza, burger, homework рд╕рд╛рдареА 4-рдЖрдХрдбреА рдЬрд╛рдЧрд╛ рддрдпрд╛рд░ рдХрд░рд╛ тАФ рдХреЛрдгрддреЗ рджреЛрди рдПрдХрддреНрд░ рдмрд╕рддрд╛рдд, рдЖрдгрд┐ рддреБрдордЪреНрдпрд╛ 4 рджрд┐рд╢рд╛рдВрдЪрд╛ рдЕрд░реНрде рдХрд╛рдп?

тПня╕П рдкреБрдвреЗ

рд╕рдВрд╡реЗрджрдирд╛ тЬУ, рд╡рд┐рдЪрд╛рд░рд╛рдВрдЪреА рдЬрд╛рдЧрд╛ тЬУ тАФ рдЖрддрд╛ рд╕рдВрдкреВрд░реНрдг рдпрдВрддреНрд░ рдЬреНрдпрд╛ рдЦрд▒реНрдпрд╛ рдХрд╛рдорд╛рд╕рд╛рдареА train рдЭрд╛рд▓реЗ рддреЗ: рдкреБрдврдЪрд╛ puzzle рддреБрдХрдбрд╛ рдУрд│рдЦрдгреЗ, рдЖрдгрд┐ рдХрд┐рддреА рдзрд╛рдбрд╕реА рд╡реНрд╣рд╛рдпрдЪреЗ рдпрд╛рд╕рд╛рдареА рдПрдХ dial.

git checkout lesson-05-next-token

ЁЯЧ║я╕П Lesson 04 тАФ Embeddings: the seating chart of meanings

ЁЯУН You are here: Lesson 04 of 12 ┬╖ Previous: lesson-03-tokens ┬╖ Next: lesson-05-next-token


ЁЯУж What's in this branch

Lessons 01тАУ03, plus the idea that makes semantic search, RAG and "the model understands me" possible: embeddings тАФ meaning as coordinates. Real file: demo/attention_toy.py тАФ its hand-made 4-number vectors ARE tiny embeddings.

ЁЯзТ Explain like I'm 5

Imagine a school hall so large you can seat every word in the language тАФ and one rule: kids with similar meanings sit close together. ЁЯЧ║я╕П

A word's embedding is simply its seat coordinates тАФ not 2 numbers like a real map, but hundreds (~1,000+ dimensions), because meaning has many directions: alive-ness, size, formality, sentimentтАж

Where does the chart come from? Nobody draws it. During training (lesson 02's red pen), the seats are dials like everything else тАФ and the model discovers that seating similar words together makes next-word prediction easier. Meaning emerges as geometry.

And geometry means MATH on meanings:

ЁЯЧ║я╕П Diagram

flowchart LR
    w["ЁЯзй token 'cat'"]
    e["ЁЯЧ║я╕П embedding<br/>seat coordinates:<br/>[0.31, -1.2, 0.88, тАж] ├Ч768"]
    subgraph hall["the seating hall - meaning space"]
        c["cat ЁЯР▒"] --- k["kitten"] --- d["dog ЁЯР╢"]
        far["ЁЯУО stapler - far away"]
    end
    q["'small pet that purrs?'"]
    w -->|"1 look up seat"| e -->|"2 place in hall"| hall
    q -->|"3 nearest seats win<br/>= semantic search"| c

тЭУ What

ЁЯдФ Why

Embeddings are the answer to "how can a calculator compare meanings?" Once meaning is geometry, fuzzy human questions become measurable: search that ignores exact words, "find similar tickets", "which docs answer this?" тАФ all just distance. If lesson 03 was the model's senses, this is its space of thought.

ЁЯзк Try it

python3 demo/attention_toy.py

Look at the hand-made vectors at the top: robot [0.9, 0.7, 0.1, 0.6] vs it [0.8, 0.5, 0.0, 0.5] тАФ deliberately seated CLOSE (similar meaning-shape), while because sits far away. The printout then shows similarity doing real work. Paper lab: invent 4-number seats for pizza, burger, homework тАФ which two sit together, and what do your 4 directions mean?

тПня╕П Next

Senses тЬУ, space of thought тЬУ тАФ now the actual JOB the whole machine was trained for: predicting the next puzzle piece, with a dial for how adventurous to be.

git checkout lesson-05-next-token
тЖР PrevioustokensNext тЖТnext token

This page is the lesson's README from the lesson-04-embeddings branch, shown here so the whole School stays on one site. Code files open on GitHub at the same branch.