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

213 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

term
#### embedding
эмбеддинг
- https://habr.com/ru/companies/otus/articles/787116/ https://habr.com/ru/articles/947216/
- [Автоэнкодеры в Keras, Часть 1: Введение](https://habr.com/ru/articles/331382/)
- https://developers.sber.ru/docs/ru/gigachat/guides/embeddings
- https://blogs.epsilonmetrics.ru/kak-embeddingi-pomogayut-llm-ponyat-nas/
### ИИ
**Эмбединг** (embedding) — это способ преобразования текстовых данных в числовые векторы фиксированного размера, которые сохраняют смысловую информацию текста.
Давайте разберем на простом примере:
Предположим, у нас есть простая фраза: «Кошка сидит на окне».
Процесс преобразования в вектор можно представить так:
1. **Токенизация** — разбиение фразы на отдельные слова:
* «Кошка»
* «сидит»
* «на»
* «окне»
2. **Векторизация каждого слова**:
Каждое слово преобразуется в числовой вектор. Для простоты представим, что каждое слово описывается тремя характеристиками:
* Размер (большой/малый)
* Активность (движущийся/неподвижный)
* Местоположение (внутри/снаружи)
Получаем:
* «Кошка»: [малый, движущийся, внутри] → [0.2, 0.8, 0.6]
* «сидит»: [неподвижный] → [0.1]
* «на»: [предлог] → [0.5]
* «окне»: [большой, снаружи] → [0.9, 0.3]
3. **Объединение векторов**:
Можно просто сложить все векторы вместе или использовать более сложные методы усреднения.
Итоговый вектор фразы может выглядеть так:
[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. **Многомерная система характеристик**
Нужно использовать больше параметров для описания слов:
* Размер
* Активность
* Местоположение
* Тип объекта
* Связь с другими объектами
* Частотность использования в разных контекстах
2. **Уникальные признаки**
Каждое слово должно иметь свой уникальный набор характеристик.
### Пример улучшенного эмбеддинга
Для слов «окно» и «улица»:
**«Окно»**:
* Размер: средний → 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. **Масштабируемость**
Система может работать с миллионами слов без необходимости вручную присваивать коды.
### Практический пример
В векторном пространстве:
* Вектор слова «кошка» будет близок к векторам: «мурка», «питомец», «животное»
* Вектор слова «собака» будет близок к: «пёс», «друг человека», «животное»
* При этом векторы «кошка» и «собака» будут ближе друг к другу, чем к вектору «кресло»
Таким образом, современные эмбеддинги — это не просто таблица соответствий «объект-код», а сложная система, которая учится понимать смысл слов через их использование в контексте.