Попробуйте сами: знания

⏱️ Примерное время: ~12 минут · 🎯 Урок 7 курса «Возможности и ограничения ИИ»

Проблема строк

Найдите по запросу «машина» — и вы получите все документы, в которых встречается слово «машина». Но вы не найдёте «автомобиль». Или «авто». Или «моему Civic пора менять тормоза».

На протяжении десятилетий поиск работал именно так: он возвращал результаты на основе совпадения строк, а не смысла. Google постоянно вносил улучшения с помощью инженерных приёмов: словари синонимов связывали «машину» с «автомобилем», правила выделения основы слова соединяли «бегущий» с «бежать», а анализ кликов выявлял, что люди, ищущие «квартиры в Нью-Йорке», хотят те же результаты, что и по запросу «аренда жилья на Манхэттене». Связи между несовпадающими строками приходилось выстраивать более или менее вручную.

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

Кодирование

Начнём с упрощённого примера.

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

Начнём всего с трёх источников. Разместите каждый из них там, где, по вашему мнению, ему место.

Источники

Вы только что разместили смысл в двумерном пространстве, расставив нашу коллекцию материалов по тому, о чём они.

Извлечение

Теперь давайте искать в этом пространстве.

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

❓ «Какие самые лучшие американские горки в стиле динозавров?»

нажмите на график, чтобы разместить

Вот и вся суть поиска по сходству. Мы наносим вопрос на график и находим k ближайших элементов. Вместо совпадения ключевых слов или таблиц синонимов мы используем близость в многомерном пространстве.

Две оси — это начало. Но два измерения способны охватить лишь два понятия. В реальном мире тем больше двух, поэтому нам нужно больше измерений.

Больше измерений

А что если добавить третью ось? Возьмём биологию.

Детская книга получает высокий балл (виды, среды обитания, рацион). Энциклопедия касается этой темы отчасти. Страница про Velocicoaster упоминает её едва-едва.

Перетаскивайте, чтобы вращать.

Три измерения, три координаты на каждый документ. Страница про Velocicoaster теперь имеет координаты (0.50, 0.90, 0.05) вместо (0.50, 0.90).

Теперь попробуйте представить четвёртую ось.

Поскольку я существую только в трёх измерениях, лично я этого сделать не могу 😔 — но это, на самом деле, не имеет значения! Каждое новое измерение просто добавляет ещё одну координату к каждой точке и ещё одно слагаемое в квадрате к формуле расстояния. Пространственное представление перестаёт работать на 4D, но математика продолжает работать.

Нам придётся уйти далеко за пределы 4D, потому что настоящие модели эмбеддингов используют около тысячи измерений. Каждый документ и каждый запрос становятся точкой в этом тысячемерном пространстве. «Найти ближайшие документы» по-прежнему означает то же самое, что и на двумерном графике. Просто расчёт расстояния становится длиннее.

Безымянные оси

Оси выбрали мы: динозавры, американские горки, биология. Но кто определяет, какие именно 1024 темы попадут в настоящую модель эмбеддингов?

На самом деле никто этого не решает. Смысл каждой оси проявляется сам собой (то есть он просто возникает в процессе обучения) и больше похож на чёрный ящик. Вы не можете посмотреть на измерение 847 и сказать: «Вот это ось динозавров». Измерения не соответствуют ничему, что человек мог бы назвать.

Из-за этого о пространстве труднее рассуждать. Мы не можем «допросить» измерение 847, чтобы понять, почему два текста оказались рядом или почему то, что мы ожидали увидеть близко, оказалось далеко.

Текст как координаты

Так кто же присваивает координаты? Модель эмбеддингов. На входе любая строка — на выходе список чисел фиксированной длины.

Выход всегда одной и той же длины (в нашем конкретном случае 1024 значения, поскольку мы используем модель эмбеддингов от VoyageAI), и это верно вне зависимости от того, состоит ли вход из трёх слов или трёх абзацев. Один фрагмент текста соответствует одной точке в пространстве. Модель эмбеддингов читает текст и выдаёт единственный вектор.

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

Сходство

«Ближайший» на нашем двумерном графике означал расстояние по прямой. На практике поиск по сходству вместо этого использует косинусное сходство. Косинусное сходство — это просто ещё одна мера того, насколько похожи два фрагмента текста, основанная на направлении, в котором указывают их векторы, а не на том, как далеко они расположены друг от друга.

Попробуйте сами! Выберите два источника, чтобы увидеть их косинусное сходство.

❓ Лучшие американские горки про динозавров?

🦕 Детская книга про динозавров

Попробуйте сравнить страницу про Velocicoaster с книгой про динозавров — их векторы указывают в очень разные стороны. Энциклопедия же оказывается где-то посередине между всем, и это логично, ведь она мастер на все руки, но ни в чём не специалист.


*Адаптировано с русским переводом. Оригинал: © 2025 Anthropic. All rights reserved.*