Назад в журнал
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