Назад до журналу
3 хв читання

Векторні ембединги та математика схожості для початківців

Зрозумілий посібник про те, як ШІ представляє значення у вигляді просторових координат, як працює косинусна схожість і трюк Normalize-then-Dot.

Vector DatabasesRetrieval-Augmented Generation (RAG)LLM Agents
Векторні ембединги та математика схожості для початківців

Традиційні пошукові системи повністю покладалися на точний збіг символів. Якщо ви шукали "автомобіль", система пропускала документи, які містили лише слово "машина".

Сучасні системи штучного інтелекту вирішують цю проблему за допомогою векторних ембедингів (Vector Embeddings). Замість порівняння рядків символів моделі перетворюють текст у просторові координати, що відображають семантичне значення.

У цьому посібнику ми розберемо, як ембединги представляють значення у геометричному просторі, порівняємо математичні метрики схожості та вивчимо оптимізацію, яку використовують векторні бази даних.


1. Що таке векторний ембединг?

Модель ембедингів — це нейромережа, яка працює як семантичний перекладач. Вона приймає вхідний текст і повертає масив чисел із плаваючою комою фіксованої довжини — вектор.

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]

Ці числа є координатами на багатовимірній карті. Оскільки "car" та "automobile" мають однакова значення, модель розташовує їхні координати поруч.


2. Геометрія мови: Розуміння розмірності

Кількість чисел у векторі визначає його розмірність (наприклад, 768 вимірів у стандартних моделях або 1536 у більших).

Хоча людині важко уявити 768-вимірний простір, математика працює аналогічно 2D-векторам на папері:

  1. Кожен вектор починається в початку координат [0, 0, ... 0].
  2. Значення вектора вказують зміщення вздовж кожної осі.
  3. Кінець стрілки вказує на точку в семантичному просторі.
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)

Головне правило: Не намагайтеся ізолювати один вимір. Значення розподілене по всьому шаблону всіх вимірів разом.


3. Математичні метрики: Вимірювання близькості

Щоб визначити, чи збігаються значення двох текстів, комп'ютери вимірюють відстань між векторними стрілками:

1. Довжина вектора (Норма L2)

Вимірює довжину стрілки від початку координат до її кінця:

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

2. Скалярний добуток (Dot Product)

Перемножує відповідні координати двох векторів і підсумовує їх:

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

3. Евклідова відстань (L2 Distance)

Вимірює відстань по прямій між кінцями двох векторів:

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

4. Косинусна схожість (Cosine Similarity)

Вимірює кут θ\theta між двома векторами, повністю ігноруючи їхню довжину:

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

  • Золотий стандарт для пошуку текстів: Якщо короткий запит із 3 слів і стаття з 500 слів мають однакове значення, їхні вектори вказуватимуть в одному напрямку (θ0    cos(θ)1.0\theta \approx 0^\circ \implies \cos(\theta) \approx 1.0).

4. Інженерія в продакшені: Трюк "Normalize-Then-Dot"

Обчислення косинусної схожості вимагає ділення, що створює високе навантаження на процесор при мільйонах запитів на секунду.

Векторні бази даних (Pinecone, Milvus, pgvector) використовують математичний короткий шлях:

Крок 1: Нормалізація при збереженні

При збереженні вектора система нормалізує його довжину до 1.01.0 (a^\hat{\mathbf{a}}):

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

Крок 2: Спрощений пошук

Якщо обидва вектори мають довжину 1.01.0 (a^=1\|\hat{\mathbf{a}}\| = 1 та b^=1\|\hat{\mathbf{b}}\| = 1), знаменник формули стає рівним 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}}

Попередня нормалізація перетворює косисну схожість на звичайний скалярний добуток. База даних уникає ділення і виконує пошук із максимальною швидкістю при повній точності.

Share this article