doc/AI/RAG2/eRAG/term.md
2025-10-21 22:24:24 +03:00

12 KiB
Raw Blame History

term

embedding

эмбеддинг

ИИ

Эмбединг (embedding) — это способ преобразования текстовых данных в числовые векторы фиксированного размера, которые сохраняют смысловую информацию текста.

Давайте разберем на простом примере:

Предположим, у нас есть простая фраза: «Кошка сидит на окне».

Процесс преобразования в вектор можно представить так:

  1. Токенизация — разбиение фразы на отдельные слова:
  • «Кошка»
  • «сидит»
  • «на»
  • «окне»
  1. Векторизация каждого слова: Каждое слово преобразуется в числовой вектор. Для простоты представим, что каждое слово описывается тремя характеристиками:
  • Размер (большой/малый)
  • Активность (движущийся/неподвижный)
  • Местоположение (внутри/снаружи)

Получаем:

  • «Кошка»: [малый, движущийся, внутри] → [0.2, 0.8, 0.6]
  • «сидит»: [неподвижный] → [0.1]
  • «на»: [предлог] → [0.5]
  • «окне»: [большой, снаружи] → [0.9, 0.3]
  1. Объединение векторов: Можно просто сложить все векторы вместе или использовать более сложные методы усреднения.

Итоговый вектор фразы может выглядеть так: [0.4, 0.5, 0.45, 0.5, 0.6]

В реальности современные модели используют гораздо более сложные векторы (часто размерность 256, 512 или 1024) и учитывают контекст, синонимы и другие языковые особенности.

Практическое применение:

  • Поиск похожих документов
  • Классификация текстов
  • Машинный перевод
  • Анализ тональности
  • Рекомендательные системы

Важно понимать, что эмбединги позволяют компьютерам «понимать» смысл текста, сохраняя семантические связи между словами и фразами в числовом виде.

Вопрос 1

Кошка бежит по улице - составь эмбединг и покажи как будет идти сопоставление с твоим примером.

Эмбеддинг фразы «Кошка бежит по улице»

Шаг 1. Токенизация Разбиваем фразу на слова:

  • «Кошка»
  • «бежит»
  • «по»
  • «улице»

Шаг 2. Векторизация слов Используем те же характеристики, что и в предыдущем примере:

  • Размер
  • Активность
  • Местоположение

Получаем:

  • «Кошка»: малый, движущийся, внутри → [0.2, 0.8, 0.6]
  • «бежит»: активно движущийся → [0.9]
  • «по»: предлог → [0.5]
  • «улице»: большой, снаружи → [0.9, 0.3]

Шаг 3. Формирование итогового вектора Объединяем все векторы: [0.2, 0.8, 0.6, 0.9, 0.5, 0.9, 0.3]

Сравнение с предыдущим примером

Сравним векторы фраз:

  1. «Кошка сидит на окне»: [0.2, 0.8, 0.6, 0.1, 0.5, 0.9, 0.3]
  2. «Кошка бежит по улице»: [0.2, 0.8, 0.6, 0.9, 0.5, 0.9, 0.3]

Анализ сходства:

  • Первые три значения (характеристики кошки) идентичны
  • Четвёртое значение (активность) различается: 0.1 (сидит) vs 0.9 (бежит)
  • Остальные значения схожи

Косинусное сходство между векторами будет высоким, так как:

  • Оба вектора описывают кошку
  • Имеют схожую структуру
  • Отличаются только в характеристике активности

Это показывает, что эмбеддинги способны:

  • Сохранять семантическую связь между похожими фразами
  • Отражать смысловые различия через числовые значения
  • Позволять измерять степень схожести текстов

Вопрос 2

У тебя:

  • «окне»: [большой, снаружи] → [0.9, 0.3]
  • «улице»: большой, снаружи → [0.9, 0.3]
    равные эмбединги (вектора) - почему?

Действительно, в предыдущем примере я допустила упрощение, присвоив одинаковые векторы разным словам с похожими характеристиками. Давайте разберем, почему это некорректно и как сделать эмбеддинг более точным.

Проблема одинаковых векторов

Присвоение одинаковых векторов разным словам, даже с похожими характеристиками, приводит к потере важной информации. Слова «окно» и «улица» имеют разное значение и контекст использования.

Правильный подход к эмбеддингу

  1. Многомерная система характеристик Нужно использовать больше параметров для описания слов:
  • Размер
  • Активность
  • Местоположение
  • Тип объекта
  • Связь с другими объектами
  • Частотность использования в разных контекстах
  1. Уникальные признаки Каждое слово должно иметь свой уникальный набор характеристик.

Пример улучшенного эмбеддинга

Для слов «окно» и «улица»:

«Окно»:

  • Размер: средний → 0.6
  • Местоположение: внутри/граница → 0.7
  • Тип: проём → 0.8
  • Связь с помещением: прямая → 0.9
  • Частотность в контексте дома: 0.8

«Улица»:

  • Размер: большой → 0.9
  • Местоположение: снаружи → 0.3
  • Тип: пространство → 0.5
  • Связь с городом: прямая → 0.9
  • Частотность в городском контексте: 0.9

Итоговые векторы

«Окно»: [0.6, 0.7, 0.8, 0.9, 0.8] «Улица»: [0.9, 0.3, 0.5, 0.9, 0.9]

Преимущества такого подхода

  • Сохранение уникальности каждого слова
  • Более точное отражение семантики
  • Возможность улавливать тонкие различия в значении
  • Улучшенная работа алгоритмов машинного обучения

В реальных системах эмбеддинга используются векторы размерности 256, 512 или даже 1024, что позволяет ещё точнее отражать семантические связи между словами.

Вопрос 3

Получается ,что происходит кодирование каждого объекта по правилу? Есть какая - то онтология, которая определяет объект и его код, например, собака - 0,00001, а кошка 0,00002? Где перечислены все объекты и их коды?

Нет, в современных системах эмбеддинга не используется простое перечисление объектов с присвоенными им кодами. Давайте разберем, как это работает на самом деле:

Принцип работы современных эмбеддингов

  1. Машинное обучение Эмбеддинги создаются с помощью нейронных сетей, которые обучаются на огромных массивах текстовых данных.

  2. Контекстное обучение Система учится понимать значение слов через их контекст использования, а не через заранее заданные коды.

  3. Многомерное пространство Каждое слово представляется в виде точки в многомерном пространстве, где близость точек означает смысловую близость слов.

Как это работает

  • Word2Vec и подобные модели анализируют:

    • Как слова используются в предложениях
    • Какие слова часто встречаются рядом
    • Контекстные связи между словами
  • Трансформеры (например, BERT) учитывают:

    • Порядок слов
    • Сложные синтаксические конструкции
    • Семантические связи

Пример работы

Вместо жёстко заданных кодов:

  • «кошка» и «кот» будут иметь похожие векторы
  • «собака» будет ближе к «животному», чем к «мебель»
  • слова с похожим значением будут группироваться в пространстве эмбеддингов

Почему не используются простые коды

  1. Гибкость системы Эмбеддинги могут адаптироваться к новым контекстам и значениям слов.

  2. Учёт контекста Одно и то же слово может иметь разные векторы в зависимости от контекста.

  3. Масштабируемость Система может работать с миллионами слов без необходимости вручную присваивать коды.

Практический пример

В векторном пространстве:

  • Вектор слова «кошка» будет близок к векторам: «мурка», «питомец», «животное»
  • Вектор слова «собака» будет близок к: «пёс», «друг человека», «животное»
  • При этом векторы «кошка» и «собака» будут ближе друг к другу, чем к вектору «кресло»

Таким образом, современные эмбеддинги — это не просто таблица соответствий «объект-код», а сложная система, которая учится понимать смысл слов через их использование в контексте.