Нейросетевое встраивание
Материал из MachineLearning.
(Создание статьи о нейросетевых встраиваниях) |
(Исправлена формула аналогий: кириллица вынесена из tex) |
||
| (1 промежуточная версия не показана) | |||
| Строка 1: | Строка 1: | ||
| - | {{well|Статья написана с использованием LLM '''Claude Sonnet 4''' и проверена участником [[Участник:Emil Petrov|Emil Petrov]] | + | {{well|Статья написана с использованием LLM '''Claude Sonnet 4''' и проверена участником [[Участник:Emil Petrov|Emil Petrov]] 20:15, 14 июля 2026 (MSD) |
Промпт приводится полностью в [[Обсуждение:Нейросетевое встраивание]] | Промпт приводится полностью в [[Обсуждение:Нейросетевое встраивание]] | ||
}} | }} | ||
{{TOCright}} | {{TOCright}} | ||
| - | '''Нейросетево́е вста́ивание''' (англ. neural network embedding, также '''векторное представление''') — отображение объектов дискретного пространства (слов, | + | |
| + | '''Нейросетево́е вста́ивание''' (англ. ''neural network embedding'', также '''векторное представление''', '''эмбеддинг''') — отображение объектов дискретного пространства (слов, токенов, предложений, документов, пользователей, узлов графа, изображений и т.д.) в непрерывное векторное пространство фиксированной размерности <tex>d</tex><ref name="goodfellow2016">{{книга |автор=Goodfellow I., Bengio Y., Courville A. |заглавие=Deep Learning |издательство=MIT Press |год=2016 |страницы=502–511}}</ref>. Эмбеддинги позволяют [[Нейронная сеть|нейронным сетям]] оперировать символами так же, как числами, и кодировать семантические, синтаксические или структурные отношения геометрией пространства. | ||
| + | |||
| + | Аналогия: словарь языка — огромный шкаф с ящиками-словами. Эмбеддинг раскладывает ящики в комнате так, что «близкие по смыслу» оказываются рядом, а «далёкие» — далеко. Тогда поиск, классификация и аналогии превращаются в операции с расстояниями и углами, а не в хрупкие правила на строках. | ||
| + | |||
| + | В современных [[Большая языковая модель|больших языковых моделях]] на архитектуре [[Трансформер (модель)|трансформера]] встраивания токенов — первый слой представления; [[Механизм внимания|механизм внимания]] далее смешивает их в контекстуальные состояния. Отдельные эмбеддинг-модели обслуживают семантический поиск и RAG в [[Промпт-инжиниринг|промпт-инжиниринге]]. | ||
== Основная идея == | == Основная идея == | ||
| - | + | Качественный эмбеддинг отображает семантическую близость в геометрическую. Если <tex>f: \mathcal{X} \to \mathbb{R}^d</tex> — функция встраивания, то для семантически близких <tex>x_1, x_2</tex> и далёкого <tex>x_3</tex> ожидают: | |
| + | |||
| + | :<tex>\|f(x_1) - f(x_2)\|_2 \ll \|f(x_1) - f(x_3)\|_2.</tex> | ||
| + | |||
| + | Часто используют косинусную близость: | ||
| - | :<tex>\ | + | :<tex>\mathrm{sim}(u,v) = \frac{u^\top v}{\|u\|_2\,\|v\|_2}.</tex> |
| - | + | Размерность <tex>d</tex> типично от 64–300 (классические word embeddings) до 384–4096 (современные sentence / LLM embeddings). Слишком малая <tex>d</tex> теряет различия; слишком большая удорожает хранение и ANN-поиск без гарантии лучшего качества. | |
| - | == | + | == Статические словесные эмбеддинги == |
=== Word2Vec === | === Word2Vec === | ||
| - | + | Модель Mikolov et al. (2013) обучает плотные векторы слов на задаче предсказания контекста<ref name="mikolov2013">{{статья |автор=Mikolov T., Sutskever I., Chen K., Corrado G., Dean J. |заглавие=Distributed Representations of Words and Phrases and their Compositionality |издание=Advances in Neural Information Processing Systems |год=2013 |том=26 |ссылка=https://arxiv.org/abs/1310.4546}}</ref>: | |
| - | * '''CBOW''' — | + | * '''CBOW''' — предсказать целевое слово по усреднённому контексту; |
| - | * '''Skip-gram''' — | + | * '''Skip-gram''' — предсказать контекстные слова по целевому. |
| - | Функция потерь Skip-gram: | + | Функция потерь Skip-gram (в упрощённом виде): |
:<tex>\mathcal{L} = -\frac{1}{T}\sum_{t=1}^{T}\sum_{-c \le j \le c,\, j \ne 0} \log p(w_{t+j} \mid w_t),</tex> | :<tex>\mathcal{L} = -\frac{1}{T}\sum_{t=1}^{T}\sum_{-c \le j \le c,\, j \ne 0} \log p(w_{t+j} \mid w_t),</tex> | ||
| - | где <tex>T</tex> — длина корпуса, <tex>c</tex> — размер окна | + | где <tex>T</tex> — длина корпуса, <tex>c</tex> — размер окна. На практике применяют negative sampling или hierarchical softmax. |
| - | Знаменитое свойство: <tex>f(\ | + | Знаменитое свойство линейных аналогий (классический пример на английских токенах; по-русски: «король − мужчина + женщина ≈ королева»): |
| + | |||
| + | :<tex>f(\mathrm{king}) - f(\mathrm{man}) + f(\mathrm{woman}) \approx f(\mathrm{queen}).</tex> | ||
| + | |||
| + | Ограничение: один вектор на словоформу/тип — многозначность («банка» как финансовое учреждение и как ёмкость) схлопывается в одну точку. | ||
=== GloVe === | === GloVe === | ||
| - | GloVe | + | '''GloVe''' (Global Vectors) явно использует статистику совместной встречаемости<ref name="pennington2014">{{статья |автор=Pennington J., Socher R., Manning C. D. |заглавие=GloVe: Global Vectors for Word Representation |издание=Empirical Methods in Natural Language Processing |год=2014 |страницы=1532–1543 |ссылка=https://aclanthology.org/D14-1162/}}</ref>. Целевая функция: |
:<tex>J = \sum_{i,j=1}^{V} h(X_{ij})\left(w_i^\top \tilde{w}_j + b_i + \tilde{b}_j - \log X_{ij}\right)^2,</tex> | :<tex>J = \sum_{i,j=1}^{V} h(X_{ij})\left(w_i^\top \tilde{w}_j + b_i + \tilde{b}_j - \log X_{ij}\right)^2,</tex> | ||
| - | где <tex>X_{ij}</tex> — | + | где <tex>X_{ij}</tex> — счётчик совместных появлений, <tex>h</tex> — весовая функция, снижающая влияние редких и сверхчастых пар. GloVe сочетает глобальную матричную факторизацию с локальным контекстным окном. |
=== FastText === | === FastText === | ||
| - | + | '''FastText''' расширяет Word2Vec: слово представляется суммой эмбеддингов символьных n-грамм<ref name="bojanowski2017">{{статья |автор=Bojanowski P., Grave E., Joulin A., Mikolov T. |заглавие=Enriching Word Vectors with Subword Information |издание=Transactions of the Association for Computational Linguistics |год=2017 |том=5 |страницы=135–146 |ссылка=https://arxiv.org/abs/1607.04606}}</ref>. Это даёт векторы для out-of-vocabulary и морфологически богатых языков (в том числе русского): невиданное слово всё же собирается из знакомых кусков. | |
== Контекстуальные эмбеддинги == | == Контекстуальные эмбеддинги == | ||
| - | + | Статический вектор не зависит от предложения. '''Контекстуальный''' эмбеддинг — функция от всего контекста: одно и то же слово получает разные векторы в разных окружениях. | |
=== ELMo === | === ELMo === | ||
| - | ELMo | + | '''ELMo''' строит представления двунаправленной LSTM и комбинирует скрытые состояния разных слоёв взвешенной суммой<ref name="peters2018">{{статья |автор=Peters M. E. et al. |заглавие=Deep Contextualized Word Representations |издание=NAACL |год=2018 |ссылка=https://arxiv.org/abs/1802.05365}}</ref>. Нижние слои ближе к синтаксису, верхние — к семантике. ELMo стал мостом от Word2Vec к трансформерной эре. |
| - | === BERT | + | === BERT и трансформерные представления === |
| - | [[Трансформер (модель)|Трансформерные]] | + | [[Трансформер (модель)|Трансформерные]] энкодеры вроде BERT производят мощные контекстуальные состояния через многослойное само-внимание<ref name="devlin2019">{{статья |автор=Devlin J., Chang M.-W., Lee K., Toutanova K. |заглавие=BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding |издание=NAACL |год=2019 |страницы=4171–4186 |ссылка=https://arxiv.org/abs/1810.04805}}</ref>. Для эмбеддинга предложения часто берут токен <code>[CLS]</code> или mean-pooling по токенам. Важно: «сырой» BERT без дообучения на семантическую близость — слабый sentence embedding: косинус плохо ранжирует парафразы (классический результат Sentence-BERT). |
| - | + | Decoder-only LLM также дают скрытые состояния, но для retrieval обычно обучают или адаптируют отдельные embedding-головы / bi-энкодеры. | |
| - | + | === Sentence-BERT (SBERT) === | |
| + | |||
| + | '''Sentence-BERT''' дообучает сиамские/триплетные сети на парах предложений, чтобы косинус в пространстве эмбеддингов отражал семантическую близость<ref name="reimers2019">{{статья |автор=Reimers N., Gurevych I. |заглавие=Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks |издание=Empirical Methods in Natural Language Processing |год=2019 |ссылка=https://arxiv.org/abs/1908.10084}}</ref>. Классическая контрастивная (contrastive) потеря с отступом: | ||
:<tex>\mathcal{L} = (1-y)\frac{1}{2}D^2 + y\frac{1}{2}\max(0,\, m - D)^2,</tex> | :<tex>\mathcal{L} = (1-y)\frac{1}{2}D^2 + y\frac{1}{2}\max(0,\, m - D)^2,</tex> | ||
| - | где <tex>D = \|f(s_1) - f(s_2)\|</tex>, <tex>y \in \{0,1\}</tex> — метка схожести, <tex>m</tex> — | + | где <tex>D = \|f(s_1) - f(s_2)\|_2</tex>, <tex>y \in \{0,1\}</tex> — метка схожести, <tex>m</tex> — margin. На практике широко используют Multiple Negatives Ranking Loss и аналоги InfoNCE. |
| - | + | SBERT сделал возможным быстрый семантический поиск: один проход энкодера на документ + ANN, вместо кросс-энкодера на каждую пару. | |
| - | + | == Контрастивное и мультимодальное обучение == | |
| - | + | ||
| - | == Поиск ближайших соседей == | + | === InfoNCE, SimCSE === |
| + | |||
| + | Контрастивное обучение притягивает аугментации одного объекта и отталкивает негативы. Типичный InfoNCE: | ||
| + | |||
| + | :<tex>\mathcal{L} = -\log \frac{\exp(\mathrm{sim}(z_i,z_i^+)/\tau)}{\sum_{j}\exp(\mathrm{sim}(z_i,z_j)/\tau)},</tex> | ||
| + | |||
| + | где <tex>\tau</tex> — температура. '''SimCSE''' получает позитивы dropout-аугментацией одного предложения — простой и сильный способ sentence embeddings без размеченных пар<ref name="gao2021">{{статья |автор=Gao T., Yao X., Chen D. |заглавие=SimCSE: Simple Contrastive Learning of Sentence Embeddings |издание=Empirical Methods in Natural Language Processing |год=2021 |ссылка=https://arxiv.org/abs/2104.08821}}</ref>. | ||
| + | |||
| + | === CLIP === | ||
| + | |||
| + | '''CLIP''' обучает совместное пространство текста и изображений контрастивной целью на парах (caption, image)<ref name="radford2021">{{статья |автор=Radford A. et al. |заглавие=Learning Transferable Visual Models From Natural Language Supervision |издание=International Conference on Machine Learning |год=2021 |ссылка=https://arxiv.org/abs/2103.00020}}</ref>. Это основа zero-shot классификации изображений и текстового поиска по картинкам; родственные идеи используются в conditioning [[Диффузионная модель|диффузионных моделей]] (текстовые энкодеры как guidance). | ||
| + | |||
| + | == Графовые эмбеддинги (кратко) == | ||
| + | |||
| + | '''DeepWalk''' / '''Node2Vec''' генерируют случайные блуждания по графу и обучают Skip-gram на последовательностях узлов — «слова» заменяются вершинами. Есть также GNN-подходы (GraphSAGE, GAT), где эмбеддинг узла агрегирует соседей. Применения: рекомендации, детекция сообществ, knowledge graphs. В LLM-экосистеме графовые эмбеддинги встречаются в entity linking и retrieval по knowledge base. | ||
| + | |||
| + | == Поиск ближайших соседей (ANN) == | ||
Для запроса <tex>q</tex> найти <tex>k</tex> ближайших векторов из базы <tex>\mathcal{D}</tex>: | Для запроса <tex>q</tex> найти <tex>k</tex> ближайших векторов из базы <tex>\mathcal{D}</tex>: | ||
| Строка 72: | Строка 102: | ||
:<tex>\mathrm{kNN}(q) = \arg\!\min_{S \subset \mathcal{D},\, |S|=k} \sum_{v \in S} \|q - v\|.</tex> | :<tex>\mathrm{kNN}(q) = \arg\!\min_{S \subset \mathcal{D},\, |S|=k} \sum_{v \in S} \|q - v\|.</tex> | ||
| - | Библиотеки: FAISS, ScaNN, Annoy. | + | Точный kNN на миллионах/миллиардах векторов недоступен по latency; используют приближённый поиск (ANN): |
| + | * '''HNSW''' (Hierarchical Navigable Small World) — многоуровневый граф близости, высокий recall при низкой latency<ref name="malkov2018">{{статья |автор=Malkov Y. A., Yashunin D. A. |заглавие=Efficient and robust approximate nearest neighbor search using Hierarchical Navigable Small World graphs |издание=IEEE Transactions on Pattern Analysis and Machine Intelligence |год=2020 |том=42 |номер=4 |страницы=824–836 |ссылка=https://arxiv.org/abs/1603.09320}}</ref>; | ||
| + | * '''IVF''' — кластеризация (Voronoi) + поиск в коротком списке ячеек; | ||
| + | * '''Product Quantization (PQ)''' — сжатие векторов для экономии памяти. | ||
| + | |||
| + | Библиотеки: FAISS, ScaNN, Annoy, hnswlib; векторные СУБД (pgvector, Milvus, Qdrant и др.). Метрики качества поиска: Recall@k, latency p95, память на вектор. Ловушка: смена модели эмбеддингов требует '''полной переиндексации''' — пространства несовместимы. | ||
| + | |||
| + | == Оценка качества эмбеддингов == | ||
| + | |||
| + | * '''внутренние''': Word Similarity (WordSim, SimLex), аналогии; для предложений — STS (Semantic Textual Similarity), корреляция с человеческими оценками; | ||
| + | * '''внешние / retrieval''': BEIR, MTEB — multi-task benchmark для embedding-моделей (retrieval, clustering, classification); | ||
| + | * '''downstream''': качество RAG (answer faithfulness), классификации с линейным зондом на замороженных эмбеддингах; | ||
| + | * калибровка: нормализация L2, размерность, доменная адаптация (fine-tune на своих парах query–doc). | ||
| + | |||
| + | Частая ошибка: оценивать только in-domain примеры и удивляться деградации на другом жаргоне или языке. | ||
== Применения == | == Применения == | ||
| - | + | * [[Обработка естественного языка|обработка естественного языка]] — перевод (как компоненты), анализ тональности, кластеризация текстов, дедупликация; | |
| - | * [[Обработка естественного языка| | + | * '''семантический поиск и RAG''' в связке с [[Промпт-инжиниринг|промпт-инжинирингом]] и [[Большая языковая модель|LLM]]; |
| - | * RAG | + | * рекомендательные системы (user/item embeddings); |
| - | * | + | * мультимодальный поиск и guidance для [[Диффузионная модель|диффузионных]] генераторов; |
| - | * [[Обучение с подкреплением из обратной связи человека (RLHF)|RLHF]] — reward model | + | * [[Обучение с подкреплением из обратной связи человека (RLHF)|RLHF]] / preference models — представления пар (запрос, ответ) внутри reward model; |
| + | * anomaly detection и метрическое обучение. | ||
| + | |||
| + | == Ограничения и ловушки == | ||
| + | |||
| + | * '''hubness''' в высоких размерностях: некоторые векторы становятся «ближайшими соседями» слишком часто; | ||
| + | * смешение доменов и языков без multilingual / domain-adapted моделей; | ||
| + | * утечка тестовых пар в обучение sentence-моделей завышает STS; | ||
| + | * использование эмбеддингов LLM «как есть» без contrastive fine-tune для retrieval; | ||
| + | * этические риски: эмбеддинги наследуют корпусные стереотипы (гендер, раса и т.д.). | ||
| + | |||
| + | == Практический пайплайн семантического поиска == | ||
| + | |||
| + | Типичный промышленный контур: | ||
| + | |||
| + | # выбрать или дообучить bi-энкодер (SBERT-класс / E5 / BGE и аналоги) под язык и домен; | ||
| + | # нарезать документы на чанки (баланс полноты и точности; overlap); | ||
| + | # сохранить векторы и метаданные; построить HNSW/IVF-индекс; | ||
| + | # на запросе — encode → ANN → (опционально) реранкинг кросс-энкодером → сборка контекста для [[Большая языковая модель|LLM]]. | ||
| + | |||
| + | Реранкинг дороже, но повышает precision@k; для низкой latency часто ограничивают кандидатов (например, top-100 → top-10). В [[Промпт-инжиниринг|промпт-инжиниринге]] RAG качество «ответа» нельзя диагностировать одним LLM-judge: отдельно смотрят retrieval и grounded generation. | ||
| + | |||
| + | Инженерные детали, которые ломают качество чаще теории: | ||
| + | * разные модели/версии эмбеддингов в одной базе без миграции; | ||
| + | * нормализация векторов включена при обучении, но забыта на инференсе (или наоборот); | ||
| + | * чанки режут посередине таблиц и списков; | ||
| + | * query и documents кодируются разными промпт-префиксами (у ряда моделей это обязательно). | ||
== См. также == | == См. также == | ||
| - | |||
* [[Большая языковая модель]] | * [[Большая языковая модель]] | ||
| + | * [[Трансформер (модель)]] | ||
* [[Механизм внимания]] | * [[Механизм внимания]] | ||
* [[Промпт-инжиниринг]] | * [[Промпт-инжиниринг]] | ||
* [[Обучение с подкреплением из обратной связи человека (RLHF)]] | * [[Обучение с подкреплением из обратной связи человека (RLHF)]] | ||
| + | * [[Диффузионная модель]] | ||
== Примечания == | == Примечания == | ||
| Строка 96: | Строка 167: | ||
== Литература == | == Литература == | ||
| - | * {{книга|автор=Goodfellow I., Bengio Y., Courville A.|заглавие=Deep Learning|издательство=MIT Press|год=2016}} | + | * {{книга |автор=Goodfellow I., Bengio Y., Courville A. |заглавие=Deep Learning |издательство=MIT Press |год=2016 |страницы=502–511}} |
| - | * {{статья|автор=Mikolov T. et al.|заглавие=Distributed Representations of Words and Phrases|издание= | + | * {{статья |автор=Mikolov T. et al. |заглавие=Distributed Representations of Words and Phrases and their Compositionality |издание=Advances in Neural Information Processing Systems |год=2013 |том=26 |ссылка=https://arxiv.org/abs/1310.4546}} |
| - | * {{статья|автор=Pennington J. | + | * {{статья |автор=Pennington J., Socher R., Manning C. D. |заглавие=GloVe: Global Vectors for Word Representation |издание=Empirical Methods in Natural Language Processing |год=2014 |страницы=1532–1543}} |
| - | * {{статья|автор=Devlin J. et al.|заглавие=BERT: Pre-training of Deep Bidirectional Transformers|издание=NAACL|год=2019}} | + | * {{статья |автор=Bojanowski P. et al. |заглавие=Enriching Word Vectors with Subword Information |издание=Transactions of the Association for Computational Linguistics |год=2017 |том=5 |страницы=135–146}} |
| - | * {{статья|автор=Reimers N., Gurevych I.|заглавие=Sentence-BERT|издание= | + | * {{статья |автор=Devlin J. et al. |заглавие=BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding |издание=NAACL |год=2019 |страницы=4171–4186 |ссылка=https://arxiv.org/abs/1810.04805}} |
| - | * {{статья|автор=Radford A. et al.|заглавие=Learning Transferable Visual Models From Natural Language Supervision (CLIP)|издание= | + | * {{статья |автор=Reimers N., Gurevych I. |заглавие=Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks |издание=Empirical Methods in Natural Language Processing |год=2019 |ссылка=https://arxiv.org/abs/1908.10084}} |
| + | * {{статья |автор=Gao T., Yao X., Chen D. |заглавие=SimCSE: Simple Contrastive Learning of Sentence Embeddings |издание=Empirical Methods in Natural Language Processing |год=2021 |ссылка=https://arxiv.org/abs/2104.08821}} | ||
| + | * {{статья |автор=Radford A. et al. |заглавие=Learning Transferable Visual Models From Natural Language Supervision (CLIP) |издание=International Conference on Machine Learning |год=2021 |ссылка=https://arxiv.org/abs/2103.00020}} | ||
| + | * {{статья |автор=Malkov Y. A., Yashunin D. A. |заглавие=Efficient and robust approximate nearest neighbor search using Hierarchical Navigable Small World graphs |издание=IEEE TPAMI |год=2020 |том=42 |номер=4 |страницы=824–836}} | ||
[[Категория:Машинное обучение]] | [[Категория:Машинное обучение]] | ||
[[Категория:Нейронные сети]] | [[Категория:Нейронные сети]] | ||
[[Категория:Обработка естественного языка]] | [[Категория:Обработка естественного языка]] | ||
Текущая версия
| | Статья написана с использованием LLM Claude Sonnet 4 и проверена участником Emil Petrov 20:15, 14 июля 2026 (MSD)
Промпт приводится полностью в Обсуждение:Нейросетевое встраивание |
Нейросетево́е вста́ивание (англ. neural network embedding, также векторное представление, эмбеддинг) — отображение объектов дискретного пространства (слов, токенов, предложений, документов, пользователей, узлов графа, изображений и т.д.) в непрерывное векторное пространство фиксированной размерности [1]. Эмбеддинги позволяют нейронным сетям оперировать символами так же, как числами, и кодировать семантические, синтаксические или структурные отношения геометрией пространства.
Аналогия: словарь языка — огромный шкаф с ящиками-словами. Эмбеддинг раскладывает ящики в комнате так, что «близкие по смыслу» оказываются рядом, а «далёкие» — далеко. Тогда поиск, классификация и аналогии превращаются в операции с расстояниями и углами, а не в хрупкие правила на строках.
В современных больших языковых моделях на архитектуре трансформера встраивания токенов — первый слой представления; механизм внимания далее смешивает их в контекстуальные состояния. Отдельные эмбеддинг-модели обслуживают семантический поиск и RAG в промпт-инжиниринге.
Основная идея
Качественный эмбеддинг отображает семантическую близость в геометрическую. Если — функция встраивания, то для семантически близких
и далёкого
ожидают:
Часто используют косинусную близость:
Размерность типично от 64–300 (классические word embeddings) до 384–4096 (современные sentence / LLM embeddings). Слишком малая
теряет различия; слишком большая удорожает хранение и ANN-поиск без гарантии лучшего качества.
Статические словесные эмбеддинги
Word2Vec
Модель Mikolov et al. (2013) обучает плотные векторы слов на задаче предсказания контекста[1]:
- CBOW — предсказать целевое слово по усреднённому контексту;
- Skip-gram — предсказать контекстные слова по целевому.
Функция потерь Skip-gram (в упрощённом виде):
где — длина корпуса,
— размер окна. На практике применяют negative sampling или hierarchical softmax.
Знаменитое свойство линейных аналогий (классический пример на английских токенах; по-русски: «король − мужчина + женщина ≈ королева»):
Ограничение: один вектор на словоформу/тип — многозначность («банка» как финансовое учреждение и как ёмкость) схлопывается в одну точку.
GloVe
GloVe (Global Vectors) явно использует статистику совместной встречаемости[1]. Целевая функция:
где — счётчик совместных появлений,
— весовая функция, снижающая влияние редких и сверхчастых пар. GloVe сочетает глобальную матричную факторизацию с локальным контекстным окном.
FastText
FastText расширяет Word2Vec: слово представляется суммой эмбеддингов символьных n-грамм[1]. Это даёт векторы для out-of-vocabulary и морфологически богатых языков (в том числе русского): невиданное слово всё же собирается из знакомых кусков.
Контекстуальные эмбеддинги
Статический вектор не зависит от предложения. Контекстуальный эмбеддинг — функция от всего контекста: одно и то же слово получает разные векторы в разных окружениях.
ELMo
ELMo строит представления двунаправленной LSTM и комбинирует скрытые состояния разных слоёв взвешенной суммой[1]. Нижние слои ближе к синтаксису, верхние — к семантике. ELMo стал мостом от Word2Vec к трансформерной эре.
BERT и трансформерные представления
Трансформерные энкодеры вроде BERT производят мощные контекстуальные состояния через многослойное само-внимание[1]. Для эмбеддинга предложения часто берут токен [CLS] или mean-pooling по токенам. Важно: «сырой» BERT без дообучения на семантическую близость — слабый sentence embedding: косинус плохо ранжирует парафразы (классический результат Sentence-BERT).
Decoder-only LLM также дают скрытые состояния, но для retrieval обычно обучают или адаптируют отдельные embedding-головы / bi-энкодеры.
Sentence-BERT (SBERT)
Sentence-BERT дообучает сиамские/триплетные сети на парах предложений, чтобы косинус в пространстве эмбеддингов отражал семантическую близость[1]. Классическая контрастивная (contrastive) потеря с отступом:
где ,
— метка схожести,
— margin. На практике широко используют Multiple Negatives Ranking Loss и аналоги InfoNCE.
SBERT сделал возможным быстрый семантический поиск: один проход энкодера на документ + ANN, вместо кросс-энкодера на каждую пару.
Контрастивное и мультимодальное обучение
InfoNCE, SimCSE
Контрастивное обучение притягивает аугментации одного объекта и отталкивает негативы. Типичный InfoNCE:
где — температура. SimCSE получает позитивы dropout-аугментацией одного предложения — простой и сильный способ sentence embeddings без размеченных пар[1].
CLIP
CLIP обучает совместное пространство текста и изображений контрастивной целью на парах (caption, image)[1]. Это основа zero-shot классификации изображений и текстового поиска по картинкам; родственные идеи используются в conditioning диффузионных моделей (текстовые энкодеры как guidance).
Графовые эмбеддинги (кратко)
DeepWalk / Node2Vec генерируют случайные блуждания по графу и обучают Skip-gram на последовательностях узлов — «слова» заменяются вершинами. Есть также GNN-подходы (GraphSAGE, GAT), где эмбеддинг узла агрегирует соседей. Применения: рекомендации, детекция сообществ, knowledge graphs. В LLM-экосистеме графовые эмбеддинги встречаются в entity linking и retrieval по knowledge base.
Поиск ближайших соседей (ANN)
Для запроса найти
ближайших векторов из базы
:
Точный kNN на миллионах/миллиардах векторов недоступен по latency; используют приближённый поиск (ANN):
- HNSW (Hierarchical Navigable Small World) — многоуровневый граф близости, высокий recall при низкой latency[1];
- IVF — кластеризация (Voronoi) + поиск в коротком списке ячеек;
- Product Quantization (PQ) — сжатие векторов для экономии памяти.
Библиотеки: FAISS, ScaNN, Annoy, hnswlib; векторные СУБД (pgvector, Milvus, Qdrant и др.). Метрики качества поиска: Recall@k, latency p95, память на вектор. Ловушка: смена модели эмбеддингов требует полной переиндексации — пространства несовместимы.
Оценка качества эмбеддингов
- внутренние: Word Similarity (WordSim, SimLex), аналогии; для предложений — STS (Semantic Textual Similarity), корреляция с человеческими оценками;
- внешние / retrieval: BEIR, MTEB — multi-task benchmark для embedding-моделей (retrieval, clustering, classification);
- downstream: качество RAG (answer faithfulness), классификации с линейным зондом на замороженных эмбеддингах;
- калибровка: нормализация L2, размерность, доменная адаптация (fine-tune на своих парах query–doc).
Частая ошибка: оценивать только in-domain примеры и удивляться деградации на другом жаргоне или языке.
Применения
- обработка естественного языка — перевод (как компоненты), анализ тональности, кластеризация текстов, дедупликация;
- семантический поиск и RAG в связке с промпт-инжинирингом и LLM;
- рекомендательные системы (user/item embeddings);
- мультимодальный поиск и guidance для диффузионных генераторов;
- RLHF / preference models — представления пар (запрос, ответ) внутри reward model;
- anomaly detection и метрическое обучение.
Ограничения и ловушки
- hubness в высоких размерностях: некоторые векторы становятся «ближайшими соседями» слишком часто;
- смешение доменов и языков без multilingual / domain-adapted моделей;
- утечка тестовых пар в обучение sentence-моделей завышает STS;
- использование эмбеддингов LLM «как есть» без contrastive fine-tune для retrieval;
- этические риски: эмбеддинги наследуют корпусные стереотипы (гендер, раса и т.д.).
Практический пайплайн семантического поиска
Типичный промышленный контур:
- выбрать или дообучить bi-энкодер (SBERT-класс / E5 / BGE и аналоги) под язык и домен;
- нарезать документы на чанки (баланс полноты и точности; overlap);
- сохранить векторы и метаданные; построить HNSW/IVF-индекс;
- на запросе — encode → ANN → (опционально) реранкинг кросс-энкодером → сборка контекста для LLM.
Реранкинг дороже, но повышает precision@k; для низкой latency часто ограничивают кандидатов (например, top-100 → top-10). В промпт-инжиниринге RAG качество «ответа» нельзя диагностировать одним LLM-judge: отдельно смотрят retrieval и grounded generation.
Инженерные детали, которые ломают качество чаще теории:
- разные модели/версии эмбеддингов в одной базе без миграции;
- нормализация векторов включена при обучении, но забыта на инференсе (или наоборот);
- чанки режут посередине таблиц и списков;
- query и documents кодируются разными промпт-префиксами (у ряда моделей это обязательно).
См. также
- Большая языковая модель
- Трансформер (модель)
- Механизм внимания
- Промпт-инжиниринг
- Обучение с подкреплением из обратной связи человека (RLHF)
- Диффузионная модель
Примечания
Литература
- Goodfellow I., Bengio Y., Courville A. Deep Learning. — MIT Press, 2016. — С. 502–511.
- Mikolov T. et al. Distributed Representations of Words and Phrases and their Compositionality // Advances in Neural Information Processing Systems. — 2013. — Т. 26.
- Pennington J., Socher R., Manning C. D. GloVe: Global Vectors for Word Representation // Empirical Methods in Natural Language Processing. — 2014. — С. 1532–1543.
- Bojanowski P. et al. Enriching Word Vectors with Subword Information // Transactions of the Association for Computational Linguistics. — 2017. — Т. 5. — С. 135–146.
- Devlin J. et al. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding // NAACL. — 2019. — С. 4171–4186.
- Reimers N., Gurevych I. Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks // Empirical Methods in Natural Language Processing. — 2019.
- Gao T., Yao X., Chen D. SimCSE: Simple Contrastive Learning of Sentence Embeddings // Empirical Methods in Natural Language Processing. — 2021.
- Radford A. et al. Learning Transferable Visual Models From Natural Language Supervision (CLIP) // International Conference on Machine Learning. — 2021.
- Malkov Y. A., Yashunin D. A. Efficient and robust approximate nearest neighbor search using Hierarchical Navigable Small World graphs // IEEE TPAMI. — 2020. — Т. 42. — № 4. — С. 824–836.

