olivlawolivlaw

Din cărți

Lecția 17 · Embeddings: sensul devine un vector, iar depozitul primește o coloană pe care nu o poate compara cu «=».

John Rupert Firth · A synopsis of linguistic theory 1930–1955 · 1957 · A synopsis of linguistic theory 1930–1955, în Studies in Linguistic Analysis (1957)2 minute de citit
„Vei cunoaște un cuvânt după compania pe care o ține.”John Rupert Firth · A synopsis of linguistic theory 1930–1955 · 1957 · A synopsis of linguistic theory 1930–1955, în Studies in Linguistic Analysis (1957)

Versiunea modelului de embedding face parte din schemă: schimbi modelul, recalculezi coloana.

Ideea lui Firth, formalizată: un model citește un text și îl transformă într-un vector de câteva sute sau mii de numere, astfel încât texte cu sens apropiat ajung vectori apropiați. Apropierea se măsoară — de obicei cosinus — nu se verifică prin egalitate. De aici o structură nouă în depozit: indexul vectorial (HNSW, IVF), care găsește aproximativ cei mai apropiați vecini fără să compare cu fiecare rând. Peste el stă RAG: caută fragmentele relevante după sens, apoi lasă un model generativ să răspundă folosindu-le. Ce se schimbă pentru inginerul de date: versiunea modelului de embedding face parte din schemă — schimbi modelul, recalculezi coloana, altfel compari vectori din spații diferite. Se stochează lângă vector: textul, un hash al lui, modelul, dimensiunea. Fragmentarea (chunking) e o decizie de modelare, nu un detaliu. Filtrele pe metadate (limbă, dată, client) se aplică înainte sau împreună cu căutarea vectorială, nu după. Și vectorii nu înlocuiesc cheile și join-urile: sunt o coloană în plus într-un tabel care rămâne relațional.

Firth a spus că sensul unui cuvânt e compania în care apare. Modelele de embedding au făcut asta literal: sensul devine o poziție în spațiu. Dar poziția apropiată nu înseamnă răspuns corect. Doi vectori pot fi vecini și tot să nu-ți folosească la nimic. De exemplu, cauți «cum anulez un bilet» și primești un fragment despre politicile de anulare ale altei companii. E semantic aproape, dar greșit pentru tine. De aceea căutarea vectorială trebuie evaluată, nu doar rulată. Întrebarea deschisă: cum măsori dacă fragmentele găsite sunt chiar cele potrivite?

De ce contează Un depozit care nu știe ce model a produs un vector nu poate spune dacă doi vectori sunt comparabili. Coloana fără versiune e o coloană fără sens.

TextModel deembeddingIndexvectorialVecinii ceimai
Sensul intră ca text și iese ca distanță.
Deschide pe YouTube ↗

← Vezi tot fluxul