Экспресс-курс · No. 32

Компьютеры сравнивают текст по точным символам; смысл за ним им невидим. Эмбеддинги это чинят — они превращают кусок текста в список чисел, точку в пространстве, размещённую так, что вещи, значащие схожее, сидят рядом. Вдруг «найди мне похожее на это» становится «найди ближайшие точки», задачей, что компьютер решает мгновенно. Это тихий движок за поиском, RAG, рекомендациями и многим другим.

Только суть · Один образ на идею · Смысл, ставший вычислимым

§ 01

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

Компьютеры видят символы, а не смысл

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

Для компьютера текст — это просто символы. Он может проверить, идентичны ли две строки, но у него нет врождённого чувства, что «машина» и «автомобиль» значат одно, или что «банк одобрил мой кредит» и «мою ипотеку приняли» об одном и том же событии. Совпадение точных слов упускает смысл целиком. Чтобы софт работал с тем, что текст значит, а не с тем, как он написан, нужен способ превратить смысл во что-то, что компьютер может измерить.

Эмбеддинг превращает текст в точку в пространстве

Карта, где у каждой идеи есть место, и идеи, что значат схожее, сидят рядом, — «собака» близко к «щенку», обе далеко от «налоговой декларации».

Эмбеддинг (embedding) — это список чисел, вектор (vector), что представляет смысл куска текста, помещённый в многомерное пространство так, что схожие смыслы оказываются рядом. Модель читает текст и производит его координаты. Теперь «собака» и «щенок» сидят рядом, и обе сидят далеко от «таблицы». Смысл, что был невидим компьютеру, стал позицией, — а позиции это то, что софт может сравнивать, сортировать и искать.

Как только у смысла есть координаты, с ним можно вычислять

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

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

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

§ 02

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

Близкие точки значат схожие вещи

На карте два города рядом — между ними легко проехать; два на противоположных побережьях — далеко. Близость на карте зеркалит близость в реальности.

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

Найти по сходству: ближайшие соседи

Библиотекарь, что, получив одну книгу, может мгновенно указать тебе полку книг, самых на неё похожих, — не по названию, а по тому, о чём они.

Ключевая операция — поиск ближайших соседей (nearest-neighbour search): по одной точке найти ближайшие к ней. «Покажи мне похожее на это» становится «найди ближайших соседей этого элемента в пространстве». Вручи системе вопрос, продукт, документ, и она вернёт самые семантически похожие, ранжированные по близости. Эта единственная операция — найти ближайшее — вот что движет семантический поиск, рекомендации и бо́льшую часть того, что идёт дальше. Всё это какая-то версия «найди близкие точки».

Направление важнее сырого расстояния

Две стрелки, указывающие в одну сторону, похожи, даже если одна длиннее, — важно направление, куда они указывают, а не их длина.

На практике сходство обычно меряют углом между векторами, а не расстоянием по прямой, — мера, называемая косинусным сходством (cosine similarity). Два эмбеддинга, указывающие в одну сторону, считаются похожими, даже если один «длиннее», потому что направление схватывает смысл, а длина часто просто отражает вещи вроде длины текста. Тебе не нужна математика, чтобы использовать эмбеддинги, но стоит знать, что стандартная мера «насколько похоже» — про направление в пространстве, а не сырое расстояние.

Схожие смыслы сидят рядом, так что сходство становится расстоянием. Ключевая операция — поиск ближайших соседей: найти ближайшие точки, обычно меряемый направлением, через косинусное сходство.

§ 03

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

Хранилище, построенное под поиск ближайших соседей

Склад, устроенный так, что по любому предмету он мгновенно принесёт тебе сотню самых похожих, — не сканируя каждую полку, а благодаря тому, как он устроен.

Векторная база данных (vector database) хранит твои эмбеддинги и отвечает на запросы «найди ближайшие точки к этой» быстро, даже по миллионам векторов. Она построена под ту одну операцию, что нужна эмбеддингам: поиск ближайших соседей по сходству. Ты эмбеддишь свои данные раз, хранишь векторы, и база становится искомым индексом смысла. Когда люди строят поиск, RAG или рекомендации на эмбеддингах, векторная база — это где векторы живут и где случается поиск.

Приближённый поиск делает масштаб быстрым

Чтобы найти ближайшее кафе, ты не меряешь расстояние до каждого кафе на Земле — ты сперва смотришь в своём районе. Умные срезы бьют проверку всего.

Сравнивать запрос с каждым хранимым вектором было бы слишком медленно в масштабе. Так что векторные базы используют приближённый поиск ближайших соседей (approximate nearest-neighbour, ANN): хитрое индексирование, что находит ближайшие точки, не проверяя их все, меняя крошечную долю точности на огромный выигрыш скорости. Поэтому векторный поиск по миллионам элементов возвращается за миллисекунды. Тебе редко нужны точные ближайшие соседи — «очень близко» так же хорошо, как «ближайшее», — и ANN вот что делает поиск по эмбеддингам практичным в реальном масштабе.

Эмбедди раз, ищи много раз

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

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

Векторная база хранит эмбеддинги и находит ближайших соседей быстро, используя приближённый (ANN) поиск, чтобы масштабироваться до миллионов. Эмбедди данные раз заранее; ищи их дёшево на каждом запросе.

§ 05

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

Кластеризация и дедупликация: группировка по смыслу

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

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

Рекомендации: больше того, что тебе понравилось

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

Рекомендации (recommendation) — это поиск ближайших соседей в маскировке: эмбедди элементы (продукты, статьи, песни) так, что похожие сидят рядом, и «порекомендуй больше похожего» становится «найди ближайшие элементы к тому, что пользователю понравилось». Та же машинерия, что находит документы, похожие на запрос, находит продукты, похожие на покупку. Каждый раз, как видишь «вам также может понравиться», есть хороший шанс, что эмбеддинги и поиск ближайших соседей тихо за этим.

Классификация и обнаружение аномалий

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

Эмбеддинги движут классификацию (classification) — новый элемент вероятно той же категории, что помеченные элементы, ближайшие к нему в пространстве, — и обнаружение аномалий (anomaly detection) — что-то, чей эмбеддинг сидит далеко от всего нормального, это выброс, что стоит пометить. Ловля мошенничества, не-по-теме контента или необычных входов — всё становится «найди то, что далеко от кластера». Повторяющийся паттерн через все эти применения один: преврати вещи в точки, потом рассуждай о близости и расстоянии. Освой это, и эмбеддинги становятся инструментом для куда большего, чем поиск.

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

§ 06

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

Модель эмбеддингов решает качество

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

Всё зависит от модели, что создаёт эмбеддинги. Хорошая модель эмбеддингов размещает смысл точно, так что похожие вещи правда сидят рядом; слабая или несовпадающая производит искажённое пространство, где расстояния вводят тебя в заблуждение. Выбор модели эмбеддингов — решение качества, а не деталь, — и модель, обученная на общем веб-тексте, может эмбеддить твой специализированный домен (юридический, медицинский, код) плохо, потому что не схватывает различия, что там важны. Выбирай модель нарочно и проверяй её на своих данных.

Похожее — не то же, что релевантное

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

Сходство эмбеддингов схватывает тематическую близость, что обычно хороший прокси релевантности, — но не всегда. Два текста могут быть близки по смыслу, пока только один на деле отвечает нужде. Поэтому сырой поиск по эмбеддингам — сильный первый проход, но не финальное слово: он находит то, что об нужном, что не совсем то же, что полезное. Знать, что «ближайшее» значит «самое похожее», а не «самое релевантное», не даёт переоценить топ-результат и указывает на доработки вроде переранжирования.

Мусор внутрь — мусорное пространство

Если ты подшиваешь документы под небрежные, непоследовательные метки, даже идеальный поиск по шкафу возвращает бардак, — индекс хорош ровно настолько, насколько то, что в него вошло.

Качество системы эмбеддингов ограничено качеством того, что ты эмбеддишь. Плохой чанкинг (из курса о RAG), шумный текст или эмбеддинг не того поля производят пространство, где даже идеальный поиск возвращает плохие результаты, — расстояния вычислены над мусором. Так что бо́льшая часть работы в системах эмбеддингов — не поиск, а подготовка чистого, хорошо структурированного, хорошо нарезанного текста для эмбеддинга в первую очередь. Чини входы, прежде чем винить поиск, потому что пространство наследует то, что ты в него кладёшь.

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

§ 07

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

Выбирай модель эмбеддингов под свои данные

Ты нанимаешь переводчика, что реально знает диалект, в котором работаешь, — универсал может упустить ровно те различия, что важнее всего для тебя.

Самый значимый выбор — модель эмбеддингов, и правильная зависит от твоих данных и задачи. Общая модель нормальна для общего текста; специализированный домен может нуждаться в модели, что его понимает, или дообученной на нём, чтобы размещать его смыслы точно. Учитывай язык, домен, размер вектора и стоимость. Не просто хватай дефолт — выбери модель, что строит точное пространство для твоего смысла, потому что каждое сравнение, что ты когда-либо сделаешь, едет на ней.

Меряй, отражает ли пространство реальный смысл

Ты тестируешь новую карту, проверяя, что места, что ты знаешь близкими, реально выходят близкими, — если нет, карта неверна.

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

Прежде чем строить на эмбеддингах
  • Про смысл ли задача — сходство, группировка, извлечение — что эмбеддинги реально подходят? - Правильна ли модель эмбеддингов для твоих данных, домена и языка? - Эмбеддятся ли запрос и документы одной моделью, в одно пространство? - Есть ли векторная база с приближённым поиском для твоего масштаба? - Чист ли текст, что ты эмбеддишь, и хорошо нарезан, а не шум? - Измерил ли ты, что пространство кладёт нужные вещи близко, на реальных случаях?
Слова, которыми ты теперь владеешь
  • embedding / вектор — кусок текста, превращённый в координаты, представляющие его смысл. - сходство / расстояние / косинусное сходство — близость смысла, измеренная как близость, обычно по направлению. - поиск ближайших соседей — найти ближайшие точки к данной; ключевая операция.
  • векторная база / приближённый (ANN) поиск — хранилище и быстрый, масштабируемый поисковый движок. - семантический поиск — находить по смыслу, не по ключевым словам; извлечение под RAG.
  • кластеризация / рекомендации / классификация / обнаружение аномалий — применения за пределами поиска. - модель эмбеддингов — что создаёт координаты и решает качество всего пространства.
Признаки, что ты используешь эмбеддинги хорошо
  • Ты тянешься к эмбеддингам, когда задача про смысл, а не точное совпадение. - Ты выбрал модель эмбеддингов под свои данные и эмбеддишь запрос и документы одинаково. - Ты используешь векторную базу с приближённым поиском в масштабе. - Ты эмбеддишь чистый, хорошо нарезанный текст и относишься к «похожему» как к сильному, но несовершенному прокси релевантного. - Ты измерил, что пространство отражает реальный смысл, вместо того чтобы это предположить.

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

Конец экспресс-курса · 7 глав · смысл, ставший вычислимым

Дальше — практика: возьми маленький набор своих текстов, эмбедди их и поищи — дай ему запрос своими словами и посмотри, те ли ближайшие результаты, что реально значат одно. Потом попробуй не-поисковое применение: кластеризуй их по смыслу или найди почти-дубликаты. Идея становится конкретной в тот миг, как поиск находит нужный документ, несмотря на то что он не делит ключевых слов с твоим запросом. Но держи одну мысль выше прочих: эмбеддинги превращают смысл в координаты, и как только у смысла есть координаты, «найди похожее» — это просто геометрия. Этот один перевод — движок за поиском, RAG, рекомендациями и куда большим.