Atgal į žurnalą
3 min. skaitymo

Vektorių įterpimų ir panašumo matematikos gidas pradedantiesiems

Paprastas gidas, paaiškinantis, kaip dirbtinis intelektas reprezentuoja reikšmę koordinatėse, kaip veikia kosinuso panašumas ir Normalize-then-Dot triukas.

Vector DatabasesRetrieval-Augmented Generation (RAG)LLM Agents
Vektorių įterpimų ir panašumo matematikos gidas pradedantiesiems

Tradicinės paieškos sistemos rėmėsi tiksliu tekstinių eilučių atitikimu. Jei ieškojote žodžio "automobilis", sistemos praleisdavo dokumentus, kuriuose vartojamas tik žodis "mašina".

Šiuolaikinės dirbtinio intelekto sistemos šią problemą sprendžia paversdamos tekstą vektorių įterpimais (Vector Embeddings). Vietoj pažodinio eilučių lyginimo modeliai atvaizduoja žodžius ir sakinius kaip erdvines koordinates, kurios užfiksuoja koncepcinę reikšmę.

Šiame gide pradedantiesiems išnagrinėsime, kaip įterpimai reprezentuoja reikšmę geometrinėje erdvėje, palyginsime pagrindinius matematinius panašumo matus ir išnagrinėsime optimizavimo triuką, kurį naudoja vektorių duomenų bazės.


1. Kas yra vektorių įterpimas?

Įterpimo modelis yra neuroninis tinklas, veikiantis kaip semantinis vertėjas. Jis paima įvesties tekstą ir grąžina fiksuoto ilgio skaičių sąrašą, vadinamą vektoriumi.

Input Text: "automobile"  ---> Embedding Model ---> [0.024, -0.412, 0.891, ..., 0.105]
Input Text: "car"         ---> Embedding Model ---> [0.021, -0.408, 0.887, ..., 0.112]

Šie skaičiai nėra atsitiktiniai. Jie reprezentuoja koordinates daugiamatėje matematinėje erdvėje. Kadangi žodžiai "car" ir "automobile" turi beveik identišką reikšmę, modelis jų koordinates patalpina šalia vienas kito.


2. Kalbos geometrija: matavimo dimensijos

Skaičių kiekis vektoriuje apibrėžia jo dimensiją (pvz., 768 dimensijos standartiniuose modeliuose arba 1536 didesniuose).

Nors žmonės negali vizualiai įsivaizduoti 768 dimensijų erdvės, geometrija veikia taip pat, kaip 2D rodyklių braižymas ant popieriaus:

  1. Kiekvienas vektorius prasideda koordinačių pradžioje [0, 0, ... 0].
  2. Vektoriaus reikšmės nurodo, kiek rodyklė nutolsta išilgai kiekvienos ašies.
  3. Rodyklės viršūnė patenka į tam tikrą tašką semantinėje erdvėje.
2D Vector Space Visualization:

  Y Axis (Concept: Technology)
    ^
    |      * "laptop" [2.1, 4.8]
    |      * "computer" [2.3, 4.5]
    |
    |                         * "banana" [4.9, 0.4]
    +------------------------------------------------> X Axis (Concept: Food)

Pagrindinė taisyklė: Niekada nebandykite izoliuoti vienos koordinatės. Reikšmė yra paskirstyta visame visų dimensijų šablone.


3. Matematiniai matai: atstumo matavimas

Norėdami nustatyti, ar du tekstai turi tą pačią reikšmę, kompiuteriai matuoja atstumą tarp jų vektorių rodyklių:

1. Vektoriaus ilgis (L2 norma)

Matuoja tiesioginį rodyklės ilgį nuo koordinačių pradžios iki viršūnės:

a=i=1nai2\|\mathbf{a}\| = \sqrt{\sum_{i=1}^{n} a_i^2}

2. Skaliarinė sandauga (Dot Product)

Daugina atitinkamas dviejų vektorių koordinates ir jas susumuoja:

ab=i=1naibi\mathbf{a} \cdot \mathbf{b} = \sum_{i=1}^{n} a_i b_i

3. Euklido atstumas (L2 atstumas)

Matuoja tiesioginį atstumą tarp dviejų vektorių rodyklių viršūnių:

d(a,b)=i=1n(aibi)2d(\mathbf{a}, \mathbf{b}) = \sqrt{\sum_{i=1}^{n} (a_i - b_i)^2}

4. Kosinuso panašumas (Cosine Similarity)

Matuoja kampą θ\theta tarp dviejų vektorių rodyklių, visiškai nepaisydamas jų ilgio:

cos(θ)=abab\cos(\theta) = \frac{\mathbf{a} \cdot \mathbf{b}}{\|\mathbf{a}\| \|\mathbf{b}\|}

  • Auksinis tekstų paieškos standartas: Jei trumpa 3 žodžių paieška ir 500 žodžių straipsnis yra apie tą pačią temą, jų rodyklės rodys ta pačia kryptimi (θ0    cos(θ)1.0\theta \approx 0^\circ \implies \cos(\theta) \approx 1.0).

4. Gamybinė inžinerija: "Normalize-Then-Dot" triukas

Kosinuso panašumo skaičiavimas reikalauja dalybos veiksmų, kurie naudoja daug procesoriaus resursų atliekant milijonus užklausų per sekundę.

Vektorių duomenų bazės (Pinecone, Milvus, pgvector) naudoja matematinį optimizavimą:

1 žingsnis: Normalizavimas įrašant

Įrašant naują vektorių, sistema jį normalizuoja iki tikslaus 1.01.0 ilgio (a^\hat{\mathbf{a}}):

a^=aa\hat{\mathbf{a}} = \frac{\mathbf{a}}{\|\mathbf{a}\|}

2 žingsnis: Supaprastinta užklausa

Kai abiejų vektorių ilgis yra 1.01.0 (a^=1\|\hat{\mathbf{a}}\| = 1 ir b^=1\|\hat{\mathbf{b}}\| = 1), kosinuso formulės vardiklis tampa lygus 11:

cos(θ)=a^b^1×1=a^b^\cos(\theta) = \frac{\hat{\mathbf{a}} \cdot \hat{\mathbf{b}}}{1 \times 1} = \hat{\mathbf{a}} \cdot \hat{\mathbf{b}}

Dėl išankstinio normalizavimo kosinuso panašumas virsta paprasta skaliarine sandauga. Duomenų bazei nereikia atlikti dalybos veiksmo, todėl paieška veikia maksimaliu greičiu ir išlaiko tikslumą.

Share this article